根据Android,您可以使用 ACTION_OPEN_AUDIO_EFFECT_CONTROL_SESSION 来接收正在播放的音频会话的 id:
意图向效果控制应用程序或服务发出新音频会话已打开并需要应用音频效果的信号。
我尝试在清单中添加常量(以及许多其他常量),但它仅适用于 Spotify 和 Youtube Music 等音乐应用:
<receiver android:name=".receivers.AudioSessionReceiver">
<intent-filter>
<action android:name="android.media.action.OPEN_AUDIO_EFFECT_CONTROL_SESSION"/>
</intent-filter>
</receiver>
然后,您可以使用该 id 创建一个附加到会话 id 的均衡器。
public class AudioSessionReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
int id = intent.getIntExtra(Equalizer.EXTRA_AUDIO_SESSION, -1);
String packageName = intent.getStringExtra(Equalizer.EXTRA_PACKAGE_NAME);
}
}
当我播放我自己的媒体文件(使用我自己的测试应用程序)时,即使我没有广播我的媒体播放器的会话 ID,仍有均衡器应用程序在它上面工作。所以必须有一个解决方案涉及不依赖广播接收器的服务。