Android 华为手机音频设置播放倍速mMediaPlayer.getPlaybackParams().setSpeed(speed)无效果

前期项目中做音频播放过程中有设置播放倍速,正常的情况我们设置MediaPlayer参数就能实现,但是当在华为手机上设置时候第一次mMediaPlayer.getPlaybackParams().setSpeed(speed)不仅没效果而且还会导致音频播放暂停,调试发现getPlaybackParams().setSpeed方法返回undefined,貌似是native方法没有实现,但是实际在后面的切换倍速又能正常,主要是第一次有问题,纳尼,这是什么情况,根本无从下手的感觉,尝试各种方法也未能解决。

千思万想之后,解决思路:华为手机第一次切换音频倍速的时候记录当前的播放位置,重新初始化MediaPlayer,设置getPlaybackParams().setSpeed(speed),然后将播放位置切到上次播放的位置:

@Override
    public void setSpeed(float speed) {
        if (mMediaPlayer != null) {
            if (Build.VERSION.SDK_INT > Build.VERSION_CODES.M){//Android系统版本大于M才能设置倍速
                mCurrentSpeed=speed;
                mMediaPlayer.setPlaybackParams(mMediaPlayer.getPlaybackParams().setSpeed(speed));//第一次华为手机切换倍数是不成功的
                //华为机器特殊处理
                if(Build.BRAND.equals("HUAWEI")||Build.MANUFACTURER.equals("HUAWEI")) {
                    long position = mMediaPlayer.getCurrentPosition();//记录当前音频播放位置
                    mPlaybackCallback.onHuaWeiRestart();//重置MediaPlayer
                    //playHuaWei(currentSource);
                    handler.postDelayed(new Runnable() {
                        @Override
                        public void run() {
                            seekTo(position);//将播放位置设置到上次记录位置
                        }
                    },500);

                }
                if (mMediaPlayer.isPlaying()) {
                    mPlaybackState = PlaybackStateCompat.STATE_PLAYING;
                    if (mPlaybackCallback != null) {
                        mPlaybackCallback.onPlaybackStatusChanged(mPlaybackState);
                    }
                }

            }
        }
    }

更多文章请关注公众号:

 

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值