綁定帳號登入

Android 台灣中文網

打印 上一主題 下一主題

[求助] 鬧鐘程式遇到的問題(有附Code)

[複製連結] 查看: 3386|回覆: 0|好評: 0
跳轉到指定樓層
樓主
free576002 | 收聽TA | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
發表於 2015-3-27 21:21

馬上加入Android 台灣中文網,立即免費下載應用遊戲。

您需要 登錄 才可以下載或查看,沒有帳號?註冊

x
假設我設定(2015/01/01 早上00:0)時會Log.e("TAG","123");
但是時間一到卻沒有反應
但如果我是設定30秒後Log.e("TAG","123");卻可以
請問是我寫的code哪裡有問題呢
-
畫面布局只有兩個btn跟Textview
-
  1. import java.util.Calendar;
  2. import android.R.string;
  3. import android.app.Activity;
  4. import android.app.AlarmManager;
  5. import android.app.DatePickerDialog;
  6. import android.app.Dialog;
  7. import android.app.PendingIntent;
  8. import android.app.TimePickerDialog;
  9. import android.content.Context;
  10. import android.content.Intent;
  11. import android.os.Bundle;
  12. import android.renderscript.Sampler.Value;
  13. import android.util.Log;
  14. import android.view.View;
  15. import android.view.View.OnClickListener;
  16. import android.widget.Button;
  17. import android.widget.DatePicker;
  18. import android.widget.TextView;
  19. import android.widget.TimePicker;

  20. public class MainActivity extends Activity {
  21. /**Date**/
  22. private Button dateButton;
  23. private Calendar calendar =Calendar.getInstance();
  24. private int mYear = calendar.get(Calendar.YEAR),
  25.                          mMonth = calendar.get(Calendar.MONTH),
  26.                          mDay =  calendar.get(Calendar.DAY_OF_MONTH);
  27. private TextView dateText;
  28. private DatePickerDialog datePickerDialog;

  29. /**Time**/
  30. private Button timeButton;
  31. private int mHour = calendar.get(Calendar.HOUR_OF_DAY),
  32.                  mMin = calendar.get(Calendar.MINUTE);
  33. private TextView timeText;
  34. private TimePickerDialog timePickerDialog;

  35. /****/
  36. int init, init2=0 ;
  37. @Override
  38. public void onCreate(Bundle savedInstanceState) {
  39.     super.onCreate(savedInstanceState);
  40.     setContentView(R.layout.activity_main);
  41.     //Text及Btn
  42.     Button dateBtn = (Button)findViewById(R.id.dateButton);
  43.     dateText = (TextView)findViewById(R.id.dateText);
  44.     Button timeBtn = (Button)findViewById(R.id.timeButton);
  45.     timeText = (TextView)findViewById(R.id.timeText);
  46.     //Date按鈕監聽
  47.     dateBtn.setOnClickListener(new OnClickListener(){
  48.       @Override
  49.       public void onClick(View v){
  50.         showDialog(0);
  51.         datePickerDialog.updateDate(mYear, mMonth, mDay);
  52.       }
  53.     });
  54.     //Time按鈕監聽
  55.     timeBtn.setOnClickListener(new OnClickListener(){
  56.       @Override
  57.       public void onClick(View v){
  58.         showDialog(1);
  59.         timePickerDialog.updateTime(mHour, mMin);
  60.       }
  61.     });

  62. }

  63. @Override
  64. protected Dialog onCreateDialog(int id, Bundle args){
  65.   switch(id)//get showDialog,  ↑id is showDialog
  66.   {
  67.     case 0://Date
  68.             datePickerDialog = new DatePickerDialog(this, new DatePickerDialog.OnDateSetListener() {
  69.             @Override
  70.             public void onDateSet(DatePicker view, int year, int month,int day) {
  71.                 mYear = year;
  72.                 mMonth = month+1;
  73.                 mDay = day;
  74.                 init = 1;
  75.                 date();
  76.             }
  77.         }, mYear,mMonth, mDay);
  78.         return datePickerDialog;
  79.         
  80.     case 1://Time
  81.             timePickerDialog = new TimePickerDialog(this, new TimePickerDialog.OnTimeSetListener() {
  82.                         @Override
  83.                         public void onTimeSet(TimePicker view, int hourOfDay, int minute) {
  84.                                 // TODO Auto-generated method stub
  85.                 mHour = hourOfDay;
  86.                 mMin = minute;
  87.                 init = 0;
  88.                 date();
  89.                         }
  90.         }, mHour,mMin, false);
  91.         return timePickerDialog;
  92.   }
  93.   
  94.   return null;
  95. }

  96. protected void date() {
  97.         // TODO Auto-generated method stub
  98.         if (init == 1) {
  99.          dateText.setText("你設定的日期為"+mYear+"年"+mMonth+"月"+mDay+"日");
  100.          init2 = init2+1;
  101.         } else if ( init == 0) {
  102.                 timeText.setText("你設定的時間為"+mHour+":"+mMin);
  103.          init2 = init2+1;
  104.         }
  105.         if (init2 ==2) {
  106.                 Log.e("ready","start");
  107.                 Log.e("ok",String.valueOf(mYear)+"年"+String.valueOf(mMonth)+"月"+String.valueOf(mDay)+"日"
  108.                                 +String.valueOf(mHour)+":"+String.valueOf(mMin));
  109.                 /****/
  110.                 Calendar cal = Calendar.getInstance();
  111.                 cal.set(mYear,mMonth,mDay,mHour,mMin);
  112.                 Intent intent = new Intent();
  113.                 intent.setClass(this, AlarmReceiver.class);
  114.                 PendingIntent pending = PendingIntent.getBroadcast(this, 0, intent, 0);
  115.                 AlarmManager alarm = (AlarmManager) this.getSystemService(Context.ALARM_SERVICE);
  116.                 alarm.set(AlarmManager.RTC_WAKEUP, cal.getTimeInMillis(), pending);
  117.                 init2 = 0;
  118.                 Log.e("initing","init ok");

  119.         }
  120. }



  121. }
複製代碼

  1. package com.showview;


  2. import android.content.BroadcastReceiver;
  3. import android.content.Context;
  4. import android.content.Intent;
  5. import android.util.Log;

  6. public class AlarmReceiver extends BroadcastReceiver {       
  7.     private static final String TAG = "from Activity";

  8.     @Override
  9.     public void onReceive(Context ctx, Intent intent) {
  10.         Log.d(TAG, "123");
  11.     }
  12. }
複製代碼
「用Android 就來APK.TW」,快來加入粉絲吧!
Android 台灣中文網(APK.TW)
收藏收藏 分享分享 分享專題
用Android 就來Android 台灣中文網(https://apk.tw)
回覆

使用道具 舉報

您需要登錄後才可以回帖 登錄 | 註冊

本版積分規則