3

私は現在Android用のアラームアプリケーションに取り組んでいます(ええ、私は私だけではないことを知っています)。私はAndroid開発にかなり慣れていませんが、アプリのコアを完成させることができました。必要なのは1つだけです。(xyz時に)アラームを設定できるようにし、アラームが鳴ったら、電話がスリープ状態であっても(明らかにオフではない)アクティビティを開始し、残りは完了します。

今度は開発者ガイドを読んでください。BroadcastReceiverを使用してアクティビティを開始するようにintentSenderを使用する必要があると思いますが、少なくともアイデアを得るための例や同様の投稿がどこにあるかわかりません。

現在、AlarmManagerは実際にアクティビティに目覚めていますが、電話が完全に起動している場合にのみ機能し、スリープ状態の場合、または少なくとも電話のロックが解除されるまでは何も機能しません。

助言がありますか?必要に応じて、コード例を投稿できます。前もって感謝します

アップデート

@Joel返信してくれてありがとう。私は実際にPowerManager.WakeLockについて読んだことがありますが、その方法をリダイレクトしてくれてうれしいです。さて、これは私が受信活動のために思いついたものです(それは間違っているかもしれませんが、私に耐えてください)

public class OnAlarmActivity extends Activity {

    MediaPlayer mpAlarm;
    MediaPlayer mpButton;
    PowerManager.WakeLock wl;

    private BroadcastReceiver theReceiver = new BroadcastReceiver() {
        @Override
        public void onReceive(Context context, Intent intent) {
            PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE);
            PowerManager.WakeLock wl = pm.newWakeLock(PowerManager.FULL_WAKE_LOCK, "My Tag");
            wl.acquire();
        }
    };

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        requestWindowFeature(Window.FEATURE_NO_TITLE);
        setContentView(R.layout.on_alarm);

        mpAlarm = MediaPlayer.create(this, R.raw.filename);
        mpAlarm.start();
        mpButton = MediaPlayer.create(this, R.raw.buttonfilename);


        ImageView imgForAlarmScreen= (ImageView)findViewById(R.id.oftheimage);
        Animation myFadeInAnimation = AnimationUtils.loadAnimation(this, R.anim.fadein);
        imgForAlarmScreen.startAnimation(myFadeInAnimation); //animation for ImageView

        Button bNextActivity = (Button)findViewById(R.id.ofthebutton);
        bNextActivity.setOnClickListener(new View.OnClickListener() {
            public void onClick(View v) {
                mpButton.start();
                startActivity(new Intent("com.myapps.otheractivity"));
            }
        });
    }

    @Override
    protected void onStart() {
        // TODO Auto-generated method stub
        super.onStart();
    }

    @Override
    protected void onResume() {
        // TODO Auto-generated method stub
        super.onResume();
        mpAlarm.start();
    }

    @Override
    protected void onPause() {
        // TODO Auto-generated method stub
        super.onPause();
        mpAlarm.pause();
    }

    @Override
    protected void onRestart() {
        // TODO Auto-generated method stub
        super.onRestart();
        mpAlarm.start();
    }

    @Override
    protected void onStop() {
        // TODO Auto-generated method stub
        super.onStop();
        wl.release();
    }

    @Override
    protected void onDestroy() {
        // TODO Auto-generated method stub
        super.onDestroy();
        mpAlarm.release();
    }
}

これで、電話がアクティブ(目覚めている)でない限り、目覚めたり、音が鳴ったりすることはありません。ウェイクロックを効果的に使用する方法についてのアイデアはありますか?

4

1 に答える 1

1

必要なシステムサービスはだと思いますPowerManager.WakeLock。これをグーグルまたはスタックオーバーフローで検索すると、おそらく必要なものが得られます。

于 2011-05-10T12:36:18.700 に答える