0
现在,我尝试构建一个钢琴应用程序。这个概念是发挥声音,我必须触摸一个按钮。现在,我有7个按钮,每个按钮播放一个声音文件。这是代码。音频[MediaPlayer]不适用于我的钢琴应用程序
package com.andikurnia.piano;
import android.app.Activity;
import android.media.MediaPlayer;
import android.os.Bundle;
import android.view.MotionEvent;
import android.view.View;
import android.widget.ImageView;
public class IsaronActivity extends Activity {
/** Called when the activity is first created. */
ImageView button1;
ImageView button2;
ImageView button3;
ImageView button4;
ImageView button5;
ImageView button6;
ImageView button7;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
final MediaPlayer sound_6 = MediaPlayer.create(this, R.raw.saron_6);
final MediaPlayer sound1 = MediaPlayer.create(this, R.raw.saron1);
final MediaPlayer sound2 = MediaPlayer.create(this, R.raw.saron2);
final MediaPlayer sound3 = MediaPlayer.create(this, R.raw.saron3);
final MediaPlayer sound5 = MediaPlayer.create(this, R.raw.saron5);
final MediaPlayer sound6 = MediaPlayer.create(this, R.raw.saron6);
final MediaPlayer sound11 = MediaPlayer.create(this, R.raw.saron11);
button1 = (ImageView) findViewById(R.id.one);
button1.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent touchEvent) {
// TODO Auto-generated method stub
if(sound_6.isPlaying()){
sound_6.stop();
sound_6.seekTo(0);
}else{
sound6.start();
}
return true;
}
});
button2 = (ImageView) findViewById(R.id.two);
button2.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View two, MotionEvent touchEvent) {
// TODO Auto-generated method stub
if(sound1.isPlaying()){
sound1.stop();
sound1.seekTo(0);
}else{
sound1.start();
}
return true;
}
});
button3 = (ImageView) findViewById(R.id.three);
button3.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View three, MotionEvent touchEvent) {
// TODO Auto-generated method stub
if(sound2.isPlaying()){
sound2.stop();
sound2.seekTo(0);
}else{
sound2.start();
}
return true;
}
});
button4 = (ImageView) findViewById(R.id.four);
button4.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View four, MotionEvent touchEvent) {
// TODO Auto-generated method stub
if(sound3.isPlaying()){
sound3.stop();
sound3.seekTo(0);
}else{
sound3.start();
}
return true;
}
});
button5 = (ImageView) findViewById(R.id.five);
button5.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View five, MotionEvent touchEvent) {
// TODO Auto-generated method stub
if(sound5.isPlaying()){
sound5.stop();
sound5.seekTo(0);
}else{
sound5.start();
}
return true;
}
});
button6 = (ImageView) findViewById(R.id.six);
button6.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View six, MotionEvent touchEvent) {
// TODO Auto-generated method stub
if(sound6.isPlaying()){
sound6.stop();
sound6.seekTo(0);
}else{
sound6.start();
}
return true;
}
});
button7 = (ImageView) findViewById(R.id.seven);
button7.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View seven, MotionEvent touchEvent) {
// TODO Auto-generated method stub
if(sound11.isPlaying()){
sound11.stop();
sound11.seekTo(0);
}else{
sound11.start();
}
return true;
}
});
}
}
问题是当我触摸一个按钮(例如button1)的音频文件调用和正常播放。但是,当我移动手指触摸其他按钮时,该按钮上的声音只播放一半,当我回到按钮之前,它不能再播放声音。任何人都可以帮助分析我的代码..? :(
因此,不建议在程序中创建一个以上的MediaPlayer ...?如果是这样,我必须创建一个数组来实现我的按钮。好吧,我来试试。 – andikurnia
都能跟得上多不支持MediaPlayer的实例 – bluefalcon
呵呵,我明白了,那么我刚开始开发一个android程序,谢谢你的帮助:) 我也是博主,来到我的位置(http://blog.andikurnia.com) – andikurnia