Android 在手机静音时播放铃声并保持手机静音?
我正在构建一个闹钟应用程序,当手机静音时,我希望它播放闹钟,但保持手机模式为静音。我现在拥有的闹钟应用程序(defualt samsung/android stock one)可以让手机保持静音模式,但你仍然可以听到闹钟的声音 我尝试设置它,以便检查音频是否静音或振动,设置声音,然后重置音频Android 在手机静音时播放铃声并保持手机静音?,android,Android,我正在构建一个闹钟应用程序,当手机静音时,我希望它播放闹钟,但保持手机模式为静音。我现在拥有的闹钟应用程序(defualt samsung/android stock one)可以让手机保持静音模式,但你仍然可以听到闹钟的声音 我尝试设置它,以便检查音频是否静音或振动,设置声音,然后重置音频 @Override public int onStartCommand(Intent intent, int flags, int startId) { //get audiomanager an
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
//get audiomanager and set the volume
AudioManager audioManager = (AudioManager) getSystemService(Context.AUDIO_SERVICE);
int oldVolume = 0;
int maxVolume = 0;
boolean silent = false;
SoundMode soundMode = null;
if (audioManager.getRingerMode() == AudioManager.RINGER_MODE_SILENT
|| audioManager.getRingerMode() == AudioManager.RINGER_MODE_VIBRATE) {
if (audioManager.getRingerMode() == AudioManager.RINGER_MODE_SILENT) {
soundMode = soundMode.SILENT;
} else if (audioManager.getRingerMode() == AudioManager.RINGER_MODE_VIBRATE) {
soundMode = soundMode.VIBRATE;
}
oldVolume = audioManager.getStreamVolume(AudioManager.STREAM_ALARM);
maxVolume = audioManager.getStreamMaxVolume(AudioManager.STREAM_ALARM);
maxVolume = maxVolume/2;
audioManager.setStreamVolume(AudioManager.STREAM_ALARM, maxVolume, AudioManager.FLAG_ALLOW_RINGER_MODES);
silent = true;
Log.i(TAG, "silent if statement " + soundMode);
}
// audioManager.setStreamVolume(AudioManager.STREAM_ALARM, maxVolume / 2, AudioManager.FLAG_REMOVE_SOUND_AND_VIBRATE);
Uri alarmTone = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_ALARM);
ringtoneAlarm = RingtoneManager.getRingtone(getApplicationContext(), alarmTone);
ringtoneAlarm.play();
if (silent) {
if (soundMode == SoundMode.SILENT) {
Log.i(TAG, "silent mode");
audioManager.setRingerMode(AudioManager.RINGER_MODE_SILENT);
} else if (soundMode == SoundMode.VIBRATE) {
Log.i(TAG, "vibrate mote");
audioManager.setRingerMode(AudioManager.RINGER_MODE_VIBRATE);
}
}
return START_NOT_STICKY;
}
我已经到了一个地步,手机知道什么时候是静音或振动模式,但它不播放铃声,它只是振动或不发出噪音。我该如何使它无论发生什么都能播放铃声,但保持音频状态不变?因此,在寻找其他问题后,请回答这个问题 帮我解决了 我不得不使用 RingtoneManager.getRingtone().setStreamType(AudioManager.STREAM_ALARM)和在静默模式下播放警报的