首页 > 解决方案 > Android 相当于 setAudioAttributes() for MediaPlayer on API 低于 21

问题描述

我正在AudioAttribute为我MediaPlayer这样设置:

 mMediaPlayer.setAudioAttributes((AudioAttributes) new AudioAttributesCompat.Builder()
                    .setUsage(AudioAttributesCompat.USAGE_NOTIFICATION_RINGTONE).build().unwrap());

但显然:

调用需要 API 级别 21(当前最低为 19):android.media.MediaPlayer#setAudioAttributes

那么,在 API 21 下应该如何设置AudioAttribute呢?MediaPlayer我设置这个属性主要是为了表明我对声音的使用,也就是铃声,在 API 21 下仍然需要这个属性吗?

标签: androidandroid-mediaplayer

解决方案


我想你想要setAudioStreamType(int)的,有AudioManager.STREAM_NOTIFICATION类型。

但是,您应该考虑使用 AndroidX 的MediaPlayer2而不是原生的 MediaPlayer。setAudioAttributes()包括在内,您无需投射和打开包装即可使用它。

要实现它:

implementation 'androidx.media2:media2:1.0.0-alpha03'

推荐阅读