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)  
            {  
                /* 因为我本地java的mp对象是定义的全局变量,所以通过类名.this.mp的方式得到我的对象,而非操作onCompletion(MediaPlayer mp)参数传给我的native对象,这样一来,本地java对象就被销毁了,native对象自然也被销毁了 
                 */  
                MainActivity.this.mp.release();  
                MainActivity.this.mp = null;  
            }  
        });  
    }  


转自: https://www.iteye.com/blog/lovelease-2105616

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 验证码登录和退出 package controller; import java.io.IOException; ...
    提笔执江山阅读 132评论 0 0
  • 3月19日jspmvc案例准备 Cookie & Session (一)会话技术的概述 一、什么是会话 会...
    刘哲_1d91阅读 116评论 0 0
  • 窗口管理 拖离浮动选项卡井按 Ctrl 键并单击可进行多选 将浮动窗口最大化双击标题栏 重新停靠浮动窗口按 Ctr...
    蒗貓家阅读 115评论 0 1
  • 比起女性们,今天的运动对于男性来说是个非常好的运动。当然如果女性们为了有一个好看的背影,也是一项很好的运动选择哦。...
    f69b661ee123阅读 1,457评论 2 13
  • 我说敬往事一杯酒,再爱也不回头。 我也终于不会期待,只要你一伸手我就会屁颠屁颠跟你走了。 今天下专业课我看见你...
    城市慷慨亮阅读 282评论 0 4