AudioFocusRequest.Builder() 需要 API 级别 26,但我想在 API 级别 22 上使用它,有什么方法可以在低于 API 26 的 API 级别上使用它吗?

问题描述

我正在开发一个媒体播放器应用程序,我希望它支持的最小 API 级别是 API 22。

我想使用 Audio Focus 进行媒体播放,但是 AudioFocusRequest.Builder() 在低于 API 26 的 API 级别上不起作用,并且曾经在低于 API 26 的 API 级别上工作的方法 requestAudioFocus() 是现在已弃用,那么我如何在应用中使用 Audio Focus 以使其适用于低于 API 26 的 API 级别以及更高的 API 级别?

audioFocusRequest = new AudioFocusRequest.Builder(AudioManager.AUdioFOCUS_GAIN)
                                .setonAudioFocuschangelistener(audioFocuschangelistener)
                                .setFocusGain(AudioManager.AUdioFOCUS_GAIN)
                                .build();

这段代码不适用于低于 26 的 API 级别并给出此错误消息,

调用需要 API 级别 26(当前最小值为 22):新的 android.media.AudioFocusRequest.Builder”

解决方法

Check the API level at runtime 选择使用 requestAudioFocus() 还是 AudioFocusRequest.Builder

if (Build.VERSION.SDK_INT >= 26) {
  // Use AudioFocusRequest.Builder
} else {
  // Use requestAudioFocus
}

这应该会使您收到的错误和 IDE 中的弃用消息都清除。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...