音乐键问题

Music button problems

我在使用按钮时遇到了问题。我有 31 个不同的 mp3 文件。我添加了 31 个按钮。当我按下第 29 个按钮时,30 和 31 在我的 phone 中不起作用。模拟器工作正常。我还有一个问题,当我进入 mainactivity 然后再次加入我的 mp3 页面时,有时所有按钮都不起作用。

public class voice extends AppCompatActivity {

Button bt;

 @Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_voice);

        bt = (Button) findViewById(R.id.button);
        final MediaPlayer mp = MediaPlayer.create(this, R.raw.voice1);
        bt.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                mp.start();
            }
        });


        bt = (Button) findViewById(R.id.button2);
        final MediaPlayer mp2 = MediaPlayer.create(this, R.raw.voice2);
        bt.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                mp2.start();
            }
        });

        bt = (Button) findViewById(R.id.button3);
        final MediaPlayer mp3 = MediaPlayer.create(this, R.raw.voice3);
        bt.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                mp3.start();
            }
        });

        bt = (Button) findViewById(R.id.button4);
        final MediaPlayer mp4 = MediaPlayer.create(this, R.raw.voice4);
        bt.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                mp4.start();
            }
        });

        bt = (Button) findViewById(R.id.button5);
        final MediaPlayer mp5 = MediaPlayer.create(this, R.raw.voice5);
        bt.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                mp5.start();
            }
        });

        bt = (Button) findViewById(R.id.button6);
        final MediaPlayer mp6 = MediaPlayer.create(this, R.raw.voice6);
        bt.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                mp6.start();
            }
        });

        bt = (Button) findViewById(R.id.button7);
        final MediaPlayer mp7 = MediaPlayer.create(this, R.raw.voice7);
        bt.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                mp7.start();
            }
        });

        bt = (Button) findViewById(R.id.button8);
        final MediaPlayer mp8 = MediaPlayer.create(this, R.raw.voice8);
        bt.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                mp8.start();
            }
        });

        bt = (Button) findViewById(R.id.button9);
        final MediaPlayer mp9 = MediaPlayer.create(this, R.raw.voice9);
        bt.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                mp9.start();
            }
        });

        bt = (Button) findViewById(R.id.button10);
        final MediaPlayer mp10 = MediaPlayer.create(this, R.raw.voice10);
        bt.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                mp10.start();
            }
        });

        bt = (Button) findViewById(R.id.button11);
        final MediaPlayer mp11 = MediaPlayer.create(this, R.raw.voice11);
        bt.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                mp11.start();
            }
        });

        bt = (Button) findViewById(R.id.button12);
        final MediaPlayer mp12 = MediaPlayer.create(this, R.raw.voice12);
        bt.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                mp12.start();
            }
        });

        bt = (Button) findViewById(R.id.button13);
        final MediaPlayer mp13 = MediaPlayer.create(this, R.raw.voice13);
        bt.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                mp13.start();
            }
        });

        bt = (Button) findViewById(R.id.button14);
        final MediaPlayer mp14 = MediaPlayer.create(this, R.raw.voice14);
        bt.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                mp14.start();
            }
        });

        bt = (Button) findViewById(R.id.button15);
        final MediaPlayer mp15 = MediaPlayer.create(this, R.raw.voice15);
        bt.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                mp15.start();
            }
        });

        bt = (Button) findViewById(R.id.button16);
        final MediaPlayer mp16 = MediaPlayer.create(this, R.raw.voice16);
        bt.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                mp16.start();
            }
        });

        bt = (Button) findViewById(R.id.button17);
        final MediaPlayer mp17 = MediaPlayer.create(this, R.raw.voice17);
        bt.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                mp17.start();
            }
        });

        bt = (Button) findViewById(R.id.button18);
        final MediaPlayer mp18 = MediaPlayer.create(this, R.raw.voice18);
        bt.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                mp18.start();
            }
        });

        bt = (Button) findViewById(R.id.button19);
        final MediaPlayer mp19 = MediaPlayer.create(this, R.raw.voice19);
        bt.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                mp19.start();
            }
        });
        bt = (Button) findViewById(R.id.button20);
        final MediaPlayer mp20 = MediaPlayer.create(this, R.raw.voice20);
        bt.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                mp20.start();
            }
        });

        bt = (Button) findViewById(R.id.button21);
        final MediaPlayer mp21 = MediaPlayer.create(this, R.raw.voice21);
        bt.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                mp21.start();
            }
        });

        bt = (Button) findViewById(R.id.button22);
        final MediaPlayer mp22 = MediaPlayer.create(this, R.raw.voice22);
        bt.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                mp22.start();
            }
        });

        bt = (Button) findViewById(R.id.button23);
        final MediaPlayer mp23 = MediaPlayer.create(this, R.raw.voice23);
        bt.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                mp23.start();
            }
        });

        bt = (Button) findViewById(R.id.button24);
        final MediaPlayer mp24 = MediaPlayer.create(this, R.raw.voice24);
        bt.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                mp24.start();
            }
        });

        bt = (Button) findViewById(R.id.button25);
        final MediaPlayer mp25 = MediaPlayer.create(this, R.raw.voice25);
        bt.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                mp25.start();
            }
        });

        bt = (Button) findViewById(R.id.button26);
        final MediaPlayer mp26 = MediaPlayer.create(this, R.raw.voice26);
        bt.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                mp26.start();
            }
        });

        bt = (Button) findViewById(R.id.button27);
        final MediaPlayer mp27 = MediaPlayer.create(this, R.raw.voice27);
        bt.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                mp27.start();
            }
        });

        bt = (Button) findViewById(R.id.button28);
        final MediaPlayer mp28 = MediaPlayer.create(this, R.raw.voice28);
        bt.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                mp28.start();
            }
        });

        bt = (Button) findViewById(R.id.button29);
        final MediaPlayer mp29 = MediaPlayer.create(this, R.raw.voice29);
        bt.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                mp29.start();
            }
        });

        bt = (Button) findViewById(R.id.button30);
        final MediaPlayer mp30 = MediaPlayer.create(this, R.raw.voice30);
        bt.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                mp30.start();
            }
        });

        bt = (Button) findViewById(R.id.button31);
        final MediaPlayer mp31 = MediaPlayer.create(this, R.raw.voice31);
        bt.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                mp31.start();
            }
        });


    }



}
}

