亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Media Player 不播放第二次

Media Player 不播放第二次

素胚勾勒不出你 2022-11-30 14:35:24
我使用相同的按鈕播放和暫停。它可以順利處理播放和暫停。但是音樂文件結束后,它無法再次播放。當我按下它時重新啟動應用程序。我使用 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)
查看完整描述

2 回答

?
收到一只叮咚

TA貢獻1821條經驗 獲得超5個贊

http://img1.sycdn.imooc.com//6386f9c60001c5f206580805.jpg

問題

當您調用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()));

在適當的地方(即在訪問任何開始、暫停、重置等之前)。

建議

  1. 始終MediaPlayeronCreate().

  2. onDestroy()在Use 之間釋放 MediaPlayer 實例。

  3. 在創建和發布之間使用start/pause/resetAPI。


查看完整回答
反對 回復 2022-11-30
?
守候你守候我

TA貢獻1802條經驗 獲得超10個贊

可能是因為“mp.release()”:

正如您在此處的文檔中看到的那樣,它聲明在 release() 之后,該對象不再可用。

所以,我在這里建議的是你可以刪除“mp.release()”并將它放在你的活動的 onDestroy() 下。


查看完整回答
反對 回復 2022-11-30
  • 2 回答
  • 0 關注
  • 201 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號