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);
                    }
                }

            }
        }
    }

更多文章请关注公众号:

Android 华为手机音频设置播放倍速mMediaPlayer.getPlaybackParams().setSpeed(speed)无效果_第1张图片

 

你可能感兴趣的:(android,android)