2013-01-18 67 views
6

Hiện tại tôi đang làm việc trên ứng dụng Broadcast Receiver, trong đó tôi đang tạo Báo thức sẽ hiển thị thông báo sau khi chúng tôi nhập giây. Tôi đã sử dụng RTC_WAKEUP, có nghĩa là nó sẽ hiển thị thông báo khi thiết bị bật và nó được cho là bật thiết bị và sau đó hiển thị thông báo khi thiết bị tắt. VẤN ĐỀ CỦA TÔI R THNG RTC_WAKEUP KHÔNG NÊN TRÊN THIẾT BỊ CỦA TÔI nhưng nó hoạt động bình thường khi thiết bị đang bật. tôi đang dán mã của ứng dụng của tôi. Trong ứng dụng của tôi có hai lớp.RTC_WAKEUP hiện không hoạt động

MainActivity

public class MainActivity extends Activity { 


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

    public void startAlert(View view) { 
     EditText text = (EditText) findViewById(R.id.time); 
     int i = Integer.parseInt(text.getText().toString()); 
     Intent intent = new Intent(this, MyBroadcastReceiver.class); 
     PendingIntent pendingIntent = PendingIntent.getBroadcast(this.getApplicationContext(), 23432424, intent, 0); 
     AlarmManager alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE); 
     alarmManager.set(AlarmManager.RTC_WAKEUP, System.currentTimeMillis() 
       + (i * 1000), pendingIntent); 
     Toast.makeText(this, "Alarm set in " + i + " seconds", 
       Toast.LENGTH_LONG).show(); 
    } 
} 

và khác là

MyBroadcastReceiver

public class MyBroadcastReceiver extends BroadcastReceiver { 
     @Override 
     public void onReceive(Context context, Intent intent) { 
     Toast.makeText(context, "Jaago Mohan Pyarreee!!!!.", 
      Toast.LENGTH_LONG).show(); 
     } 
    } 

Manifest

<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
    package="com.example.broadcastreceiver" 
    android:versionCode="1" 
    android:versionName="1.0" > 

    <uses-sdk 
     android:minSdkVersion="8" 
     android:targetSdkVersion="15" /> 
    <uses-permission android:name="android.permission.VIBRATE"/> 
    <uses-permission android:name="android.permission.WAKE_LOCK" /> 

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

       <category android:name="android.intent.category.LAUNCHER" /> 
      </intent-filter> 
     </activity> 
     <receiver android:name=".MyBroadcastReceiver" > 
     </receiver> 
    </application> 

</manifest> 
+0

bạn đang gọi hàm này ở đâu startAlert (Chế độ xem) từ? – krishna

Trả lời

2

RTC_WAKEUP sẽ không bật màn hình, tất cả nó là thức dậy ngươi cpu để công việc của bạn được thực hiện. Để màn hình được bật, bạn cần có một bộ khóa ĐẦY ĐỦ để có được.

PowerManager pm = (PowerManager)mContext.getSystemService(Context.POWER_SERVICE); 
PowerManager.WakeLock wl = pm.newWakeLock(PowerManager.SCREEN_DIM_WAKE_LOCK 
             | PowerManager.ON_AFTER_RELEASE, 
             "wakeup"); 
wl.acquire(); 
// ... do work... 
//show toask 
wl.release(); 
+0

tôi đã sử dụng mã này nhưng giờ ứng dụng của tôi đang gặp sự cố. – Prinkal

+0

bạn đã thêm quyền, hữu ích nếu bạn có thể đăng nhật ký sự cố – nandeesh

+0

có, tôi đã thêm quyền. – Prinkal

1

Bạn có quyền trong Tệp kê khai của mình không?

<uses-permission android:name="android.permission.WAKE_LOCK" /> 
+0

tôi đã sử dụng quyền trong tệp kê khai của mình. – Prinkal

0

Khắc phục tệp kê khai của bạn. Thay vì

<receiver android:name="MyBroadcastReceiver" > 

bạn cần:

<receiver android:name=".MyBroadcastReceiver" > 
+0

i thay đổi MyBroadcastReceiver vào. MyBroadcastReceiver, nhưng điều này không làm việc cho tôi, vấn đề của tôi là như nhau. – Prinkal

0

Kiểm tra các ứng dụng google DeskClock: com.android.deskclock.alarms.AlarmStateManager (đó là một BroadcastReceiver)

Trong chức năng onReceive của nó sử dụng goAsync():

@Override 
public void onReceive(final Context context, final Intent intent) { 
    final PendingResult result = goAsync(); 
    final PowerManager.WakeLock wl = AlarmAlertWakeLock.createPartialWakeLock(context); 
    wl.acquire(); 
    AsyncHandler.post(new Runnable() { 
     @Override 
     public void run() { 
      handleIntent(context, intent); 
      result.finish(); 
      wl.release(); 
     } 
    }); 
} 

Bạn nên chụp ảnh với điều đó.

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