1

我在Android上學習過一個有趣的部分。當我經歷時,我創建了一個定時的PendingIntent。在它關閉之前,我鎖定了手機。當它熄滅。我看到它運行,並嘗試更改我的手機上的振動設置。不幸的是,它不適用於該設置。在鎖定狀態下設置振動Android

代碼:

PowerManager pm = (PowerManager) context.getSystemService(Context.POWER_SERVICE); 
PowerManager.WakeLock wakeLock = pm.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK | PowerManager.ACQUIRE_CAUSES_WAKEUP, "VibrateTag"); 
wakeLock.acquire(); 

AudioManager audio = (AudioManager) context.getSystemService(Context.AUDIO_SERVICE); 

int ringerMode = audio.getRingerMode(); 
if(ringerMode != AudioManager.RINGER_MODE_NORMAL && item.getVibrate() && item.getVolume() != 0) 
{ 
    audio.setRingerMode(AudioManager.RINGER_MODE_NORMAL); 
} 

final String INFO = "INFO"; 

int vibrateSetting = AudioManager.VIBRATE_SETTING_OFF; 
if (item.getVolume() != 0) 
{ 
    if (item.getVibrate()) vibrateSetting = AudioManager.VIBRATE_SETTING_ON; 
} 
else 
{ 
    if (item.getVibrate()) vibrateSetting = AudioManager.VIBRATE_SETTING_ONLY_SILENT; 
} 

Log.e(INFO,"AReceiver attempting to update vibrate to " + vibrateSetting); 

audio.setVibrateSetting(AudioManager.VIBRATE_TYPE_RINGER, vibrateSetting); 

Log.e(INFO,"AReceiver updated vibrate to " + audio.getVibrateSetting(AudioManager.VIBRATE_TYPE_RINGER)); 

wakeLock.release(); 

日誌被鎖定時:

06-27 18:31:00.184: ERROR/INFO(3031): AReceiver attempting to update vibrate to 1 
06-27 18:31:00.184: ERROR/INFO(3031): AReceiver updated vibrate to 0 

就像我說的,當解鎖,並在使用時,該日誌會讀出的變化是成功的地方將它的值改爲1

現在,如果我的手機已解鎖,而且我這樣做,它就可以工作。廣播工作(在BootUp上啓動)。

我甚至試圖鎖定權限與使用方法:記

<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS"/> 

<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/> 

<uses-permission android:name="android.permission.VIBRATE"/> 

<uses-permission android:name="android.permission.WAKE_LOCK"/> 

<uses-permission android:name="android.permission.WRITE_SETTINGS"/> 

現在,我也嘗試過使用和不使用喚醒鎖做這些事情。

  1. 在鎖定狀態下可以更改設置嗎?

  2. 我錯過了什麼?我敢打賭,這只是我看起來很簡單的事情。

感謝, 凱利

回答

0

目前這些手機的狀態,我用這個工作。我認爲使它工作的事情是修改手機狀態。希望這可以幫助別人。

順便說一句。這真的很痛苦在谷歌文檔中的一些描述。有誰知道更好的地方(我知道這是一個有趣的問題,因爲他們是谷歌的文檔)描述了手機的用戶權限。

另一件事。經過一番閱讀,已經注意到修改手機狀態已經改變了一些未來的行爲。基本上,一些隱藏/未記錄的類/接口可以像2.2中那樣使用。

<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS"/> 

<uses-permission android:name="android.permission.MODIFY_PHONE_STATE"/> 

<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/> 

<uses-permission android:name="android.permission.VIBRATE"/> 

<uses-permission android:name="android.permission.WAKE_LOCK"/> 

<uses-permission android:name="android.permission.WRITE_SETTINGS"/>