静音设备延迟

delay in silent device

我正在开发一个应用程序,用户可以在其中输入时间以将设备设置为静音模式,并在计时器结束时恢复正常。到目前为止,我可以让设备进入静音模式并返回正常模式,但在激活静音模式后会有延迟,延迟大约为 10 或 15 秒。我不明白为什么延迟激活静音模式。下面是我的 start() 和 end() 时间函数的代码。

开始():

 public void start()
  {

      Calendar cal=Calendar.getInstance();
   // simpleDateFormat=new SimpleDateFormat("hh:mm a");
    Date date = new Date();
    //String time=simpleDateFormat.format(date);
    int hour=cal.get(Calendar.HOUR);
    int minute=cal.get(Calendar.MINUTE);

    timePickerDialog=new TimePickerDialog(MainActivity.this, new
            TimePickerDialog.OnTimeSetListener()
            {

                @Override
                public void onTimeSet(TimePicker view,  final int hourOfDay1,final int minute1) {
                    Time time = new Time(hourOfDay1, minute1,0);
                    GregorianCalendar j2=new GregorianCalendar(hourOfDay1,minute1,0);
                    System.out.println(j2);
                    //little h uses 12 hour format and big H uses 24 hour format
                    SimpleDateFormat simpleDateFormat = new SimpleDateFormat("h:mm a");

                    //format takes in a Date, and Time is a sublcass of Date
                    String s = simpleDateFormat.format(time);
                    start.setText(s);


                      //dp.getDayOfMonth();

                    Calendar calNow = Calendar.getInstance();
                    Calendar calSet = (Calendar) calNow.clone();

                    calSet.set(Calendar.HOUR_OF_DAY, hourOfDay1);
                    calSet.set(Calendar.MINUTE, minute1);
                    Toast.makeText(MainActivity.this,"Starting Pending intent started",Toast.LENGTH_LONG).show();
                    //final int _id = (int) System.currentTimeMillis();
                    Intent intent = new Intent(getBaseContext(), SilenceBroadCastReceiver.class);
                    PendingIntent pendingIntent = PendingIntent.getBroadcast(getBaseContext(), RQS_1, intent, 0);
                    AlarmManager alarmManager = (AlarmManager)getSystemService(Context.ALARM_SERVICE);
                    alarmManager.set(AlarmManager.RTC_WAKEUP, calNow.getTimeInMillis(), pendingIntent);

                    //final long sttimer=((shour)*60*60*1000)+((sminute)*60*1000);


                }
            },hour,minute,false);
            timePickerDialog.setTitle("Set Start time");
            timePickerDialog.show();



}

结束()

    public void end(){
    Calendar cal1=Calendar.getInstance();
    //simpleDateFormat1=new SimpleDateFormat("hh:mm a");
    Date date1 = new Date();
    //String time=simpleDateFormat1.format(date1);
    int hour=cal1.get(Calendar.HOUR);
    int minute=cal1.get(Calendar.MINUTE);

    secondtimepickerdialog=new TimePickerDialog(MainActivity.this, new
            TimePickerDialog.OnTimeSetListener() {
                @Override
                public void onTimeSet(TimePicker view,  final int hourOfDay1,final int minute1) {
                    Time time = new Time(hourOfDay1, minute1,0);
                    GregorianCalendar j3=new GregorianCalendar(hourOfDay1,minute1,0);
                    //little h uses 12 hour format and big H uses 24 hour format
                    SimpleDateFormat simpleDateFormat1 = new SimpleDateFormat("h:mm a");

                    //format takes in a Date, and Time is a sublcass of Date
                    String s1 = simpleDateFormat1.format(time);
                    end.setText(s1);

                    Calendar calNow1 = Calendar.getInstance();
                    Calendar calSet1 = (Calendar) calNow1.clone();

                    calSet1.set(Calendar.HOUR_OF_DAY, hourOfDay1);
                    calSet1.set(Calendar.MINUTE, minute1);
                    Toast.makeText(MainActivity.this,"End Pending intent started",Toast.LENGTH_LONG).show();

                    Intent intent = new Intent(getBaseContext(), UnsilenceBroadcastReceiver.class);
                    PendingIntent pendingIntent = PendingIntent.getBroadcast(getBaseContext(), RQS_2, intent, PendingIntent.FLAG_ONE_SHOT);
                    AlarmManager alarmManager = (AlarmManager)getSystemService(Context.ALARM_SERVICE);
                    alarmManager.set(AlarmManager.RTC_WAKEUP, j3.getTimeInMillis(), pendingIntent);

                    //final long sttimer=((shour)*60*60*1000)+((sminute)*60*1000);


                }
            },hour,minute,false);
    secondtimepickerdialog.setTitle("Set End time");
    secondtimepickerdialog.show();

}

已解决...... 在 onTimeset() 的两个函数中,我删除了 final 关键字,现在不知何故延迟消失了,设备当场变得安静。