Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/207.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 在手机静音时播放铃声并保持手机静音?_Android - Fatal编程技术网

Android 在手机静音时播放铃声并保持手机静音?

Android 在手机静音时播放铃声并保持手机静音?,android,Android,我正在构建一个闹钟应用程序,当手机静音时,我希望它播放闹钟,但保持手机模式为静音。我现在拥有的闹钟应用程序(defualt samsung/android stock one)可以让手机保持静音模式,但你仍然可以听到闹钟的声音 我尝试设置它,以便检查音频是否静音或振动,设置声音,然后重置音频 @Override public int onStartCommand(Intent intent, int flags, int startId) { //get audiomanager an

我正在构建一个闹钟应用程序,当手机静音时,我希望它播放闹钟,但保持手机模式为静音。我现在拥有的闹钟应用程序(defualt samsung/android stock one)可以让手机保持静音模式,但你仍然可以听到闹钟的声音

我尝试设置它,以便检查音频是否静音或振动,设置声音,然后重置音频

@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)和在静默模式下播放警报的