Как узнать время срабатывания будильника в приложении Google DeskClock? - PullRequest
3 голосов
/ 28 декабря 2011

Возможен рут-доступ. В основном мне нужен способ чтения содержимого: //settings/system/alarm_alert из приложения и получения времени (или оставшегося времени) аварийных сигналов.

Я нашел старый проект android-alarm-database, но он работает только для старого приложения будильника.

1 Ответ

6 голосов
/ 10 января 2012

Приложение DeskClock (которое заменило старое приложение AlarmClock) устанавливает тревоги с помощью диспетчера тревог.К сожалению, невозможно прочитать существующие аварийные сигналы из диспетчера аварийных сигналов, если только вы не знаете PendingIntent, который их создал.DeskClock хранит эти PendingIntents, а также другую информацию о тревогах, во внутренней базе данных.Однако существует другой способ узнать время последнего установленного или удаленного сигнала тревоги:

DeskClock отправляет намерение широковещания под названием android.intent.action.ALARM_CHANGED, когда обновляет значок строки состояния (с дополнительным логическим значением alarmSet дляукажите вкл / выкл) и обновления Systems.Settings.NEXT_ALARM_FORMATTED, которые вы можете получить с помощью следующего широковещательного приемника:

private static final String tag = "TestReceiver"; 
@Override
public void onReceive(Context context, Intent intent) 
{
    Log.d(tag, "intent=" + intent);
    Boolean message = intent.getBooleanExtra("alarmSet",false);
    Log.d(tag, "alarmSet: " + message);
    Log.d(tag, "next alarm: " + Settings.System.getString(context.getContentResolver(),android.provider.Settings.System.NEXT_ALARM_FORMATTED));    
}

и со следующим фильтром намерений в вашем AndroidManifest.xml:

<receiver android:name=".TestReceiver">
    <intent-filter>
        <action android:name="android.intent.action.ALARM_CHANGED"></action>
    </intent-filter>
</receiver>
...