我正在尝试构建一个读取音乐文件的应用程序,然后使用按钮播放/暂停音乐,因此我使用了下面的代码,而我遇到的问题是,一旦单击按钮,音乐就会播放,然后我单击它已停止,因此当我第三次单击时音乐不播放(仅播放一次)

 btn1=(Button)findViewById(R.id.btn) ;
 try {
            mp.setDataSource(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS) +String.valueOf("/myfile.3gp"));
        } catch (IOException e) {
            e.printStackTrace();
        }

 btn1.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                try{

                  if(!mp.isPlaying()){
                      mp.prepare();
                      mp.start();
                      btn1.setText("pause");

                  }else{
                      mp.pause();
                      btn1.setText("play");

                    }

                }catch(Exception e){e.printStackTrace();}
            }
        });

最佳答案

我认为您只需要调用mp.prepare();一次,因为它应该在您第一次按“播放”后就已经创建。您可以使用onPrepared方法。
也许此链接可能会有所帮助:this

09-11 18:43