按着书敲的代码,但是测试的时候时间到了无法响铃和提示时间到了,不知道问题在哪里,之前曾经可以的,后来不知道为什么不行了。求帮忙看看代码的问题……设置闹钟代码:// 获取AlarmManager对象
aManager = (AlarmManager) getSystemService(Service.ALARM_SERVICE);clock = (Button)findViewById(R.id.clock); clock.setOnClickListener(new Button.OnClickListener(){ @Override
public void onClick(View v) {
// TODO Auto-generated method stub
Calendar currentTime = Calendar.getInstance();
// 创建一个TimePickerDialog实例,并把它显示出来。
new TimePickerDialog(mContext,
0, // 绑定监听器
new TimePickerDialog.OnTimeSetListener()
{
@Override
public void onTimeSet(TimePicker tp, int hourOfDay,
int minute)
{
// 指定启动AlarmActivity组件
Intent intent = new Intent(mContext
, AlarmActivity.class);
// 创建PendingIntent对象
PendingIntent pi = PendingIntent.getActivity(
mContext, 0,intent, 0);
Calendar c = Calendar.getInstance();
c.setTimeInMillis(System.currentTimeMillis());
// 根据用户选择时间来设置Calendar对象
c.set(Calendar.HOUR , hourOfDay);
c.set(Calendar.MINUTE , minute);
// 设置AlarmManager将在Calendar对应的时间启动指定组件
aManager.set(AlarmManager.RTC_WAKEUP
, c.getTimeInMillis(), pi); 
// 显示闹铃设置成功的提示信息
Toast.makeText(mContext , 
"闹铃设置成功啦" , 5000).show();
}
}, currentTime.get(Calendar.HOUR_OF_DAY)
, currentTime.get(Calendar.MINUTE), false)
.show();
 
}

});
提示时间到得代码(另一个activity):
public class AlarmActivity extends Activity {
    /** Called when the activity is first created. */
MediaPlayer alarmMusic;
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
         alarmMusic = MediaPlayer.create(this, R.raw.alarm);
         alarmMusic.setLooping(true);
         alarmMusic.start();
         new AlertDialog.Builder(AlarmActivity.this)
         .setTitle("闹钟")
         .setMessage("时间到了")
         .setPositiveButton("确定",
          new  OnClickListener()
         {   @Override
          public void onClick(DialogInterface dialog,int which)
          {
          alarmMusic.stop();
          AlarmActivity.this.finish();
          
          }
         }).show();
         
    }
}

解决方案 »

  1.   

    时间没有设置好,可以在          
    c.set(Calendar.HOUR , hourOfDay);
    c.set(Calendar.MINUTE , minute);
    前后 各加上一句log
    Log.d(TAG,"current time is "+c.getTime());
    看打印结果 就知道为什么了
      

  2.   

    你可能需要把Calendar.HOUR改成Calendar.HOUR_OF_DAY,参考下开发文档里的说明:
    HOUR_OF_DAY is used for the 24-hour clock
    HOUR is used for the 12-hour clock