如何获取设备中当前音乐的audioSessionId

问题描述

我正在制作一个均衡器应用程序,我们可以在活动中应用音频效果。我尝试了下面提到的代码,当我播放和暂停歌曲时效果很好。但我想将音频效果全局应用于正在播放的任何歌曲。我搜索了很多,但没有找到任何解决方案。请帮帮我

public class SessionReceiver extends broadcastReceiver {
private static final String TAG = SessionReceiver.class.getSimpleName();
public SmsbroadcastReceiverListener smsbroadcastReceiverListener;

public void onReceive(Context context,Intent intent) {
    int sessionID = intent.getIntExtra(AudioEffect.EXTRA_AUdio_SESSION,AudioEffect.ERROR);
    if (Objects.equals(intent.getAction(),"android.media.action.OPEN_AUdio_EFFECT_CONTROL_SESSION")) {
        Bundle extras = intent.getExtras();
        assert extras != null;
        if (smsbroadcastReceiverListener != null) {
            smsbroadcastReceiverListener.onSuccess(intent);
        }
    }
    if (Objects.equals(intent.getAction(),"android.media.action.CLOSE_AUdio_EFFECT_CONTROL_SESSION")) {
        Bundle extras = intent.getExtras();
        assert extras != null;
        if (smsbroadcastReceiverListener != null) {
            smsbroadcastReceiverListener.onSuccess(intent);
        }
    }
    if (Objects.equals(intent.getAction(),"android.media.action.disPLAY_AUdio_EFFECT_CONTROL_PANEL")) {
        Bundle extras = intent.getExtras();
        assert extras != null;
        if (smsbroadcastReceiverListener != null) {
            smsbroadcastReceiverListener.onSuccess(intent);
        }
    }if (Objects.equals(intent.getAction(),"EXTRA_AUdio_SESSION")) {
        Bundle extras = intent.getExtras();
        assert extras != null;
        if (smsbroadcastReceiverListener != null) {
            smsbroadcastReceiverListener.onSuccess(intent);
        }
    }

}

public interface SmsbroadcastReceiverListener {
    void onSuccess(Intent intent);
}

}

MainActive 代码

 private void registerbroadcastReceiver() {
    sessionReceiver = new SessionReceiver();
    sessionReceiver.smsbroadcastReceiverListener = new SessionReceiver.SmsbroadcastReceiverListener() {
        @Override
        public void onSuccess(Intent intent) {
            if (intent.getAction().equals("android.media.action.OPEN_AUdio_EFFECT_CONTROL_SESSION")) {
                int intExtra = intent.getIntExtra("android.media.extra.AUdio_SESSION",0);
                Log.e(TAG,"Session Id_2***" + intExtra);
                startEqualiser(intExtra);
            }
            if (intent.getAction().equals("android.media.action.CLOSE_AUdio_EFFECT_CONTROL_SESSION")) {
                int intExtra = intent.getIntExtra("android.media.extra.AUdio_SESSION","Session Id_2***" + intExtra);
                startEqualiser(intExtra);
            }
            if (intent.getAction().equals("android.media.action.disPLAY_AUdio_EFFECT_CONTROL_PANEL")) {
                int intExtra = intent.getIntExtra("android.media.extra.AUdio_SESSION","Session Id_2***" + intExtra);
                startEqualiser(intExtra);
            }
        }
    };
    IntentFilter filter = new IntentFilter("android.media.action.OPEN_AUdio_EFFECT_CONTROL_SESSION");
    IntentFilter filter1 = new IntentFilter("android.media.action.CLOSE_AUdio_EFFECT_CONTROL_SESSION");
    IntentFilter filter3 = new IntentFilter("EXTRA_AUdio_SESSION");

    registerReceiver(sessionReceiver,filter);
    registerReceiver(sessionReceiver,filter1);
    registerReceiver(sessionReceiver,filter3);
}

 @Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    loadEqualizerSettings();
    mediaPlayer = new MediaPlayer();
    mediaPlayer.setAudioAttributes(new AudioAttributes.Builder().setContentType(AudioAttributes.CONTENT_TYPE_MUSIC)
            .build());
    int sessionId = mediaPlayer.getAudioSessionId();
    startEqualiser(sessionId);

}
<receiver
        android:name=".SessionReceiver"
        android:enabled="true"
        android:exported="true">
        <intent-filter>
            <action android:name="android.media.action.OPEN_AUdio_EFFECT_CONTROL_SESSION" />
            <action android:name="android.media.action.CLOSE_AUdio_EFFECT_CONTROL_SESSION" />
            <action android:name="android.media.action.disPLAY_AUdio_EFFECT_CONTROL_PANEL" />
            <action android:name="EXTRA_AUdio_SESSION" />
        </intent-filter>

    </receiver>

请帮我解决“我想全局申请,我需要全局audioSessionId”

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)