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"/>
與
現在,我也嘗試過使用和不使用喚醒鎖做這些事情。
在鎖定狀態下可以更改設置嗎?
我錯過了什麼?我敢打賭,這只是我看起來很簡單的事情。
感謝, 凱利