2016-09-09 10 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); 
관련 문제