2016-07-28 95 views
3

我正在使用以下代碼在應用程序中打開均衡器。如何在應用程序中使用本地均衡器

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"/> 

用戶更改均衡器設置後如何在當前播放的音頻file.We應用均衡器設置使用Exoplayer播放的音樂文件。

在此先感謝。

回答

-1

請看看這個問題(關閉):

https://github.com/google/ExoPlayer/issues/252

有關於ExoPlayer使用均衡器一個有趣的例子。 我還沒有嘗試過,但它似乎是一個有趣的起點將標準均衡器集成到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;

0

你要提供你的包名和當前媒體播放器的音頻會話ID開始前,作爲額外的活動。在調用startActivityForResult之前添加下面的代碼。

intent.putExtra(AudioEffect.EXTRA_PACKAGE_NAME, getPackageName()); 
intent.putExtra(AudioEffect.EXTRA_AUDIO_SESSION, player.getAudioSessionId()); 

其中player是MediaPlayer的一個實例。

相關問題