2014-10-26 21 views
6

Trong lớp hoạt động của tôiScheduling báo động mỗi 2 phút android

protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     AlarmManager alarmManager=(AlarmManager) getSystemService(ALARM_SERVICE); 
     Intent intent = new Intent(MainActivity.this, AlarmReceiver.class); 
     PendingIntent pendingIntent = PendingIntent.getBroadcast(MainActivity.this, 0, intent, 0); 
     alarmManager.setRepeating(AlarmManager.ELAPSED_REALTIME_WAKEUP,System.currentTimeMillis(),2000, pendingIntent); 

    } 

Và chức năng onrecieve của tôi trong alarmreciever lớp

 @Override 
    public void onReceive(Context context, Intent intent) 
     { 
     //get and send location information 
     System.out.println("fired"); 
     } 

Tôi đang sử dụng Nexus 4, phiên bản kitkat. Tôi không thấy bất kỳ chức năng đánh lừa nào được bắn mỗi 2 phút.nthg đang diễn ra ... bất kỳ trợ giúp nào? cảm ơn bạn

<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
package="com.example.alarmexample" 
android:versionCode="1" 
android:versionName="1.0" > 
<uses-sdk 
    android:minSdkVersion="8" 
    android:targetSdkVersion="20" /> 

<application 
    android:allowBackup="true" 
    android:icon="@drawable/ic_launcher" 
    android:label="@string/app_name" > 
    <activity 
     android:name=".MainActivity" 
     android:label="@string/app_name" > 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 

      <category android:name="android.intent.category.LAUNCHER" /> 
     </intent-filter> 
    </activity> 
    <receiver 
     android:name="com.example.AlarmExample" 
     android:exported="false" > 
    </receiver> 
</application> 
</manifest> 

tôi chỉ cần đặt manifest của tôi là tốt. ................................................

+0

bạn có đặt tên lớp người nhận báo thức trong tệp kê khai của mình không? – hister

+0

có. ........... – user3278732

Trả lời

8

Trong tập hợp của bạnPhức hồi tiếp, bạn nên sử dụng SystemClock.elapsedRealTime() cho ELAPSED_REALTIME_WAKEUP. Ngoài ra, bạn cần thay đổi 2000 thành 2 * 60 * 1000 để chỉ định khoảng thời gian của bạn.

alarmManager.setRepeating(AlarmManager.ELAPSED_REALTIME_WAKEUP, 
          SystemClock.elapsedRealtime(), 
          2*60*1000, 
          pendingIntent); 

Hy vọng điều này sẽ hữu ích.

tham khảo: ELAPSED_REALTIME_WAKEUP

EDIT: Trong file manifest của bạn, có một lỗi đánh máy trong tên người nhận của bạn. Thay đổi ".AlarmReciever" thành ".AlarmReceiver".

<receiver 
    android:name=".AlarmReceiver" 
    android:exported="true" > 
</receiver> 
+0

nó không hoạt động, dự án của tôi là ở đây https://www.wetransfer.com/downloads/8529755c58f64f5f9f5767be664893ce20141026134802/1395db476afa6c786d656162a5c140f420141026134802/5beafe nếu bạn muốn kiểm tra nó – user3278732

+0

@ user3278732 Tôi đã kiểm tra dự án của bạn và phát hiện ra một lỗi đánh máy trong tệp kê khai của bạn. Tôi vừa cập nhật câu trả lời của mình. – SLee

+0

cảm ơn bạn rất nhiều, đã giải quyết được tình huống. bây giờ đang làm việc về một vấn đề khác. trong Gingerbread người quản lý báo động đang bắn nhanh chóng, trong KitKat bắn của nó sau 32 giây .. khi tôi làm điều này 10 * 60 * 1000 – user3278732

3

trong mã của bạn, bạn đặt chuông theo cách này

alarmManager.setRepeating(AlarmManager.ELAPSED_REALTIME_WAKEUP, 
      System.currentTimeMillis(), 
      2000, 
      pendingIntent); 

thời gian là sai lầm khi chạy mỗi hai phút bạn nên viết:

alarmManager.setRepeating(AlarmManager.ELAPSED_REALTIME_WAKEUP, 
      0, 
      1000 * 60 * 2, 
      pendingIntent); 

EDIT

cho cấp phát bộ cờ ý định của bạn PendingIntent.FLAG_UPDATE_CURRENT và xem có thay đổi gì không.

PendingIntent alarmIntent = PendingIntent.getBroadcast(context, 
      0, 
      intent, 
      PendingIntent.FLAG_UPDATE_CURRENT); 
+0

đặt lặp lại có 4 thông số, không phải 3. – user3278732

+0

Tôi đã chỉnh sửa câu trả lời – hister

+0

Tôi đặt mã ở đây https://www.wetransfer.com/downloads/8529755c58f64f5f9f5767be664893ce20141026134802/1395db476afa6c786d656162a5c140f420141026134802/5beafe không làm việc. ứng dụng đơn giản, chỉ cần in ra báo động – user3278732

Các vấn đề liên quan