Настройка вибрации в состоянии блокировки Android - PullRequest
1 голос
/ 28 июня 2011

Я получил интересную часть в своих исследованиях с Android. Я в процессе прохождения, я создал время PendingIntent, чтобы уйти. Прежде чем он уходит, я блокирую телефон. Когда это уходит. Я вижу, что он работает и пытается изменить настройку вибрации на моем телефоне. К сожалению, настройки не применяются.

код:

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. Чего мне не хватает, чтобы это произошло? Могу поспорить, это просто что-то такое простое, что я смотрю

Спасибо, Келли

1 Ответ

0 голосов
/ 30 июня 2011

В настоящее время это состояния телефона, которые я использую, чтобы это работало.Я думаю, что то, что заставляет это работать, является изменением состояния телефона.Надеюсь, это может помочь кому-то еще.

Кстати.Это действительно боль некоторые из описания в Google Docs для этого.Кто-нибудь знает лучшее место, где (я знаю, что это забавный вопрос, потому что они документы Google) описывает права пользователя телефона.После некоторого прочтения было отмечено, что измененное состояние телефона несколько изменилось с будущим поведением.В основном некоторые скрытые / недокументированные классы / интерфейсы могут использоваться как в 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"/>
...