2016-03-22 13 views
0

アラームクロックを作りたいと思います。私はそれをやったが、それはデバイスが再起動されていない場合にのみ機能します。デバイスが再起動されたかどうかに関係なく、アラームを受信するにはどうすればよいですか? それは私がアラーム時刻を設定する方法は次のとおりです。そのデバイスが再起動したにもかかわらず、アラームを受信しました

AlarmManager am = (AlarmManager) getSystemService(ALARM_SERVICE); 
am.set(AlarmManager.RTC_WAKEUP,calendar1.getTimeInMillis(),pi1); 
+0

あなたはそれを行うために 'BacgroundService'と「自動ロード」にあなたのサービスを作成する必要があります再起動。 – Aspicas

+0

@aspicasもっと広く説明できますか?あなたは警報を発するサービスを始めたいと思っています、そうですか? –

+0

はい、最初のオプションは、あなたがデバイスを電源オンしたときに開いたマニフェストのレシーバで 'bacgroundService'を作成する必要があります。後でbackgrounServiceで-larmManager'を使用してコードを入力する必要があります。 – Aspicas

答えて

0

これは、私は似たような状況にしようとしたものです:

は、あなたの放送受信機は、システムの再起動を検出してください。これで、システムが再起動するとすぐに、ブロードキャストレシーバーがそれを検出して、タスクを実行できます。私のプロジェクトでは、私のプロジェクトでSQLiteデータベースにクエリを実行し、実行されていないすべてのアラームを取得し、必要に応じてそれらを実行し、同じようにデータベースを更新しました。

あなたはそれに類似したものを試すことができます。アラームを取得するための

コード:

次の属性を使用してブロードキャストレシーバーを追加します。

<receiver android:name=".MyBroadcastReceiver"> 
     <intent-filter>  
      <action android:name="android.intent.action.BOOT_COMPLETED"/> 
      <category android:name="android.intent.category.DEFAULT" /> 
     </intent-filter> 
    </receiver> 

このBroadcastReceiverは、あなたのAndroidデバイスの再起動を検出し、BroadcastReceiverのonReceive()メソッドを実行します。 onReceive()メソッドでは、条件に基づいてすべてのアラームを取得し、さらに処理します。次のリンクを通過するSQLiteデータベースからレコードまたはタプルを取得する方法についてさらに学ぶために

http://developer.android.com/training/basics/data-storage/databases.html#ReadDbRow

+0

さて、今は1つのアラームしか設定できません(一度に作業することはできません)私に何を提案できますか? –

+0

1つのアラームだけが必要な場合は、上記と同じ方法を共有設定で使用できます。 –

+0

複数のアラームを使用する場合は、ユーザーがアラームを設定するとすぐに、PendingIntentの要求コードとアラームの時刻と日付の詳細をSQLiteデータベースに保存し、そこからすべての情報を処理します。 –

関連する問題