2012年1月16日月曜日

AlarmManager.RTC_WAKEUPのwakeup?

AlarmManager.RTC_WAKEUPの説明を見ると、こう書いてあります。

Alarm time in System.currentTimeMillis() (wall clock time in UTC), which will wake up the device when it goes off.

"wake up the device when it goes off."ということは、Alarmをセットすることで、指定時刻に端末の電源をONできるのか?と思い、ググってもよくわからないので調査。

package test.alarm;

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.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;

public class AlarmTestActivity extends Activity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        

        Button button = (Button)findViewById(R.id.alarm);
        button.setOnClickListener(new OnClickListener()
        {

   @Override
   public void onClick(View v) {
    AlarmManager am = (AlarmManager)getSystemService(Context.ALARM_SERVICE);
    Intent intent = new Intent(ACTION_WAKEUP);
    intent.setAction(ACTION_WAKEUP);
    PendingIntent wakeupPendingIntent = PendingIntent.getBroadcast(AlarmTestActivity.this, 0, intent, PendingIntent.FLAG_ONE_SHOT);

    am.set(AlarmManager.RTC_WAKEUP, System.currentTimeMillis() + (61 * 1000), wakeupPendingIntent);
    registerReceiver(alarmReceiver, alarmFilter);
    Log.d("alarm", "set alarm.");
   }
         
        });
    }
 private final BroadcastReceiver alarmReceiver = new BroadcastReceiver()
 {

  @Override
  public void onReceive(Context context, Intent intent) {
   if (intent.getAction().equals(ACTION_WAKEUP))
   {
    Log.d("ALARM", "ACTION_WAKEUP");
   } else {
    assert true;
   }
   
  }
  
 };
    public static final String ACTION_WAKEUP = "wake_up";
 private static final IntentFilter alarmFilter = new IntentFilter();
    static {
     alarmFilter.addAction(ACTION_WAKEUP);
    }
    
}


このコードで、Alarmをセット。端末を起動した状態であれば、ちゃんとアラーム通知が来るのが確認できたので、Alarmのセット→Alarm発火前に電源OFFで試す。

結果、端末起動してくれませんでした。


"wake up the device when it goes off."の"goes off"は、端末のスリープのことみたいですね。残念。

0 件のコメント:

コメントを投稿