你需要使用以下代码:intent.putExtra(AudioEffect.EXTRA_AUDIO_SESSION, mp.getAudioSessionId());
,然后你需要一个MediaPlayer变量,你需要在同一个intent中添加显示均衡器的intent、audioSession和getPackageName:effects.putExtra(AudioEffect.EXTRA_PACKAGE_NAME, this.getPackageName());
,同时还需要Intent intent = new Intent(AudioEffect.ACTION_DISPLAY_AUDIO_EFFECT_CONTROL_PANEL);
,其中包含audiosession和package name。首先显示intent,然后是audiosession和getpackagename。
然后在服务中,只有当多个歌曲正在播放时才需要以下代码,否则均衡器不会始终工作。
public void openAudioFx() {
Intent i = new Intent(AudioEffect.ACTION_OPEN_AUDIO_EFFECT_CONTROL_SESSION);
i.putExtra(AudioEffect.EXTRA_PACKAGE_NAME, getPackageName);
i.putExtra(AudioEffect.EXTRA_AUDIO_SESSION, audioSession);
this.sendBroadcast(i);
}
public void closeAudioFx() {
Intent k = new Intent(AudioEffect.ACTION_CLOSE_AUDIO_EFFECT_CONTROL_SESSION);
k.putExtra(AudioEffect.EXTRA_PACKAGE_NAME, getPackageName);
k.putExtra(AudioEffect.EXTRA_AUDIO_SESSION, audioSession);
this.sendBroadcast(k);
}
那么你需要接收广播,为了让它一直工作,你需要创建一个整型变量audioSession = 0;
还有一个获取包名的字符串getPackageName = getPackageName();
然后你需要广播包名和音频会话,然后使用这些变量,而不是代码。均衡器显示意图、包名和音效是意图显示均衡器所必需的,只能在Activity中使用。
我认为你可以尝试使用广播接收器类。
public final BroadcastReceiver hello;
{
hello = new BroadcastReceiver() {
private static final String TAG = "mMessageReceiver";
@Override
public void onReceive(Context context, Intent intent) {
if (intent != null) {
String action = intent.getAction();
switch (action) {
case AudioEffect.ACTION_OPEN_AUDIO_EFFECT_CONTROL_SESSION:
break;
case AudioEffect.ACTION_CLOSE_AUDIO_EFFECT_CONTROL_SESSION:
break;
case AudioEffect.EXTRA_AUDIO_SESSION:
audioSession = intent.getIntExtra(AudioEffect.EXTRA_AUDIO_SESSION, 0);
break;
case AudioEffect.EXTRA_PACKAGE_NAME:
break;
接下来,您需要从服务中广播包名称,并在活动中找到它。使用一个变量,该变量是必须比其他变量更高级的字符串,将其用于广播包名称,然后将变量用于广播。然后将此放入 onCreate 中:
public final BroadcastReceiver hello;
{
hello = new BroadcastReceiver() {
private static final String TAG = "mMessageReceiver";
@Override
public void onReceive(Context context, Intent intent) {
if (intent != null) {
String action = intent.getAction();
switch (action) {
case AudioEffect.ACTION_OPEN_AUDIO_EFFECT_CONTROL_SESSION:
break;
case AudioEffect.ACTION_CLOSE_AUDIO_EFFECT_CONTROL_SESSION:
break;
case AudioEffect.EXTRA_AUDIO_SESSION:
audioSession = intent.getIntExtra(AudioEffect.EXTRA_AUDIO_SESSION, 0);
break;
case AudioEffect.EXTRA_PACKAGE_NAME:
break;
}
LocalBroadcastManager.getInstance(this).registerReceiver(hello, new IntentFilter("ACTION_OPEN_AUDIO_EFFECT_CONTROL_SESSION"));
LocalBroadcastManager.getInstance(this).registerReceiver(hello, new IntentFilter("ACTION_CLOSE_AUDIO_EFFECT_CONTROL_SESSION"));
LocalBroadcastManager.getInstance(this).registerReceiver(hello, new IntentFilter("EXTRA_PACKAGE_NAME"));
LocalBroadcastManager.getInstance(this).registerReceiver(hello, new IntentFilter("EXTRA_AUDIO_SESSION"));
完成了。希望它能正常工作,如果有任何遗漏,请告诉我,我会尽快回复。抱歉,部分代码格式不正确,请先阅读并将所有代码放在一起,然后如果您能看到编写的内容,请将其与代码分开。