gpt4 book ai didi

android - Android按钮音板

转载 作者:行者123 更新时间:2023-12-03 02:12:52 24 4
gpt4 key购买 nike

我正在尝试制作音板应用程序,但是在处理声音文件时遇到了问题。更具体地说,我不知道如何获得它,因此当按下按钮时会播放相应的声音。

我已经尝试过使用这种方式
Play sound on button click android

我尝试为每个声音文件和按钮实现媒体播放器,但该应用程序在启动时崩溃。

我有10个按钮,其中10个对应的声音文件位于src / res / raw /中的原始文件中

关于如何使其工作的任何想法?

//this is a breaking bad soundboard app, so please excuse the language. Sorry if you      find it offensive
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

if (savedInstanceState == null) {
getSupportFragmentManager().beginTransaction()
.add(R.id.container, new PlaceholderFragment())
.commit();
}

whatup = (Button)this.findViewById(R.id.button);
haveatit = (Button)this.findViewById(R.id.button2);
hello = (Button)this.findViewById(R.id.button3);
whining = (Button)this.findViewById(R.id.button7);
money = (Button)this.findViewById(R.id.button4);
yeah= (Button)this.findViewById(R.id.button8);
miserable = (Button)this.findViewById(R.id.button5);
mother = (Button)this.findViewById(R.id.button9);
gatorade = (Button)this.findViewById(R.id.button6);
science = (Button)this.findViewById(R.id.button10);

whatup.setOnClickListener(this);
haveatit.setOnClickListener(this);
hello.setOnClickListener(this);
whining.setOnClickListener(this);
money.setOnClickListener(this);
yeah.setOnClickListener(this);
miserable.setOnClickListener(this);
mother.setOnClickListener(this);
gatorade.setOnClickListener(this);
science.setOnClickListener(this);

WhatUp = MediaPlayer.create(MainActivity.this, R.raw.whatupb);
HaveAtIt = MediaPlayer.create(MainActivity.this, R.raw.haveatit);
Hello = MediaPlayer.create(MainActivity.this, R.raw.hello);
Whining = MediaPlayer.create(MainActivity.this, R.raw.stopwhining);
Money = MediaPlayer.create(MainActivity.this, R.raw.wheresmymoney);
Yeah = MediaPlayer.create(MainActivity.this, R.raw.yeahb);
Miserable = MediaPlayer.create(MainActivity.this, R.raw.miserableb);
Mother = MediaPlayer.create(MainActivity.this, R.raw.motherofgod);
Gatorade = MediaPlayer.create(MainActivity.this, R.raw.gatorade);
Science = MediaPlayer.create(MainActivity.this, R.raw.yeahscience);

}

这用于在按下按钮时进行处理。显然还需要更多,但是我只是在测试1个按钮,当我尝试启动它时它崩溃了。
  @Override
public void onClick(View view) {
if(view==whatup)
{
WhatUp.start();
}
}

记录猫错误:
http://imgur.com/ZWYsLl7

最佳答案

我假设您的声音可能是sound_1sound_2sound_3等,并且您的按钮是button_1button_2等。
您应该创建一个循环来获取onCreate方法中的ID:

for (int i = 0; i < 10; i++) {
// get the id for buttons
int btnId = getResources().getIdentifier("button_"+i, "id", getPackageName());
// get the res for sounds
int rawId = getResources().getIdentifier("sound_"+i, "raw", getPackageName());
// set a click listener to all your buttons
button[i] = (Button) findViewById(id);
button[i].setOnClickListener(new OnClickListener() {
public void onClick(View view) {
// create the media player with the raw id
mp = MediaPlayer.create(MainActivity.this, rawId);
mp.setOnCompletionListener(new OnCompletionListener() {
@Override
public void onCompletion(MediaPlayer mp) {
// TODO Auto-generated method stub
// avoid NullPointerException see the links below
mp.release();
}
});
// play the sound
mp.start();
}
});
}

阅读主题引用: Using MediaPlayer。您还可以通过上下文 How to dynamically generate the raw resource identifier in android?获得identifer,这可能有助于您解释 release()方法: Play sound on button click - Null pointer exception并从 Using MediaPlayer中读取 Releasing the MediaPlayer部分。我不确定,但可以解决问题。
祝好运。

更新

将此检查 if(view==whatup)更改为 if(view.getId() == R.id.button)
onClick方法中,您需要使用 getId()方法检查与 View 有关的ID。

关于android - Android按钮音板,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22648960/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com