Создание программы тревоги - не работает

Я пытаюсь сделать программу тревоги. До сих пор я написал упражнение, в котором пользователь может выбрать время, когда он желает, чтобы сработала сигнализация. Это работает нормально. Теперь мне нужно использовать диспетчер аварийных сигналов, чтобы сообщить ОС, чтобы она вызывала часть моего кода в определенный момент в будущем. Просто для грубого тестирования я добавил следующий код, который выполняется, когда я нажимаю кнопку тестирования в моей основной деятельности:

Intent intent = new Intent(getApplicationContext(), to_call_when_alarm_goes_off.class);
PendingIntent pIntent = PendingIntent.getBroadcast(getApplicationContext(),0, intent, 0);
AlarmManager alarms = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
alarms.cancel(pIntent);

alarms.setRepeating(
        AlarmManager.RTC_WAKEUP,
        System.currentTimeMillis()+1000, 
        AlarmManager.INTERVAL_DAY, 
        pIntent);

Это должно означать, что некоторый код, называемый to_call_when_alarm_goes_off, будет выполнен через одну секунду после того, как я нажму кнопку .... Теперь это то, где я немного запутался. Я не совсем уверен, как / где настроить "to_call_when_alarm_goes_off". Я просто добавил новый класс в свой проект следующим образом:

package com.mycompany.alarmprogram;

import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.util.Log;

public class to_call_when_alarm_goes_off extends BroadcastReceiver
{

    @Override
    public void onReceive(Context arg0, Intent arg1) 
    {
        // TODO Auto-generated method stub
        Log.i("ALARM","TIME TO WAKE UP!!!");

    }

}

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

 FoamyGuy06 июл. 2012 г., 18:45
опубликовать свой манифест

Ответы на вопрос(2)

Решение Вопроса

что вам не хватает регистрации вашего получателя в файле манифеста, с соответствующей строкой действия. как указано ниже.

         <receiver android:name=".to_call_when_alarm_goes_off" > 
               <intent-filter>
                  <action android:name="com.android.whatever.WHAT_EVER_NAM_YOU_WANNA_GIVE" />
                </intent-filter>// can change name/action string as par ur requirement.
        </receiver>

вам нужно установить ту же строку действия в вашем намерении, помните, что строка действия должна быть одинаковой в Manifest и здесьintent.setAction("com.android.whatever.WHAT_EVER_NAM_YOU_WANNA_GIVE"); в Яве также. только тогда он получит триггер.

Ваш код может быть изменен, как указано ниже.

Intent intent = new Intent(getApplicationContext(), to_call_when_alarm_goes_off.class);
intent.setAction("com.android.whatever.WHAT_EVER_NAM_YOU_WANNA_GIVE");// added line

PendingIntent pIntent = PendingIntent.getBroadcast(getApplicationContext(),0, intent, 0);

AlarmManager alarms = (AlarmManager) getSystemService(Context.ALARM_SERVICE);

alarms.cancel(pIntent);


alarms.setRepeating(
        AlarmManager.RTC_WAKEUP,
        System.currentTimeMillis()+1000, 
        AlarmManager.INTERVAL_DAY, 
        pIntent);

to_call_when_alarm_goes_off класс вAndroidManifest.xml как получатель:

<receiver android:name=".to_call_when_alarm_goes_off"></receiver>

Смотрите подробности вAPI документы.

Ваш ответ на вопрос