如何在应用程序

时间:2016-07-28 12:40:32

标签: android android-audiomanager audio-player equalizer android-music-player

我使用以下代码在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播放音乐文件。

先谢谢。

2 个答案:

答案 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;