2016-09-09 8 views
0

the libraryを使用してラジアルクロックの時間を設定し、その時間にアラートを設定したいと思います。私はAlarmManagerを使用してアラートを作成しました。そこに時間を選択してください。アラートを設定できません

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

許可setInexactRepeating()

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

あなたのAPIレベルですか? –

答えて

0

は、あなたがAlarmManager間隔 constants.Inの一つ、この場合、AlarmManager.INTERVAL_FIFTEEN_MINUTESを使用する必要がありますこれが最小であるため、これはから確認できますこれはAPI 19以前で利用可能です。

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

代替は、テストされている

alarmMgr.setRepeating(AlarmManager.RTC_WAKEUP, System.currentTimeMillis(), 
     interval, pendingIntent); 
関連する問題