微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决如何获取设备中当前音乐的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 举报,一经查实,本站将立刻删除。