2016-02-12 90 views
3

我正在构建一个闹钟应用程序,当手机静音时,我想让它播放闹钟,但保持静音状态。我现在拥有的闹钟应用程序(默认情况下是三星/安卓系统的一款)可让手机保持静音模式,但您仍然可以听到闹钟。当手机静音并保持手机静音时播放铃声?

我试着设置它,所以我检查音频是否静音或振动,设​​置声音,然后重置音频。

@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; 
} 

我已经得到了地方的电话知道什么时候它是无声或振动模式的一个点,但它不玩铃声,只是无论是振动或不会发出噪音。我该怎么做才能播放铃声,不管怎么样,但保持音频状态的方式?

回答

1

寻找一些其他的问题,这个问题后如此Troubles play sound in silent mode on Android

解决了这个问题对我来说。

我不得不使用

RingtoneManager.getRingtone()。setStreamType(AudioManager.STREAM_ALARM),并且在静音模式下播放的报警。

相关问题