Android使用MediaPlayer播放音頻(已解決IllegalStateException)

private void doPlayVoice(String voiceSrc) {  
        if (mp == null)  
        {  
            mp = new MediaPlayer().create(MainActivity.this, "dangerous".equalsIgnoreCase(voiceSrc) ? R.raw.dangerous : R.raw.safe);  
        }     
        if (mp.isPlaying())  
        {  
            mp.stop();  
            mp.release();  
            mp = null;    
            mp = new MediaPlayer().create(MainActivity.this, "dangerous".equalsIgnoreCase(voiceSrc) ? R.raw.dangerous : R.raw.safe);
        }  
        try  
        {  
            mp.setOnPreparedListener(new OnPreparedListener() {  
                @Override  
                public void onPrepared(MediaPlayer mp) {  
                    mp.start();  
                }  
            });  
            mp.prepareAsync();  
        } catch (IllegalArgumentException e)  
        {  
            e.printStackTrace();  
        } catch (SecurityException e)  
        {  
            e.printStackTrace();  
        } catch (IllegalStateException e)  
        {  
            e.printStackTrace();  
        } catch (Exception e)  
        {  
            e.printStackTrace();  
        }  
        mp.setOnCompletionListener(new OnCompletionListener() {  
            @Override  
            public void onCompletion(MediaPlayer mp)  
            {  
                /* 因?yàn)槲冶镜豭ava的mp對(duì)象是定義的全局變量,所以通過類名.this.mp的方式得到我的對(duì)象,而非操作onCompletion(MediaPlayer mp)參數(shù)傳給我的native對(duì)象,這樣一來,本地java對(duì)象就被銷毀了,native對(duì)象自然也被銷毀了 
                 */  
                MainActivity.this.mp.release();  
                MainActivity.this.mp = null;  
            }  
        });  
    }  


轉(zhuǎn)自: https://www.iteye.com/blog/lovelease-2105616

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 驗(yàn)證碼登錄和退出 package controller; import java.io.IOException; ...
    提筆執(zhí)江山閱讀 164評(píng)論 0 0
  • 3月19日jspmvc案例準(zhǔn)備 Cookie & Session (一)會(huì)話技術(shù)的概述 一、什么是會(huì)話 會(huì)...
    劉哲_1d91閱讀 143評(píng)論 0 0
  • 窗口管理 拖離浮動(dòng)選項(xiàng)卡井按 Ctrl 鍵并單擊可進(jìn)行多選 將浮動(dòng)窗口最大化雙擊標(biāo)題欄 重新停靠浮動(dòng)窗口按 Ctr...
    蒗貓家閱讀 126評(píng)論 0 1
  • 比起女性們,今天的運(yùn)動(dòng)對(duì)于男性來說是個(gè)非常好的運(yùn)動(dòng)。當(dāng)然如果女性們?yōu)榱擞幸粋€(gè)好看的背影,也是一項(xiàng)很好的運(yùn)動(dòng)選擇哦。...
    f69b661ee123閱讀 1,559評(píng)論 2 13
  • 我說敬往事一杯酒,再愛也不回頭。 我也終于不會(huì)期待,只要你一伸手我就會(huì)屁顛屁顛跟你走了。 今天下專業(yè)課我看見你...
    城市慷慨亮閱讀 335評(píng)論 0 4

友情鏈接更多精彩內(nèi)容