Тревога между определенным интервалом времени

Я новичок в Android. Я работаю над приложением тревоги для Android. Я хочу показывать будильник с 8:00 до 20:00 через каждые 30 минут и повторять этот будильник ежедневно. Мой код здесь. Основная деятельность....

 import java.util.Calendar;

 import android.app.Activity;
 import android.app.AlarmManager;
 import android.app.PendingIntent;
 import android.content.Context;
 import android.content.Intent;
 import android.os.Bundle;
 import android.view.View;
 import android.widget.Button;
 import android.widget.CompoundButton;
 import android.widget.Switch;
 import android.widget.Toast;

 public class WaterActivity extends Activity {

Button leftBTN, rightBTN;
Switch toggleSwitch;
Context context = this;
SharedPref pref;
static PendingIntent pendingIntent;
static AlarmManager alarmManager;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_water);
    leftBTN         =   (Button)findViewById(R.id.leftbtn);
    rightBTN        =   (Button)findViewById(R.id.rightbtn);
    toggleSwitch    =   (Switch)findViewById(R.id.switchbtn);
    pref            =   new SharedPref(context);
    if(pref.getValue(pref.getWaterKey()).equals("on"))
        toggleSwitch.setChecked(true);

    toggleSwitch.setOnCheckedChangeListener(SwitchListener);
    leftBTN.setOnClickListener(new Button.OnClickListener() {
        @Override
        public void onClick(View v) {
            leftBTN.setTextColor(getResources().getColor(R.color.water_color));
            rightBTN.setTextColor(getResources().getColor(R.color.white_color));
            leftBTN.setBackgroundResource(R.drawable.button_bg);
            rightBTN.setBackgroundResource(R.drawable.button_right_bg2);


        }
          });
    rightBTN.setOnClickListener(new Button.OnClickListener() {
        @Override
        public void onClick(View v) {
            rightBTN.setTextColor(getResources().getColor(R.color.water_color));
            leftBTN.setTextColor(getResources().getColor(R.color.white_color));
            rightBTN.setBackgroundResource(R.drawable.button_right_bg);
            leftBTN.setBackgroundResource(R.drawable.button_bg2);


        }
          });
}
private Switch.OnCheckedChangeListener SwitchListener        =   new Switch.OnCheckedChangeListener(){

    public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
         if (isChecked) {
             pref.savePre_value(pref.getWaterKey(), "on");
             Toast.makeText(context, "Reminder is on", Toast.LENGTH_SHORT).show();
                Intent intentsOpen = new Intent(context, WaterReceiver.class);
                pendingIntent = PendingIntent.getBroadcast(context,111, intentsOpen, 0);
                alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE);
                Calendar calendar = Calendar.getInstance();
                calendar.setTimeInMillis(System.currentTimeMillis());
                alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), 10000, pendingIntent);

            } else {
                 pref.savePre_value(pref.getWaterKey(), "off");
                 Toast.makeText(context, "Reminder is off", Toast.LENGTH_SHORT).show();
                 alarmManager.cancel(pendingIntent);
            }
        }
};
@Override
public void onBackPressed() {
    // TODO Auto-generated method stub
    super.onBackPressed();
    finish();
}
}

и это мой приемник.

  public class WaterReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
    Toast.makeText(context, "Time is up!!!!.",
            Toast.LENGTH_LONG).show();

}


 }

Пожалуйста, помогите, что мне здесь не хватает? Как я могу сделать это в Android. Любой может помочь мне в этом? Спасибо в начале.

1 ответ

Решение

Приты простой процесс:

  1. Расписание ежедневного будильника исключительно для начала в 8 утра
  2. После того, как ваш ежедневный будильник включен, запланируйте еще один, чтобы повторить 30 минут до беременности
  3. при каждом последующем срабатывании второго аварийного сигнала проверьте, прошло ли время 8 вечера, если да, то удалите его.

Это было бы довольно просто реализовать, пример кода

public void setDailyAlarms(Context context){

    // Daily Alarm

    AlarmManager manager = (AlarmManager)context.getSystemService(Context.ALARM_SERVICE);
    Calendar calendar = Calendar.getInstance();
    calendar.set(Calendar.HOUR_OF_DAY, 8);
    calendar.set(Calendar.MINUTE, 0);
    Intent intent = new Intent("DAIL_ALARM_TRIGGERED");
    PendingIntent pIntent = PendingIntent.getBroadcast(context,
            100, intent, PendingIntent.FLAG_UPDATE_CURRENT);
    manager.setRepeating(AlarmManager.RTC_WAKEUP,
            calendar.getTimeInMillis(), AlarmManager.INTERVAL_DAY, pIntent);




}

public void setRepeatingAlarm(Context context){
        // Alarm 30 min each'

        AlarmManager manager = (AlarmManager)context.getSystemService(Context.ALARM_SERVICE);
        Intent intent = new Intent("REPEATING_ALARM_TRIGGERED");
        PendingIntent pIntent = PendingIntent.getBroadcast(context,
                102, intent, PendingIntent.FLAG_UPDATE_CURRENT);
        manager.setRepeating(AlarmManager.RTC_WAKEUP,
                System.currentTimeMillis(), 30*60*1000, pIntent);
}

public void cancelRepeatingAlarm(Context context){
    AlarmManager manager = (AlarmManager)context.getSystemService(Context.ALARM_SERVICE);
    Intent intent = new Intent("REPEATING_ALARM_TRIGGERED");
    PendingIntent pIntent = PendingIntent.getBroadcast(context,
            102, intent, PendingIntent.FLAG_UPDATE_CURRENT);

    manager.cancel(pIntent);
}

Теперь вам нужен приемник вещания, чтобы получить "DAIL_ALARM_TRIGGERED" намерение, как только вы получите это, вы звоните setRepeatingAlarm()теперь это будет трансляция "REPEATING_ALARM_TRIGGERED" как только вы получите это, просто проверьте, если настоящее время 8 вечера, то да, позвоните cancelRepeatingAlarm();

Я полагаю, вам будет достаточно реализовать свою логику.

Другие вопросы по тегам