2013-01-18 27 views
6

काम नहीं कर रहा है वर्तमान में मैं ब्रॉडकास्ट रिसीवर एप्लिकेशन पर काम कर रहा हूं, जिसमें मैं अलार्म बना रहा हूं जो सेकंड में प्रवेश करने के बाद एक संदेश प्रदर्शित करना चाहिए। मैंने RTC_WAKEUP का उपयोग किया, जिसका अर्थ है कि डिवाइस चालू होने पर यह संदेश प्रदर्शित करना चाहिए और डिवाइस को चालू करना है और डिवाइस बंद होने पर संदेश प्रदर्शित करना है। मेरी समस्या यह है कि यह आरटीसी_वैकअप मेरे डिवाइस पर नहीं है लेकिन यह डिवाइस चालू होने पर ठीक से काम कर रहा है। मैं अपने आवेदन के कोड चिपक रहा हूँ। मेरे आवेदन में दो कक्षाएं हैं।RTC_WAKEUP

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(); 
    } 
} 

और अन्य

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 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

जहां से इस startAlert (देखें देखें) बुला रहे हैं? – krishna

उत्तर

2

RTC_WAKEUP स्क्रीन पर स्विच नहीं होगा, यह सब है करता है तुमको cpu ताकि आपके काम किया जाता है जाग। स्क्रीन चालू होने के लिए आपको एक पूर्ण वाकेलॉक हासिल करने की आवश्यकता है। (एक BroadcastReceiver यह है) com.android.deskclock.alarms.AlarmStateManager

अपने onReceive समारोह में goAsync इस्तेमाल किया():

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

मैंने इस कोड का उपयोग किया लेकिन अब मेरा आवेदन क्रैश हो रहा है। – Prinkal

+0

अगर आप पोस्ट कर सकता दुर्घटना लॉग ऑन – nandeesh

+0

हाँ, मैं जोड़ लिया है की अनुमति आपको अनुमति कहा, अपनी उपयोगी है। – Prinkal

1

क्या आपके पास अपने मैनिफेस्ट में अनुमति है?

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

मैंने पहले से ही अपने मैनिफेस्ट में अनुमति का उपयोग किया है। – Prinkal

0

अपने प्रकट को ठीक करें।

<receiver android:name="MyBroadcastReceiver" > 

के बजाय आप की जरूरत:

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

मैं .MyBroadcastReceiver में MyBroadcastReceiver बदल गया है, लेकिन यह मेरे लिए काम नहीं कर रहा, मेरी समस्या एक ही है। – Prinkal

0

गूगल DeskClock एप्लिकेशन की जांच की गई

@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(); 
     } 
    }); 
} 

आप चाहिए उसके साथ एक शॉट ले लो।

 संबंधित मुद्दे

  • कोई संबंधित समस्या नहीं^_^