0

この問題に関するほとんどの投稿を読みましたが、まだ実装を機能させることができません。助けていただけますか?

基本的に、Activity 内から BroadcastReceiver を開始して、10 秒ごとに何かを実行したいと考えています。だから私はアラームを設定しましたが、コードは実際には「onReceive()」に到達しません...私のコードと他の例との違いを見つけることができません。見ていただけますか?

また、マニフェスト ファイルにレシーバーを入れていないことにも言及してください。これは、アクティビティー内で登録する必要がないことを理解しているためです。

ありがとうございました!

package alarm.in;

import alarm.in.activity.R;
import android.app.Activity;
import android.app.AlarmManager;
import android.app.PendingIntent;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.os.Bundle;
import android.os.PowerManager;
import android.util.Log;
import android.view.View;
import android.widget.TextView;

public class activityActivity extends Activity {

    private Alarm alarm;  


    private static final String TAG = "AlarmInActivity";
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        alarm = new Alarm();           
    }


    public void onResume() {
        super.onResume();
        IntentFilter filter = new IntentFilter();
        filter.addAction(ALARM_SERVICE);
        registerReceiver(alarm, filter);
    }

    public void onPause() {
        super.onPause();
        this.unregisterReceiver(alarm);
    }

    public void setAlarm(View view){
        alarm.SetAlarm(getBaseContext(),1,10);             
    }

    public void cancelAlarm(View view){     
        alarm.CancelAlarm(getBaseContext());                    
    }


    private class Alarm extends BroadcastReceiver {
        @Override
        public void onReceive(Context context, Intent intent) {
            PowerManager pm = (PowerManager) context.getSystemService(Context.POWER_SERVICE);
            PowerManager.WakeLock wl = pm.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "");
            wl.acquire();

            Log.d(TAG, "Alarm Worked!");     
            wl.release();
        }

        public void SetAlarm(Context context, int minutes, int seconds)
         {
             AlarmManager am=(AlarmManager)context.getSystemService(ALARM_SERVICE);

             Intent i = new Intent(context, Alarm.class);
             PendingIntent pi = PendingIntent.getBroadcast(context, 0, i, 0);
             am.setRepeating(AlarmManager.RTC_WAKEUP, System.currentTimeMillis(), 1000 * seconds * minutes, pi); // Millisec * Second * Minute
             Log.d(TAG, "AlarmSet");         
         }

         public void CancelAlarm(Context context)
         {
             Intent intent = new Intent(context, Alarm.class);
             PendingIntent sender = PendingIntent.getBroadcast(context, 0, intent, 0);
             AlarmManager alarmManager = (AlarmManager) context.getSystemService(ALARM_SERVICE);
             alarmManager.cancel(sender);
             Log.d(TAG, "AlarmCancel");    
         }

    }


}
4

1 に答える 1

3

受信者を登録しましたが、受信者にアクションを送信するのを忘れました:

Intent intent = new Intent(ALARM_SERVICE);
sendBroadcast(intent);
于 2012-10-23T13:59:51.563 に答える