私はこの方法でそれを行いましたが、私にとってはうまくいきました。
クラスを作成し、それをScheduledServiceのように呼び出してIntentServiceを拡張します。このクラスでは、アラームが鳴ったときにやりたいことを行います。
public class ScheduledService extends IntentService {
public ScheduledService() {
super("My service");
}
@Override
protected void onHandleIntent(Intent intent) {
//Do something, fire a notification or whatever you want to do here
Log.d("debug", "Ring Rind !");
}
}
次に、アクティビティでアラームを開始するには、次を使用します。
AlarmManager mgr = (AlarmManager) YourActivity.getSystemService(Context.ALARM_SERVICE);
Intent i = new Intent(YourActivity, ScheduledService.class);
PendingIntent pi = PendingIntent.getService(YourActivity, 0, i, 0);
mgr.set(AlarmManager.ELAPSED_REALTIME_WAKEUP, SystemClock.elapsedRealtime() + PERIOD, pi);
アラームを鳴らしたいミリ秒後の期間。
タイマーを停止してアラームをキャンセルするには、次のコマンドを使用します。
if (mgr != null)
mgr.cancel(pi);
最後に、これらすべてを機能させるには、 ScheduledServiceクラスをサービスとして登録する必要があります。マニフェストで、これをアプリケーションに追加します。
<application
... />
...
<service android:name=".ScheduledService" >
</service>
</application>
このようにして、時間になると Android OS がアラームを鳴らします。他のアプリケーションが実行されていても、アプリのプロセスが終了していても。
この助けを願っています。よろしく。
クレイジーなアイデア:アクティビティを作成し、テーマをフルスクリーンに設定します。タイトル バーとアラームを停止するボタンはありません。通知を行う代わりに、そのアクティビティを開始するインテントを作成するだけです。電話がロックされていて迷惑な音が鳴っているときでも、アクティビティの開始時に「これ」が役立つ場合があります。onBackPressed()をオーバーライドして何もしないようにすることもできます。