2011-01-15 7 views
13

Tôi đã thấy rất nhiều hướng dẫn và đã cố gắng 2 giờ ngay bây giờ, mặc dù có điều gì đó vẫn còn sai. Tôi rất lo lắng bây giờ :) Tôi muốn đặt báo thức, ví dụ: đến 16:25 để đi, nhưng không có gì xảy ra. Tôi có mã này:Android - cách đặt báo thức cho một ngày cụ thể

Calendar cur_cal = new GregorianCalendar(); 
    cur_cal.setTimeInMillis(System.currentTimeMillis()); 

    Calendar cal = new GregorianCalendar(); 
    cal.add(Calendar.DAY_OF_YEAR, cur_cal.get(Calendar.DAY_OF_YEAR)); 
    cal.set(Calendar.HOUR_OF_DAY, 16); 
    cal.set(Calendar.MINUTE, 25); 
    cal.set(Calendar.SECOND, 0); 
    cal.set(Calendar.MILLISECOND, 0); 

    alarmManager.set(AlarmManager.RTC_WAKEUP, cal.getTimeInMillis(), pendingIntent); 

Tôi cũng đã cố gắng này:

cal.set(Calendar.AM_PM, cur_cal.get(Calendar.AM_PM)); 
    cal.set(Calendar.HOUR, 4); 

mục tiêu cuối cùng của tôi là làm cho nó một báo động lặp lại, ví dụ nó sẽ tắt mỗi ngày vào thời gian đã đặt.

Cập nhật 01.17.2011. Vẫn không làm việc. Tôi có mã này:

  Calendar cal = Calendar.getInstance(); 
      cal.set(Calendar.YEAR, 2011); 
      cal.set(Calendar.MONTH, Calendar.JANUARY); 
      cal.set(Calendar.DAY_OF_MONTH, 17); 
      cal.set(Calendar.HOUR_OF_DAY, 16); 
      cal.set(Calendar.MINUTE, 58); 
     cal.set(Calendar.SECOND, 0); 
      cal.set(Calendar.MILLISECOND, 0); 

Tôi cũng đã cố gắng này:

cal.set(Calendar.HOUR, 4); 
cal.set(Calendar.AM_PM, Calendar.PM); 

và điều này:

cal.set(Calendar.HOUR_OF_DAY, 4); 
      cal.set(Calendar.AM_PM, Calendar.PM); 

Trả lời

8
package your.pack.name; 

import java.util.Calendar; 

import android.app.Activity; 
import android.app.AlarmManager; 
import android.app.PendingIntent; 
import android.content.Context; 
import android.content.Intent; 
import android.os.Bundle; 

public class AlarmActivity extends Activity { 
    /** Called when the activity is first created. */ 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 

     Calendar cal = Calendar.getInstance(); 

     cal.setTimeInMillis(System.currentTimeMillis()); 
     cal.clear(); 
     cal.set(2012,2,8,18,16); 

     AlarmManager alarmMgr = (AlarmManager)getSystemService(Context.ALARM_SERVICE); 
     Intent intent = new Intent(this, AlarmReceiver.class); 
     PendingIntent pendingIntent = PendingIntent.getBroadcast(this, 0, intent, 0); 
     // cal.add(Calendar.SECOND, 5); 
     alarmMgr.set(AlarmManager.RTC_WAKEUP, cal.getTimeInMillis(), pendingIntent); 


    } 
} 
+1

guys ... mã hoàn hảo của nó để tạo alaram ... –

+2

tôi thử điều này và tôi gặp lỗi trên dòng này: Intent intent = new Intent (this, AlarmReceiver.class); Những gì có thể là vấn đề ? – Gold

+0

@Gold Ông tạo ra một lớp java. Với tên AlarmReceiver, và nó được thiết lập để gọi lại cho báo động. Bạn phải tạo một trong những của riêng bạn hoặc tạo một cái khác và thay đổi AlarmReceiver thành bất kỳ tên Hoạt động nào của bạn. – tfrascaroli

3

Bạn chưa thiết lập năm trong đối tượng Calendar của bạn.

Ngoài ra, lưu ý rằng new GregorianCalendar() đã đặt giá trị cho ngày và giờ hiện tại.

10

Thông thường, bạn không nên lấy Calendar như bạn làm, có Calendar.getInstance() phương pháp cho rằng:

Calendar cal = Calendar.getInstance(); 

Cung cấp cho bạn một cuốn lịch với tất cả các lĩnh vực thiết lập để ngày hiện tại, sau đó chỉ cần:

cal.set(Calendar.HOUR_OF_DAY, 16); 
cal.set(Calendar.MINUTE, 25); 
cal.set(Calendar.SECOND, 0); 
cal.set(Calendar.MILLISECOND, 0); 

alarmManager.set(AlarmManager.RTC_WAKEUP, cal.getTimeInMillis(), pendingIntent); 
+2

Cảm ơn bạn, công việc của nó hiện đang hoạt động. Nhưng tại sao nó không hoạt động nếu tôi đặt cal.set (Calendar.YEAR, 2011); \t cal.set (Calendar.MONTH, 1); \t cal.set (Lịch.DAY_OF_MONTH, 16); ? – erdomester

+0

@erdomester Sử dụng cal.set (Calendar.MONTH, Calendar.JANUARY) .. '1' cho tháng 2 tôi đoán. –

+0

Vẫn không hoạt động. Tôi đã cập nhật bài đăng chính. – erdomester

5

Mã sau hoạt động hoàn hảo để báo thức. Ngày và giờ tôi đề cập ở đây là: 2012- June- 28, 11:20:00 AM. Và điều quan trọng nhất là, tháng được chỉ định từ 0 t0 11. Có nghĩa là tháng 6 phải được chỉ định bởi 5.

 AlarmManager objAlarmManager = (AlarmManager) getSystemService(Context.ALARM_SERVICE);    
     Calendar objCalendar = Calendar.getInstance(); 
     objCalendar.set(Calendar.YEAR, 2012); 
     //objCalendar.set(Calendar.YEAR, objCalendar.get(Calendar.YEAR)); 
     objCalendar.set(Calendar.MONTH, 5); 
     objCalendar.set(Calendar.DAY_OF_MONTH, 28); 
     objCalendar.set(Calendar.HOUR_OF_DAY, 11); 
     objCalendar.set(Calendar.MINUTE, 20); 
     objCalendar.set(Calendar.SECOND, 0); 
     objCalendar.set(Calendar.MILLISECOND, 0); 
     objCalendar.set(Calendar.AM_PM, Calendar.AM);   

     Intent alamShowIntent = new Intent(this,AlarmActivity.class); 
     PendingIntent alarmPendingIntent = PendingIntent.getActivity(this, 0,alamShowIntent,0); 

     objAlarmManager.set(AlarmManager.RTC_WAKEUP,objCalendar.getTimeInMillis(), alarmPendingIntent); 
+0

tôi sẽ cố gắng sử dụng cái này không. : D @Jomia – gumuruh