问题描述
我正在制作一个均衡器应用程序,我们可以在活动中应用音频效果。我尝试了下面提到的代码,当我播放和暂停歌曲时效果很好。但我想将音频效果全局应用于正在播放的任何歌曲。我搜索了很多,但没有找到任何解决方案。请帮帮我
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 (将#修改为@)