你可以查看Media Player docs

想法是,您不需要创建播放器。只使用一个媒体播放器,但在使用下一个之前释放以前的数据:

 if (mplayer !=null) {
     mplayer.stop();
     mplayer.release();
     mplayer = null;
 }
 mplayer = new  MediaPlayer();
 mplayer.setDataSource(getApplicationContext(),
                  Uri.parse(CONSTANTS.RES_PREFIX + R.raw.id));
 mplayer.prepare();
 mplayer.start();

您的代码:

public class voice extends AppCompatActivity {

Button bt;
MediaPlayer mplayer;

 @Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_voice);

        bt = (Button) findViewById(R.id.button);
        bt.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
             String path = "android.resource://" + getPackageName() + "/" + R.raw.voice1;
             startNewVoice(path);
            }
        });
   }
void startNewVoice(String pathToFile) {
   if (mplayer !=null) {
       mplayer.stop();
       mplayer.release();
       mplayer = null;
   }
   mplayer = new  MediaPlayer();
   try{
       mplayer.setDataSource(this, Uri.parse(pathToFile));
    } catch (IOException e) {
        e.printStackTrace();
    }
   mplayer.prepare();
   mplayer.start();
}

}

看看onClick。您需要为每个按钮创建路径并将其发送到 startNewVoice 方法。如果它适合您,请不要忘记批准