美文网首页
mediaplay踩坑

mediaplay踩坑

作者: Birdd | 来源:发表于2020-03-27 15:37 被阅读0次

刚刚公司代码里发现个问题,记录一下,碰到的小伙伴参考一下

坑一:

    public static void playSoundByMedia(int rawId,MediaPlayer.OnCompletionListener beepListener) {
        try {
            MediaPlayer mediaPlayer= null;
            if(mediaPlayer==null){
                mediaPlayer = new MediaPlayer();
            }
            mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
            mediaPlayer.setOnCompletionListener(beepListener);
            try {
                AssetFileDescriptor file = Utils.getApp().getResources().openRawResourceFd(
                        rawId);
                mediaPlayer.setDataSource(file.getFileDescriptor(),
                        file.getStartOffset(), file.getLength());
                file.close();
                mediaPlayer.setVolume(0.50f, 0.50f);
                mediaPlayer.prepare();
                mediaPlayer.start();
            } catch (IOException e) {
                LogUtils.e("tag","tts:IO:"+e.toString());
                mediaPlayer = null;
            }
        } catch (Exception e) {
            LogUtils.e("tag","tts:"+e.toString());
            e.printStackTrace();
        }

    }

第一次播放正常,后边就会出现断断续续的
试了很多方法都不正常,后来发现,mediaplay不可以在放在方法里,这样,GC会提前回收,导致播放中断,正确处理办法是把它放到activity.

坑二:

  SoundUtils.setMediaPlayer(speakText,mediaPlayer, new MediaPlayer.OnCompletionListener() {
                            @Override
                            public void onCompletion(MediaPlayer mp) {
                                mediaPlayer.release();
                                mediaPlayer=null;
                            }
                        });

在播放完毕之后需要释放mediaplay,但注意,这里我们要释放的是java代码中的mediaplay,上面onCompletion返回的mp,这个其实是native里的mediaplay,虽然他们是一起工作的,但并不是一个东西,这时候释放了mp,并没有真正释放activity的mediaplay.所以要专门释放一下activity的mediaplay

相关文章

  • mediaplay踩坑

    刚刚公司代码里发现个问题,记录一下,碰到的小伙伴参考一下 坑一: 第一次播放正常,后边就会出现断断续续的试了很多方...

  • JavaScrip-StepPitGuide《JavaScrip

    《JavaScript踩坑指南》JavaScrip-StepPitGuide? 《JavaScript踩坑指南》 ...

  • 算法踩坑6-二叉搜索树排序

    背景 接上面五篇文章算法踩坑-快速排序 算法踩坑2-插入排序 算法踩坑3-堆排序 算法踩坑4-冒泡排序 ...

  • 算法踩坑5-归并排序

    背景 接上面四篇文章算法踩坑-快速排序 算法踩坑2-插入排序 算法踩坑3-堆排序 算法踩坑4-冒泡排序 来...

  • D1094:踩坑的价值最大化

    是人就会踩坑,不踩坑理论上就不属于人类,踩坑是人之常情,能回头站在坑边反思,才是对踩过的的坑价值最大化的体现,要不...

  • 交互设计师所要避免的几个坑

    前言 工作中难免会踩到几个坑,即使现在不踩以后还会踩,只有踩过才会深刻记住,踩过说明爱过!但是踩过的坑必须把坑填满...

  • 踩坑,使用cocoaPods import导入时没有提示的解决办

    续上篇写的,踩坑,cocoaPods ---- framework not found Pods之后 ,又踩坑了。...

  • 2020-10-19随笔 踩坑0传值

    踩坑:当值传入0时,if条件判断时候会自己转换,记录踩坑。

  • 随笔

    读书啊,就是一个坑踩完了又掉进另一个坑,先说踩读书没用的坑,爬出来了,再踩读书要多的坑,之后再踩读书要精啊,读书要...

  • PHP中的数据类型

    一说到数据类型,这个坑就太多了,多到有哪些坑,有多少坑,不知道自己还会踩哪些坑,以及踩过的坑还会不会再踩,我对...

网友评论

      本文标题:mediaplay踩坑

      本文链接:https://www.haomeiwen.com/subject/ksgluhtx.html