美文网首页
android MediaPlayer 封装

android MediaPlayer 封装

作者: 一个冬季 | 来源:发表于2022-11-19 12:45 被阅读0次

    参考博客

    Android音乐播放模式切换-外放、听筒、耳机

    已满足的需求

    1、回到桌面停止播放
    2、每次贴近耳朵,黑屏,从0开始播放,拿开继续从当前的时间点播放(仿微信听语音)
    3、监听耳机插入拔出,同时切换到贴耳,外放
    4、支持播放倍数

    github,喜欢点个start

    教程

    添加权限

        <uses-permission android:name="android.permission.WAKE_LOCK" />
        <!--播放语音需要的权限-->
        <uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS"/>
    

    添加依赖

    implementation 'com.github.CMzhizhe:AudioPlayManagerProject:v1.0.1'
    

    初始化

       AudioPlayManager.Builder().setApplication(this.application).build()
    

    播放音乐

     /**
         * @date 创建时间: 2022/11/18
         * @author gaoxiaoxiong
         * @description 打开assets文件夹下面的音乐
         * @param assetsName assets文件下的音乐文件
         * @param voiceId 用户自定义的语音ID
         * @param speed 播放倍数
         * @param playListener 播放结果回调
         */
        fun prepareAssetsAsync(assetsName: String,voiceId: String?,speed: Float = 1.0f,playListener:OnAudioPlayListener?) 
    
     /**
         * @param remoteUrl 服务器提供的地址
         * @param voiceId   用户自定义的ID
         * @param speed 播放倍数
         * @param playListener 播放结果监听
         * @date 创建时间: 2022/11/10
         * @author gaoxiaoxiong
         */
        fun prepareAsync(remoteUrl: String,voiceId: String?,speed: Float = 1.0f,playListener: OnAudioPlayListener?)
    
     /**
         * @param voiceId 用户自定义的ID
         * @param file    播放语音的文件
         * @param speed 播放倍数
         * @param playListener 播放结果监听
         * @date 创建时间: 2022/11/10
         * @author gaoxiaoxiong
         */
        fun prepareAsync(file: File,voiceId: String?,speed: Float = 1.0f,playListener: OnAudioPlayListener?)
    
      AudioPlayManager.getInstance().seekTo()//开始播放音乐 &&设置播放进度
        AudioPlayManager.getInstance().playSpeed//设置播放速度
        AudioPlayManager.getInstance().registerListenerProximity() //需要在activity onResume调用,目的注册感光监听
        AudioPlayManager.getInstance().unregisterListenerProximity()//需要在activity onPause调用,目的移除感光监听
        AudioPlayManager.getInstance().pause()//暂停音乐
        AudioPlayManager.getInstance().releaseAll()//停止播放,在onDestroy调用
    

    遇到的问题

     mSensorManager.unregisterListener(this)无效,你需要转换成 mSensorManager.unregisterListener(this,mSensorManager.getDefaultSensor(Sensor.TYPE_PROXIMITY)); 解除具体的哪个传感器
    

    总结

     mMediaPlayer.setAudioStreamType(STREAM_VOICE_CALL);//这样设置,比不设置的好处是,声音会大点
    

    相关文章

      网友评论

          本文标题:android MediaPlayer 封装

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