2017-04-19 8 views
-2

私は1日、3日、7日、28日のように異なる時刻にアラームを設定する必要があるプロジェクトに取り組んでいますユーザーがアプリを離れました。 は、私は私が最終的にこれを達成するために管理1日、3日、7日、28日のような特定の日に通知を設定する方法

 Calendar calendar2 = Calendar.getInstance(); 
     calendar2.set(Calendar.HOUR_OF_DAY, 16); 
     calendar2.set(Calendar.MINUTE, 40); 
     calendar2.set(Calendar.SECOND, 0); 
     alarmManager.setInexactRepeating(AlarmManager.RTC_WAKEUP, calendar2.getTimeInMillis(), AlarmManager.INTERVAL_DAY, pendingIntent); 
+0

質問は、スタックオーバーフローのためにオフトピックですされ –

+1

https://developer.android.com/ reference/android/app/AlarmManager.html – CommonsWare

答えて

0

を使用して簡単に毎日のためのアラームを設定することができています。以下のソリューションは本、ツール、ソフトウェアライブラリ、チュートリアルや他のオフサイトのリソースをお勧めしますか見つけるために私たちを求めて

AlarmManager alarmManager = (AlarmManager) this.getSystemService(ALARM_SERVICE); 

    ArrayList<PendingIntent> intentArray = new ArrayList<PendingIntent(); 

    if (screenPreferences.getInt("summary_page", 0) == 0) { 
     if(screenPreferences.getInt("alarm_set", 0) == 0){ 
     screenPreferences.edit().putInt("alarm_set",1).commit(); 
     startNotifications(alarmManager, intentArray, 1); // 1 is to start notifications 
     } 
    }else { 
     screenPreferences.edit().putInt("alarm_set",0).commit(); 
     startNotifications(alarmManager, intentArray, 0); // 0 is to stop notifications 
    } 

/************************************************************/ 
private void startNotifications(AlarmManager alarmManager, ArrayList<PendingIntent> intentArray, int onOrOff) { 

    for (int i = 0; i < 5; ++i) { 
     Intent intent = new Intent(MainActivity.this, StartReceiver.class); 

     PendingIntent pendingIntent1 = PendingIntent.getBroadcast(MainActivity.this, i, intent, 0); 
     // Single alarms set for 1 day, 3 days, 7 days, 14 days, 28 days 
     if(onOrOff == 1){ 
     long daySet = 60 * 60 * 24 * 1000; 
     switch (i){ 
      case 0: daySet = 60 * 60 * 24 * 1000; // 1 day 
        break; 
      case 1: daySet = 60 * 60 * 72 * 1000; // 3 days 
        break; 
      case 2: daySet = 60 * 60 * 168 * 1000; // 7 days 
        break; 
      case 3: daySet = 60 * 60 * 336 * 1000; // 14 days 
        break; 
      case 4: daySet = 60 * 60 * 672 * 1000; // 28 days 
        break; 
      default: 
        daySet = 60 * 60 * 24 * 1000; // default 1 day 
        break; 
      } 

     alarmManager.setExact(AlarmManager.RTC_WAKEUP, System.currentTimeMillis() + daySet, pendingIntent1); 
     intentArray.add(pendingIntent1); 
     } 
     else { 
      alarmManager.cancel(pendingIntent1); 
     } 
    } 
} 
関連する問題