首页 > android闹钟定时启动延时或者直接不启动

android闹钟定时启动延时或者直接不启动

自己写的android闹钟功能,需要实现timepicker选择完成后将选择的时间设定为闹钟的启动时间,但是不管怎么改总是没法定时启动

alertDialog = new AlertDialog.Builder(context)
                .setView(view)
                .setCustomTitle(viewTitle)
                .setNegativeButton("确定", new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialog, int which) {
                        hour = timePicker.getCurrentHour();
                        minute = timePicker.getCurrentMinute();
                        time = new StringBuilder();
                        time.append(hour < 10 ? "0" + hour : hour).append(":")
                                .append(minute < 10 ? "0" + minute : minute);
                        button.setText(time);
                        calendar.set(Calendar.HOUR, hour);
                        calendar.set(Calendar.MINUTE, minute);
                        calendar.set(Calendar.SECOND, 0);
                        intent = new Intent(context, AlarmNotifyReceiver.class);
                        pi = PendingIntent.getBroadcast(context, 0, intent,PendingIntent.FLAG_CANCEL_CURRENT);
                        manager = (AlarmManager) context
                                .getSystemService(context.ALARM_SERVICE);
                        manager.setWindow(AlarmManager.RTC_WAKEUP,
                                calendar.getTimeInMillis(),
                                1000 * 60 * 60 * 24, pi);
                        Toast.makeText(context, "闹钟设置为" + time,
                                Toast.LENGTH_SHORT).show();
                        dialog.cancel();
                    }
                })
                .setPositiveButton("取消", new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialog, int which) {
                        dialog.cancel();
                    }
                }).create();
        alertDialog.setOnShowListener(new OnShowListener() {

            @Override
            public void onShow(DialogInterface dialog) {
                int divierId = alertDialog.getContext().getResources()
                        .getIdentifier("android:id/titleDivider", null, null);
                View divider = alertDialog.findViewById(divierId);
                divider.setBackgroundColor(context.getResources().getColor(
                        R.color.theme_background)); // earlier defined color-int
            }
        });
        alertDialog.show();

接下来是接收广播的类

public void onReceive(Context context, Intent intent) {
        Toast.makeText(context, "启动闹钟", Toast.LENGTH_SHORT).show();
        notice = MediaPlayer.create(context,
                RingtoneManager.getDefaultUri(RingtoneManager.TYPE_ALARM));
        notice.setLooping(true);
        try {
            notice.setAudioStreamType(AudioManager.STREAM_ALARM);
            notice.prepare();
            notice.start();
        } catch (IllegalStateException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
        Builder builder = new AlertDialog.Builder(context);
        builder.setTitle("日常提醒闹钟").setMessage("请执行操作")
                .setPositiveButton("好哒~~", new OnClickListener() {

                    @Override
                    public void onClick(DialogInterface dialog, int which) {
                        notice.stop();
                    }
                });
        AlertDialog dialog=builder.create();
        dialog.getWindow().setType(WindowManager.LayoutParams.TYPE_SYSTEM_ALERT);
        dialog.show();
    }

写了Service没,要在注册广播


是不是时间设置错了,你的TimePicker设置setOnTimeChangedListener来监听时间的更新了没

【热门文章】
【热门文章】