Media Player 不播放第二次

我使用相同的按钮播放和暂停。它可以顺利处理播放和暂停。但是音乐文件结束后,它无法再次播放。当我按下它时重新启动应用程序。我使用 mp.reset(); mp.release();.在这种情况下对我没有帮助


Java代码:


final MediaPlayer mp1;


             mp1 = MediaPlayer.create(convertView.getContext().getApplicationContext(), convertView.getResources().getIdentifier(audiopath, "raw", convertView.getContext().getPackageName()));




            mHolder.play.setOnClickListener(new View.OnClickListener() {

                @Override

                public void onClick(View v) {




                    if (mp1.isPlaying()) {


                        mp1.pause();


                        mHolder.play.setImageResource(R.drawable.plays);



                    } else {



                        mp1.start();

                        mHolder.play.setImageResource(R.drawable.pause);

                        mp1.setOnCompletionListener(new OnCompletionListener() {

                            public void onCompletion(MediaPlayer mp) {


                                mp.reset();

                                mp.release();



                                mHolder.play.setImageResource(R.drawable.plays);




                            }





                        });





                    }





                }

            });

日志猫:


 java.lang.IllegalStateException

    at android.media.MediaPlayer.isPlaying(Native Method)

    at com.example.package.adapter.AdapterN$3.onClick(AdapterN.java:223)


素胚勾勒不出你
浏览 162回答 2
2回答

收到一只叮咚

问题当您调用release()aMediaPlayer时,它会释放之前分配的所有资源MediaPlayer.create(),因此不再可访问。这产生,com.example.package.adapter.AdapterN$3.onClick(AdapterN.java:223) 处的 android.media.MediaPlayer.isPlaying(本机方法)处的 java.lang.IllegalStateException解决方案你应该删除,mp.release()但是,您仍然可以使用release(),但在这种情况下,您必须再次MediaPlayer使用创建实例,mp1 = MediaPlayer.create(convertView.getContext().getApplicationContext(), convertView.getResources().getIdentifier(audiopath, "raw", convertView.getContext().getPackageName()));在适当的地方(即在访问任何开始、暂停、重置等之前)。建议始终MediaPlayer在onCreate().onDestroy()在Use 之间释放 MediaPlayer 实例。在创建和发布之间使用start/pause/resetAPI。

守候你守候我

可能是因为“mp.release()”:正如您在此处的文档中看到的那样,它声明在 release() 之后,该对象不再可用。所以,我在这里建议的是你可以删除“mp.release()”并将它放在你的活动的 onDestroy() 下。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java