2014-01-29 4 views
3

나는 broadcasReceiver와 함께 알람 관리자를 사용하려고합니다. 나는 Tutorial: System Services and BroadcastReceiver에 주어진 예제를 사용하려고합니다. 그러나 시간이 끝난 후에 모범을 보았을 때 나는 보여주고 싶은 축복이 없습니다.BroadcastReceiver 및 alarmManager Android

내 주요 활동 :

public class AlarmActivity extends Activity { 


    /** Called when the activity is first created. */ 

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

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


} 

내 브로드 캐스트 리시버 :

public class MyBroadcastReceiver extends BroadcastReceiver{ 
    public void onReceive(Context context, Intent intent) { 
     Toast.makeText(context, "Don't panik but your time is up!!!!.", 
       Toast.LENGTH_LONG).show(); 
     // Vibrate the mobile phone 
     Vibrator vibrator = (Vibrator) context.getSystemService(Context.VIBRATOR_SERVICE); 
     vibrator.vibrate(2000); 
    } 

} 

내 주요 Laout :

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
       android:layout_width="match_parent" 
       android:layout_height="match_parent" 
       android:orientation="vertical" > 

    <EditText 
      android:id="@+id/time" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:hint="Number of seconds" 
      android:inputType="numberDecimal" > 
    </EditText> 

    <Button 
      android:id="@+id/ok" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:onClick="startAlert" 
      android:text="Start Counter" > 
    </Button> 

</LinearLayout> 

과 manifestfile :

코드는 아래 코드에 의해 주어진다
<?xml version="1.0" encoding="utf-8"?> 
<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="18" /> 
    <uses-permission android:name="android.permission.VIBRATE" > 
    </uses-permission> 

    <application 
     android:allowBackup="true" 
     android:icon="@drawable/ic_launcher" 
     android:label="@string/app_name" 
     android:theme="@style/AppTheme" > 
     <activity 
      android:name="com.example.broadcastreceiver.AlarmActivity" 
      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=".MyBroadcastReceiver" > 
     </receiver> 
    </application> 

</manifest> 
,451,515,
+0

메인 페이지가 아닌 실제 튜토리얼에 대한 링크를 업데이트 해 주시겠습니까? 링크없이 언급 한 올바른 예를 찾기가 어렵습니다. – WarrenFaith

+0

@WarrenFaith done – zied

+0

@ user3156767이 작업을 수행 했습니까? 나는 모든 것을 시도했지만, 여전히 내 것은 효과가 없습니다. – Azurespot

답변

3

수신기는 브로드 캐스트 리시버

에서
public class MyBroadcastReceiver extends BroadcastReceiver { 
    // ... 
} 

이 또한 매니페스트 파일에서 수신기 이름이 올바른지 확인 확장해야합니다.

+0

내 패키지 이름이 매니페스트에서 잘못되었습니다. – zied

1

당신의 MyBroadcastReceiver 클래스는 잘못된

public class MyBroadcastReceiver extends BroadcastReceiver 
{ 
@Override 
public void onReceive(Context context, Intent intent) { 
    Toast.makeText(context, "Don't panik but your time is up!!!!.", 
       Toast.LENGTH_LONG).show(); 
     // Vibrate the mobile phone 
     /*Vibrator vibrator = (Vibrator) context.getSystemService(Context.VIBRATOR_SERVICE); 
     vibrator.vibrate(2000);*/  
} 
} 

는 당신이 onReceive() 재정의하는 방법을 를 "브로드 캐스트 리시버 확장"을 추가하고받을 필요가이 코드를 넣어.

0

OnReceive() 메서드를 무시하는 것을 잊어 버렸습니다. 다음과 같이 public void onReceive(Context context, Intent intent)는 브로드 캐스트 리시버의 미리 정의 된 방법입니다, 당신이 그것을 사용하는 wheneven, 당신은

public class MyBroadcastReceiver extends BroadcastReceiver 
{ 
    @Override // You forgot this line 
    public void onReceive(Context context, Intent intent) 
    { 
      Toast.makeText(context, "Don't panik but your time is up!!!!.",Toast.LENGTH_LONG).show(); 
    } 
} 
0

당신은 u는 그에서 onCreate의 방법 anywhere.So 첫 번째 통화를 호출하지 않은 startAlert 기능을 만들었을 @Override해야한다 당신은 축배를 받게됩니다.