我使用相同的按鈕播放和暫停。它可以順利處理播放和暫停。但是音樂(lè)文件結(jié)束后,它無(wú)法再次播放。當(dāng)我按下它時(shí)重新啟動(dòng)應(yīng)用程序。我使用 mp.reset(); mp.release();.在這種情況下對(duì)我沒(méi)有幫助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)
2 回答

收到一只叮咚
TA貢獻(xiàn)1821條經(jīng)驗(yàn) 獲得超5個(gè)贊
問(wèn)題
當(dāng)您調(diào)用release()
aMediaPlayer
時(shí),它會(huì)釋放之前分配的所有資源MediaPlayer.create()
,因此不再可訪問(wèn)。這產(chǎn)生,
com.example.package.adapter.AdapterN$3.onClick(AdapterN.java:223) 處的 android.media.MediaPlayer.isPlaying(本機(jī)方法)處的 java.lang.IllegalStateException
解決方案
你應(yīng)該刪除,
mp.release()
但是,您仍然可以使用release()
,但在這種情況下,您必須再次MediaPlayer
使用創(chuàng)建實(shí)例,
mp1 = MediaPlayer.create(convertView.getContext().getApplicationContext(), convertView.getResources().getIdentifier(audiopath, "raw", convertView.getContext().getPackageName()));
在適當(dāng)?shù)牡胤剑丛谠L問(wèn)任何開(kāi)始、暫停、重置等之前)。
建議
始終
MediaPlayer
在onCreate()
.onDestroy()
在Use 之間釋放 MediaPlayer 實(shí)例。在創(chuàng)建和發(fā)布之間使用
start/pause/reset
API。
添加回答
舉報(bào)
0/150
提交
取消