2011-08-02 114 views
2

有誰知道如何在安靜模式下的android事件創建警報警報?我想創建一個防盜報警器,所以當Android設備被盜,我可以做一個大聲警告..感謝..如何在android上以靜音模式創建警報警報?

我就是試試這個代碼,但它不是爲我工作:

公共無效onCreate(Bundle savedInstanceState){

super.onCreate(savedInstanceState); setContentView(R.layout.main);

Vibrator v = (Vibrator) getSystemService(Context.VIBRATOR_SERVICE); 
    v.vibrate(300); 

    Uri alert = RingtoneManager 
      .getDefaultUri(RingtoneManager.TYPE_NOTIFICATION); 
    MediaPlayer mMediaPlayer = new MediaPlayer(); 

    try { 
     mMediaPlayer.setDataSource(this, alert); 
    } catch (IllegalArgumentException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } catch (SecurityException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } catch (IllegalStateException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } catch (IOException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } 

    final AudioManager audioManager = (AudioManager) getSystemService(Context.AUDIO_SERVICE); 
    if (audioManager.getStreamVolume(AudioManager.STREAM_ALARM) != 0) { 
     mMediaPlayer.setAudioStreamType(AudioManager.STREAM_ALARM); 
     mMediaPlayer.setLooping(false); 
     //mMediaPlayer.prepare(); 
     mMediaPlayer.start(); 
    } 
} 

回答

3

我已經使用這個覆蓋手機音量設置:

int maxVolume = audioManager.getStreamMaxVolume(AudioManager.STREAM_ALARM); 

audioManager.setStreamVolume(AudioManager.STREAM_ALARM, maxVolume,AudioManager.FLAG_REMOVE_SOUND_AND_VIBRATE); 
+0

在Nexus 5 4.4.4 :( – amIT

+0

不工作如果你指的是邁克爾的原始問題的代碼不工作,那就是因爲「mMediaPlayer.prepare();」必須是未註釋的(至少在4.4.4,這是必需的 - 我自己試了一下),好奇的是沒有人指出這一點 –

+0

這很好 - 但我沒有想要擺弄用戶選擇讓手機靜音...我需要的只是一個通知來製造噪音,因爲這是一個需要傳遞的警報,如果我這樣使用lution,我的鬧鐘後靜音關閉... :( – Zordid