2013-01-26 5 views
0

Я следую приведенному коду HERE о настройке диспетчера аварийных сообщений, но я не могу заставить его работать вообще.Настройка диспетчера аварийных сигналов

Этот код находится в классе под названием "Alarm":

package com.sjjgames.abortionapp; 
    import android.app.AlarmManager; 
    import android.app.PendingIntent; 
    import android.content.BroadcastReceiver; 
    import android.content.Context; 
    import android.content.Intent; 
    import android.os.PowerManager; 
    import android.widget.Toast; 

    public class Alarm extends BroadcastReceiver 
    {  
     @Override 
     public void onReceive(Context context, Intent intent) 
     { 
      PowerManager pm = (PowerManager) context.getSystemService(Context.POWER_SERVICE); 
      PowerManager.WakeLock wl = pm.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, ""); 
      wl.acquire(); 

      // Put here YOUR code. 
      Toast.makeText(context, "Alarm !!!!!!!!!!", Toast.LENGTH_LONG).show(); // For example 

      wl.release(); 
     } 

    public void SetAlarm(Context context) 
    { 
     AlarmManager am=(AlarmManager)context.getSystemService(Context.ALARM_SERVICE); 
     Intent i = new Intent(context, Alarm.class); 
     PendingIntent pi = PendingIntent.getBroadcast(context, 0, i, 0); 
     am.setRepeating(AlarmManager.RTC_WAKEUP, System.currentTimeMillis(), 5000, pi); // Millisec * Second * Minute 
    } 

    public void CancelAlarm(Context context) 
    { 
     Intent intent = new Intent(context, Alarm.class); 
     PendingIntent sender = PendingIntent.getBroadcast(context, 0, intent, 0); 
     AlarmManager alarmManager = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE); 
     alarmManager.cancel(sender); 
    } 
} 

Я добавил этот код манифеста:

<receiver android:process=":remote" android:name="Alarm"></receiver> 
<service android:enabled="true" android:name="com.sjjgames.abortionapp.YourService" /> 
<uses-permission android:name="android.permission.WAKE_LOCK"/> 
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/> 

Это в классе под названием "YourService":

package com.sjjgames.abortionapp; 
import android.app.Service; 
import android.content.Context; 
import android.content.Intent; 
import android.os.IBinder; 

public class YourService extends Service 
{ 
    Alarm alarm = new Alarm(); 
    public void onCreate() 
    { 
     super.onCreate();  
    } 

    public void onStart(Context context,Intent intent, int startId) 
    { 
     alarm.SetAlarm(context); 
    } 

    @Override 
    public IBinder onBind(Intent intent) 
    { 
     return null; 
    } 
} 

Ожидается, что тост будет отображаться каждые 5 секунд.

+0

Хороший вопрос, но я просто следую руководству по приведенному выше ссылкам. Класс YourService активирует класс тревоги. – Shane

+0

В какой момент запускается ваш сервис? Я не вижу ни одной строки, где начинается «YourService». – Avinazz

+0

Разве эта строка в манифесте не запускает класс «YourService»? Shane

ответ

0

Ваш сервис не вызывает метод onStart(). Вместо метода OnStart() вы должны использовать onStartCommand():

@Override 
public int onStartCommand(Intent intent, int flags, int startId) { 
    alarm.setAlarm(this); 
    return START_NOT_STICKY; 
} 

Я предлагаю вам добавить @Override аннотации к каждому переопределенному методу в классах. Поэтому, если вы добавите метод @Override to onStart(), код не сможет компилироваться, и ошибка будет легче обнаружить.

Смежные вопросы