2016-09-09 6 views
0

Ich habe the library verwendet, um eine Zeit mit Hilfe einer Radialtaktuhr einzustellen und möchte eine Warnung zu dieser ausgewählten Zeit einstellen. Ich habe AlarmManager verwendet, um das zu tun. Aber keine Warnung ist Dort nach der Auswahl der Uhrzeit.Ich kann keine Warnung einstellen

AlarmReceiver.java

public class AlarmReceiver extends BroadcastReceiver { 

@Override 
public void onReceive(Context context, Intent intent) { 

    // For our recurring task, we'll just display a message 
    Toast.makeText(context, "I'm running", Toast.LENGTH_SHORT).show(); 
} 

}

DeviceBootReceiver.java

public class DeviceBootReceiver extends BroadcastReceiver { 
@Override 
public void onReceive(Context context, Intent intent) { 
    if (intent.getAction().equals("android.intent.action.BOOT_COMPLETED")) { 
     /* Setting the alarm here */ 

     Intent alarmIntent = new Intent(context, AlarmReceiver.class); 

     PendingIntent pendingIntent = PendingIntent.getBroadcast(context, 0, alarmIntent, 0); 

     AlarmManager manager = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE); 

     int interval = 1000; 

     manager.setInexactRepeating(AlarmManager.RTC_WAKEUP, System.currentTimeMillis(), interval, pendingIntent); 

     Toast.makeText(context, "Alarm Set", Toast.LENGTH_SHORT).show(); 
    } 
} 

}

sitede tailsActivity.java

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_site_details); 
    Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); 
    setSupportActionBar(toolbar); 
    getSupportActionBar().setDisplayHomeAsUpEnabled(true); 

    setTitle("Site Details"); 

    initComponent(); 

    /* Retrieve a PendingIntent that will perform a broadcast */ 
    Intent alarmIntent = new Intent(SiteDetailsActivity.this, AlarmReceiver.class); 
    pendingIntent = PendingIntent.getBroadcast(SiteDetailsActivity.this, 0, alarmIntent, 0); 
} 

public void clickAlert(View view) 
{ 
    alertBtn.setVisibility(View.INVISIBLE); 
    alertGrnBtn.setVisibility(View.VISIBLE); 
    RadialTimePickerDialogFragment rtpd = new RadialTimePickerDialogFragment() 
      .setOnTimeSetListener(SiteDetailsActivity.this) 
      .setForced24hFormat(); 
    rtpd.show(getSupportFragmentManager(), FRAG_TAG_TIME_PICKER); 
} 

@Override 
public void onTimeSet(RadialTimePickerDialogFragment dialog, int hourOfDay, int minute) { 
    startAtSelectedTime(hourOfDay,minute); 
} 

public void startAtSelectedTime(int hr,int min) { 
    AlarmManager manager = (AlarmManager) getSystemService(Context.ALARM_SERVICE); 

    Calendar calendar = Calendar.getInstance(); 
    calendar.setTimeInMillis(System.currentTimeMillis()); 
    calendar.set(Calendar.HOUR_OF_DAY, hr); 
    calendar.set(Calendar.MINUTE, min); 

    /* Repeating on every 10 minutes interval */ 
    manager.setRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), 
      1000 * 60 * 10, pendingIntent); 
} 

AndroidManifest.xml

Permission

<!-- Permission to start Alarm on device reboot --> 
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/> 
+0

Ihre api Ebene, auf der Sie testen werden? –

Antwort

0

Mit setInexactRepeating(), haben Sie eine der AlarmManager Intervall constants.In diesem Fall zu verwenden, AlarmManager.INTERVAL_FIFTEEN_MINUTES weil dies das Minimum ist, können Sie dies vonbestätigenund dies ist auf API 19 oder älter verfügbar.

alarmMgr.setInexactRepeating(AlarmManager.RTC_WAKEUP, System.currentTimeMillis(), 
     AlarmManager.INTERVAL_FIFTEEN_MINUTES, pendingIntent); 

Die Alternative ist

alarmMgr.setRepeating(AlarmManager.RTC_WAKEUP, System.currentTimeMillis(), 
     interval, pendingIntent); 
Verwandte Themen