欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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

程序员文章站 2022-06-18 20:17:59
...

前期项目中做音频播放过程中有设置播放倍速,正常的情况我们设置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)无效果

 

相关标签: android