0

我是 android 新手,我想制作一个闹钟应用程序,从用户那里获取时间并让 android 系统在那个时间运行应用程序。现在我计算当前时间和输入时间之间的时间,并使用以下代码让应用程序休眠,但没有当我的应用程序关闭甚至最小化时不起作用:

start_btn.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                TimePicker tp = (TimePicker) findViewById(R.id.timepicker1);
                                int hour = tp.getCurrentHour();
                                int min = tp.getCurrentMinute();

                                Integer res = min + hour*60;

                                Calendar c = Calendar.getInstance(); 
                                cur_hour = c.get(Calendar.HOUR_OF_DAY);
                                cur_min = c.get(Calendar.MINUTE);

                Integer cur_res = cur_min + cur_hour*60;

                if(cur_res > res)
                {
                    res_min =1440-( cur_res - res);
                }

                else
                {
                    res_min = res-cur_res;
                }

                res_min *= 60000;

                new Handler().postDelayed(new Thread(){

                    @Override
                    public void run() {
                        super.run();
                            PlayMusic();
                        }

                },res_min);

            }
        });

我几乎没有寻找解决方案,我发现警报管理器是答案,但我找不到在这种情况下工作的合适代码。我正在寻找一种简单的方法来执行它。我不知道是否有一个更好的方法与否。

谢谢!

4

1 回答 1

1

您是否尝试使用 AlarmManager?如果有,请发布您尝试过的代码。

查看 Google Developer API 中的此类类。它们被记录在案。

http://developer.android.com/reference/android/app/AlarmManager.html

一个例子:

//You must set permissions in AndroidManifest.xml
<uses-permission android:name="android.permission.WAKE_LOCK"></uses-permission>
<receiver  android:process=":remote" android:name="Alarm"></receiver>


//In your code
AlarmManager am=(AlarmManager)context.getSystemService(Context.ALARM_SERVICE);
Intent i = new Intent(context, Alarm.class);
PendingIntent pi = PendingIntent.getBroadcast(context, 0, i, 0);
am.setRepeating(AlarmManager.RTC_WAKEUP, System.currentTimeMillis(), milli, sec, min, pi); 
于 2013-07-23T16:16:00.990 回答