Установка нескольких будильников

Я хочу установить несколько будильников, и я попробовал это до сих пор. здесь добавляются 3 тревоги, используя цикл. по достижении этих времен он должен вызывать класс MainActivity 3 раза (через 10 секунд, 20 секунд и 30 секунд при нажатии кнопки), но он показывает более многократное число 3. Некоторое время он показывает 9 раз, иногда 18 раз. нужна помощь, пожалуйста. Вот мой код

package ram.materialnavigation;

import android.content.SharedPreferences;
import android.os.Bundle;
import android.app.Activity;
import android.app.AlarmManager;
import android.app.PendingIntent;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.util.Log;
import android.view.Menu;
import android.view.View;
import android.widget.Toast;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;

public class AlarmActivity extends Activity {

    //used for register alarm manager
    PendingIntent pendingIntent;
    //used to store running alarmmanager instance
    AlarmManager alarmManager;
    //Callback function for Alarmmanager event
    BroadcastReceiver mReceiver;

    SharedPreferences sp;
//    int id;
//    String time;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.alarm_layut);
//        sp = getSharedPreferences("sp", MODE_PRIVATE);
        //Register AlarmManager Broadcast receive.
//        RegisterAlarmBroadcast();
    }

    public void onClickSetAlarm(View v) {

//        SimpleDateFormat sdf = new SimpleDateFormat("dd-M-yyyy hh:mm:ss a");
//        String dateString = "06-09-2015 12:35:30 pm";
//        try {
//            Date date = sdf.parse(dateString);
//            Calendar calendar = Calendar.getInstance();
//            calendar.setTime(date);
//            long timeMilli = calendar.getTimeInMillis();
//
//            sp.edit().putLong("timeId", timeMilli).apply();
//            Log.d("AlarmTIme",timeMilli+"");
//
//            for (int i = 0; i < 5; i++) {
//                long timeFromSP = sp.getLong("timeId", i) + (i * 1000);
//                RegisterAlarmBroadcast(timeFromSP, 0);
//            }
//
//        } catch (ParseException e) {
//            e.printStackTrace();
//        }

        Calendar calendar = Calendar.getInstance();

        for (int i = 1; i <= 3; i++) {
            RegisterAlarmBroadcast(calendar.getTimeInMillis() + i * 10000, i);
        }


    }

    private void RegisterAlarmBroadcast(long time, int requestCode) {
        Log.i("RegisterAlarmBroadcast", "Going to register Intent.RegisterAlramBroadcast");

        //This is the call back function(BroadcastReceiver) which will be call when your
        //alarm time will reached.
        mReceiver = new BroadcastReceiver() {
            private static final String TAG = "Alarm Example Receiver";

            @Override
            public void onReceive(Context context, Intent intent) {
                Log.i(TAG, "BroadcastReceiver::OnReceive() >>>>>>>>>>>>>>>>>>>>>>>>>>>>>");
                String value = intent.getStringExtra("value");
                Toast.makeText(context, value, Toast.LENGTH_SHORT).show();
                startActivity(new Intent(AlarmActivity.this, MainActivity.class));
            }
        };

        // register the alarm broadcast here

        IntentFilter intentFilter = new IntentFilter("com.ronem");

        registerReceiver(mReceiver, intentFilter);

        Intent intent = new Intent("com.ronem");
        intent.putExtra("value", "Time request code" + requestCode);


        pendingIntent = PendingIntent.getBroadcast(this, requestCode, intent, 0);
        alarmManager = (AlarmManager) (this.getSystemService(Context.ALARM_SERVICE));
        alarmManager.set(AlarmManager.RTC_WAKEUP, time, pendingIntent);
    }

    private void UnregisterAlarmBroadcast() {
        alarmManager.cancel(pendingIntent);
        getBaseContext().unregisterReceiver(mReceiver);
    }


}

0 ответов

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