Java Android全球音频接收器和音频管理器
在我的应用程序中,我只想允许通过耳机(插孔插件)播放声音。 但我有一个音乐播放器、游戏机和视频播放器 有没有办法制作一个全局音频接收器来控制整个应用程序中的音频。仅允许通过插入式耳机播放声音 到目前为止,我一直在所有活动中使用此功能:Java Android全球音频接收器和音频管理器,java,android,performance,audio,broadcastreceiver,Java,Android,Performance,Audio,Broadcastreceiver,在我的应用程序中,我只想允许通过耳机(插孔插件)播放声音。 但我有一个音乐播放器、游戏机和视频播放器 有没有办法制作一个全局音频接收器来控制整个应用程序中的音频。仅允许通过插入式耳机播放声音 到目前为止,我一直在所有活动中使用此功能: //Receiver for Audio to Mute boolean savedStreamMuted = false; protected BroadcastReceiver audioReceiver = new Broadcast
//Receiver for Audio to Mute
boolean savedStreamMuted = false;
protected BroadcastReceiver audioReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
//AudioManager audio = (AudioManager) getSystemService(Context.AUDIO_SERVICE);
AudioManager audio = MyApp.getAudioManagerSingleton();
headsetIsPluggedIn = (intent.getExtras().getInt("state") == 1);
if (headsetIsPluggedIn) //plugged -->> UNMUTE
{
Log.e(TAG, "BroadcastReceiver - Unmute sound");
audioDoManualUNMUTE(audio);
}
else //unplugged ->> MUTE
{
Log.e(TAG, "BroadcastReceiver - Mute sound");
audioDoManualMUTE(audio);
}
}
};
private void audioDoManualMUTE(AudioManager audio){
Log.e(TAG, "manual-audio > audioDoManualMUTE()");
//audio.setStreamMute(AudioManager.STREAM_MUSIC, true);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M){
if (!audio.isStreamMute(AudioManager.STREAM_MUSIC)) {
savedStreamMuted = true;
audio.adjustStreamVolume(AudioManager.STREAM_MUSIC, AudioManager.ADJUST_MUTE, 0);
}
}
else {
audio.setStreamMute(AudioManager.STREAM_MUSIC, true);
}
// Inform user
Toast.makeText(HomeBaseActivity.this, LanguageMgm.getValue(LanguageKey.TEXT_HEADSET_NOTICE), Toast.LENGTH_SHORT).show();
}
private void audioDoManualUNMUTE(AudioManager audio){
Log.e(TAG, "manual-audio > audioDoManualUNMUTE()");
//audio.setStreamMute(AudioManager.STREAM_MUSIC, false);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M){
if (savedStreamMuted) {
audio.adjustStreamVolume(AudioManager.STREAM_MUSIC, AudioManager.ADJUST_UNMUTE, 0);
savedStreamMuted = false;
}
} else {
audio.setStreamMute(AudioManager.STREAM_MUSIC, false);
}
}
In My Application:
private static AudioManager am;
...
MyApp.am = (AudioManager) getSystemService(Context.AUDIO_SERVICE);
public static AudioManager getAudioManagerSingleton() {
return MyApp.am;
}
然后在欢迎活动中,我将所有设置为0:
//将所有默认卷设置为0
MyApp.getAudioManagerSingleton().setStreamVolume(AudioManager.STREAM_MUSIC, 0, AudioManager.FLAG_REMOVE_SOUND_AND_VIBRATE);
MyApp.getAudioManagerSingleton().setStreamVolume(AudioManager.STREAM_NOTIFICATION, 0, AudioManager.FLAG_REMOVE_SOUND_AND_VIBRATE);
MyApp.getAudioManagerSingleton().setStreamVolume(AudioManager.STREAM_ALARM, 0, AudioManager.FLAG_REMOVE_SOUND_AND_VIBRATE);
MyApp.getAudioManagerSingleton().setStreamVolume(AudioManager.STREAM_RING, 0, AudioManager.FLAG_REMOVE_SOUND_AND_VIBRATE);
MyApp.getAudioManagerSingleton().setStreamVolume(AudioManager.STREAM_SYSTEM, 0, AudioManager.FLAG_REMOVE_SOUND_AND_VIBRATE);
MyApp.getAudioManagerSingleton().setStreamVolume(AudioManager.STREAM_DTMF, 0, AudioManager.FLAG_REMOVE_SOUND_AND_VIBRATE);