我使用以下代码在App中打开均衡器。
Intent intent = new Intent( );
intent.setAction("android.media.action.DISPLAY_AUDIO_EFFECT_CONTROL_PANEL");
if (intent.resolveActivity( getActivity().getPackageManager()) != null )
{
startActivityForResult( intent , 100 );
}
else
{
JBUtils.getInstance().showCustomToast( getActivity() , R.string.equalizer_notfound);
}
并添加了权限
<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS"/>
用户更改均衡器设置后,如何在当前播放的音频文件中应用均衡器设置。我们正在使用Exoplayer播放音乐文件。
先谢谢。
答案 0 :(得分:0)
在开始活动之前,您必须提供您的包名称和当前Media Player音频会话ID。在调用startActivityForResult之前添加以下代码。
intent.putExtra(AudioEffect.EXTRA_PACKAGE_NAME, getPackageName());
intent.putExtra(AudioEffect.EXTRA_AUDIO_SESSION, player.getAudioSessionId());
其中播放器是MediaPlayer的一个实例。
答案 1 :(得分:-1)
请看这个问题(已结束):
https://github.com/google/ExoPlayer/issues/252
在ExoPlayer中使用Equalizer是一个有趣的例子。 我还没有尝试过,但在ExoPlayer中集成标准均衡器似乎是一个有趣的起点。
让我知道它是否有效!
这是我开始的例子:
audioRenderer = new MediaCodecAudioTrackRenderer(......){
private Equalizer equalizer;
@Override
public void onAudioSessionId ( int audioSessionId){
releaseEqualizer();
equalizer = new Equalizer(...,audioSessionId);
// Configure equalizer here.
equalizer.setEnabled(true);
}
@Override
public void onDisabled () {
releaseEqualizer();
}
private void releaseEqualizer () {
if (equalizer != null) {
equalizer.release();
equalizer = null;
}
}
};
此外,均衡器似乎存在一些问题。您可以尝试在AudioTrack中启用变通方法(默认情况下禁用),将以下标志设置为true:
public static boolean enablePreV21AudioSessionWorkaround = false;