3

私の質問:特定の時間にアプリケーションに何かを実行させるにはどうすればよいですか?特に、技術的に実行されていない場合(それは可能です)。ベストプラクティス?イベントリスナー?等...

拡張:私はAndroid開発にかなり慣れていません。事前にスケジュールされた時間に電話のいくつかの機能を制御するスケジューリングアプリケーションを構築したいと思います。たとえば、アプリで3時にリングからバイブレーションに変更するようにスケジュールし、現在は2:00になっているとします。では、その変更を実行するために3:00になるシステム時刻をキャプチャするにはどうすればよいですか?

これ以上の情報が役立つかどうかはわかりません。私は実際に開発に取り掛かる前にこれを設計しようとしているので、アプリケーションがバックグラウンドで実行されているか、まったく実行されていないときにイベントリスナーを実行する方法とベストプラクティスを探しています(それは可能です)。

4

2 に答える 2

6

pendingIntent次のBroadCastReceiverようにを使用できます。

Calendar cal = Calendar.getInstance();
Intent activate = new Intent(context, Alarm.class);
AlarmManager alarms ;
PendingIntent alarmIntent = PendingIntent.getBroadcast(context, 0, activate, 0);
alarms = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
cal.set(Calendar.HOUR_OF_DAY, hour);
cal.set(Calendar.MINUTE, minute);
cal.set(Calendar.SECOND, 00);
alarms.set(AlarmManager.RTC_WAKEUP, cal.getTimeInMillis(), alarmIntent);

次に、BroadCastレシーバー:

public class Alarm extends BroadcastReceiver {

    @Override
    public void onReceive(Context context, Intent intent) {
      MediaPlayer mp = MediaPlayer.create(context, R.raw.ferry_sound);
      mp.start();
      PowerManager pm = (PowerManager)     context.getSystemService(Context.POWER_SERVICE);
      PowerManager.WakeLock wl = pm.newWakeLock(PowerManager.FULL_WAKE_LOCK, "My Tag");
      wl.acquire();
      Vibrator vibrator = (Vibrator) context.getSystemService(Context.VIBRATOR_SERVICE);
      long[] s = { 0, 100, 10, 500, 10, 100, 0, 500, 10, 100, 10, 500 };
      vibrator.vibrate(s, -1);
   }
}

AndroidManifest.xmlこれらの権限をあなたの:に含めることを忘れないでください

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

およびアプリケーションタグのブロードキャストレシーバー:

<receiver  android:process=":remote" android:name="Alarm" />
于 2012-09-19T20:41:54.573 に答える
0

権限を忘れないでください:

    ....
    <uses-permission android:name="android.permission.WAKE_LOCK"/>
    <uses-permission android:name="android.permission.VIBRATE"/>
    ....
    AND broadcast receiver in application tag:        
    <receiver android:process=":remote" android:name="Alarm" />
  ....

ありがとう

于 2014-10-05T21:39:30.947 に答える