【问题标题】:Equalizing the audio of another app - how to?均衡另一个应用程序的音频 - 如何?
【发布时间】:2019-11-10 05:06:56
【问题描述】:

我需要为 Android 制作均衡器。 El 音频会话 ID 0 已弃用。 有没有办法获取当前的音频会话 ID? 我想从我的应用程序中均衡其他应用程序的声音。 在 Google play 中还有其他应用程序使用“兼容模式”。但我不知道他们是怎么做到的。例如,应用程序检测到 Spotify 正在播放,会话被选中并且可以均衡。 有谁知道怎么做? 谢谢。

示例应用:

https://play.google.com/store/apps/details?id=com.devdnua.equalizer.free

https://play.google.com/store/apps/details?id=devdnua.equalizerp.free

【问题讨论】:

    标签: java android


    【解决方案1】:

    根据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,仍有均衡器应用程序在它上面工作。所以必须有一个解决方案涉及不依赖广播接收器的服务。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-12-23
      • 2016-07-29
      • 2015-07-15
      • 2023-03-03
      相关资源
      最近更新 更多