Android 는 매일 정시 알림 기능 을 실현 합 니 다.

3913 단어 android정시 알림
이것 은 정시 알림 을 설정 하 는 기능 입 니 다.즉,몇 시 몇 분 후에 알림 을 설정 하 는 것 입 니 다.시스템 에 시간 을 설정 하 는 것 입 니 다.시스템 시간 이 설정 한 시간 에 도착 하면 우리 에 게 방송 을 보 내 고 시간 알림 기능 을 달성 합 니 다.
인터넷 에서 많이 찾 았 습 니 다.많은 구 덩이 를 만 났 습 니 다.찾 아 낸 것 입 니 다.예 를 들 어 다음 에 중복 시간의 두 번 째 매개 변 수 를 설정 합 니 다.인터넷 에서 실행 알림 이 몇 밀리초 지연 되 었 는 지 말 하 는 사람 이 많 습 니 다.제 가 사용 한 MIUI 의 삼 성 핸드폰 테스트 는 왜 모두 틀 렸 는 지 모 르 겠 습 니 다.테스트 를 통 해 알 수 있 듯 이 원래 그 매개 변 수 는 설 정 된 시간 점 의 밀리초 값 입 니 다!자,더 이상 말 하지 않 겠 습 니 다.코드 를 보 세 요.

/**
 *     
 */
 private void startRemind(){
   //      ,            
   mCalendar = Calendar.getInstance();
   mCalendar.setTimeInMillis(System.currentTimeMillis());
   //       
   long systemTime = System.currentTimeMillis();
   //        ,               
   mCalendar.setTimeInMillis(System.currentTimeMillis());
   //           ,          8       
   mCalendar.setTimeZone(TimeZone.getTimeZone("GMT+8"));
   //            13 
   mCalendar.set(Calendar.HOUR_OF_DAY, 13);
   //            25 
   mCalendar.set(Calendar.MINUTE, 25);
   //             
   mCalendar.set(Calendar.SECOND, 0);
   mCalendar.set(Calendar.MILLISECOND, 0);
   //       13 25     
   //       13 25     
   long selectTime = mCalendar.getTimeInMillis();

   //              ,              
   if(systemTime > selectTime) {
     mCalendar.add(Calendar.DAY_OF_MONTH, 1);
   }
  //AlarmReceiver.class      
   Intent intent = new Intent(MainActivity.this, AlarmReceiver.class);
   PendingIntent pi = PendingIntent.getBroadcast(MainActivity.this, 0, intent, 0);
   //  AlarmManager  
   AlarmManager am = (AlarmManager)getSystemService(ALARM_SERVICE);
  //**********  !!                 *********
   /**
   *     
   * mCalendar.getTimeInMillis()      13 25        
   */
   am.set(AlarmManager.RTC_WAKEUP, mCalendar.getTimeInMillis(), pi);

   /**
   *     
   *           ;     
   *            ,                   ,       MIUI                     ,    13 25        
   *           ,                        
   */
   am.setRepeating(AlarmManager.RTC_WAKEUP, mCalendar.getTimeInMillis(), (1000 * 60 * 60 * 24), pi);
 }
/**
 *     
 */
 private void stopRemind(){
   Intent intent = new Intent(MainActivity.this, AlarmReceiver.class);
   PendingIntent pi = PendingIntent.getBroadcast(MainActivity.this, 0,
       intent, 0);
   AlarmManager am = (AlarmManager)getSystemService(ALARM_SERVICE);
   //    
   am.cancel(pi);
   Toast.makeText(this, "     ", Toast.LENGTH_SHORT).show();
 }
위의 첫 번 째 매개 변수의 상세 한 설명:
AlarmManager.RTC,하드웨어 알 람,휴대 전화(다른 장치 일 수도 있 음)를 깨 우지 않 고 휴면 합 니 다.휴대 전화 가 휴면 할 때 자명종 을 발사 하지 않 는 다.
AlarmManager.RTC_WAKEUP,하드웨어 알 람,알 람 이 n 을 보 낼 때 휴대 전화 휴면 을 깨 웁 니 다.
AlarmManager.ELAPSED_REALTime,실제 시간 은 자명종 을 흐 르 고 휴대 전화 휴면 을 깨 우지 않 습 니 다.휴대 전화 가 휴면 할 때 자명종 을 발사 하지 않 는 다.
AlarmManager.ELAPSED_REALTIME_WAKEUP,실제 시간 은 알 람 을 흐 르 고 알 람 이 n 을 보 낼 때 휴대 전화 휴면 을 깨 웁 니 다.
RTC 알 람 과 ELAPSEDREALTime 의 가장 큰 차 이 는 전자 가 휴대 전화 시간 수정 을 통 해 알 람 사건 을 촉발 할 수 있다 는 것 이다.후 자 는 실제 시간 을 통 해 흐 르 고 휴면 상태 에서 도 시간 이 계산 된다 는 것 이다.
그리고 라디오 수신 자 를 쓴다.

public class AlarmReceiver extends BroadcastReceiver {
  @Override
  public void onReceive(Context context, Intent intent) {
    //                    ,    
  }
}
마지막 으로 라디오 수신 자 에 게 목록 파일 을 설정 하 는 것 을 잊 지 마 세 요.

<receiver
  android:name=".receiver.AlarmReceiver"
  android:process=":remote"
  />
사용 방법 은 시작 알림 을 직접 호출 하거나 알림 을 닫 으 면 됩 니 다.
이상 은 본 고의 모든 내용 입 니 다.본 고의 내용 이 여러분 의 학습 이나 업무 에 어느 정도 도움 이 되 기 를 바 랍 니 다.또한 저 희 를 많이 지지 해 주시 기 바 랍 니 다!

좋은 웹페이지 즐겨찾기