2011-07-17 6 views
3

私は、アラームが消えたときに警告ダイアログを表示したいと思います。ここで私はこれまでのところです。私はそれを正しくやっているかどうかわからない。alertDialogでアラームを表示しますか?

} 
@Override 
void doTaskWork(Intent intent){ 
    String taskId = intent.getStringExtra(TaskHelper._id); 

    NotificationManager mgr = (NotificationManager)getSystemService(NOTIFICATION_SERVICE); 
    Intent notificationIntent = new Intent(this, TaskDetails.class); 
    notificationIntent.putExtra(TaskHelper._id, taskId); 
    PendingIntent pi = PendingIntent.getActivity(this, 0, notificationIntent, PendingIntent.FLAG_ONE_SHOT); 
    Notification note = new Notification(R.drawable.stat_sys_warning,); 

} 

}

答えて

2

アラーム:

あなたはときにアラーム火災欲しいものを駆動し、保留中の意図をスケジュールすることができます。処理は次のとおりです。

アラームを発生させる頻度を決定します。あなたは正確な時刻、今からの特定の時間(10秒で..)、または一定の間隔での特定の繰り返し(x秒/分/毎秒)で発射することができます。繰り返し処理を開始するための特定の時間を設定することもできます。間隔は可変ではありません。次に、1回のショットをして、次回に別のアラームを設定する必要があります。時間形式(ミリ秒、RTC、...)を決定するフラグを設定することもできます。最後に、アラームを発してデバイスを起床させるか、スリープ状態にして、次回の電話が起きたときに予定を立てることができます。

今、予定されているものについて。保留中の予定が予定されています。保留中の意図は、ブロードキャスト受信機を起動させる。毎日深夜1分にタイマーを鳴らすために使用するコードのクリップがいくつかあります。 (毎日更新する必要があるウィジェットを更新します。)

Intent intent = new Intent(context, DaysReceiver.class); 
    PendingIntent receiverIntent = PendingIntent.getBroadcast(context, 
      DaysConstants.UPDATE_ALARM, 
      intent, PendingIntent.FLAG_UPDATE_CURRENT); 
    // Schedule the alarm! 
    AlarmManager am = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE); 
    am.cancel(receiverIntent); 
    if (cancelAlarm) { 
     MyLog.d(TAG, "setAlarm cancel"); 
     return; 
    } 
    AlarmManager am = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE); 
    JodaTime jtime = new JodaTime(); 
    am.set(AlarmManager.RTC_WAKEUP, jtime.afterMidnight(), receiverIntent); 
    //am.setRepeating(AlarmManager.RTC_WAKEUP, jtime.nowPlusMillis(30 * 1000), 
    // 30 * 1000,  receiverIntent); 
    MyLog.d(TAG, "setAlarm set"); 
} 

JodaTimeクラスは日付と時刻の計算を行います。上記のafterMidnight()ビットは、今晩深夜1分後に戻ります。このルーチンは、未解決のアラームをキャンセルするために使用することができます。

受信機は通常の放送受信機であり、他の放送受信機で行うことができるものは何でもできます。 (普通のものをマニフェストに入れておくことを忘れないでください)。

ここでは、私は輸入品を使用していないレシーバーです。これはかなり簡単です。ホームスクリーン上にあるすべてのウィジェットをつかむ更新ルーチンは、ウィジェットプロバイダの静的関数です。ウィジェットの設定とウィジェットプロバイダの2つの場所から駆動されるため、クラスです。タイマは24時間ごとに再スケジュールされます。起動時にプロバイダの更新が再起動される(起きているのは、新しい日の計算が実行され、ウィジェットの表示が更新されていることだけです。)コードを落としてstartActivityを入れることができます。 PendingIntent.FLAG_UPDATE_CURRENTを指定すると、複数のインテントが誤ってスタックアップすることはありません。

public class DaysReceiver extends BroadcastReceiver { 

static String TAG = "DaysReceiver"; 

@Override 
public void onReceive(Context context, Intent intent) { 
    MyLog.d(TAG, "onReceive"); 
    updateWidgets(context); 
} 

private void updateWidgets(Context context) { 
    MyLog.d(TAG, "updateWidgets"); 
    AppWidgetManager appWidgetManager = AppWidgetManager.getInstance(context); 
    ComponentName componentName = new ComponentName(context, DaysProvider.class); 
    int[] appWidgetIds = appWidgetManager.getAppWidgetIds(componentName); 
    final int N = appWidgetIds.length; 
    if (N < 1) { 
     MyLog.d(TAG, "No widgets"); 
     return; 
    } 
    for (int i = 0; i < N; i++) { 
     MyLog.d(TAG, "Update widget " + Integer.toString(appWidgetIds[i])); 
     DaysProvider.updateAppWidget(context, appWidgetManager, appWidgetIds[i]); 
    } 
} 

}

希望は私はあまりにrambledていないが、私は戻っていくつかの他のビジネスに取得するために急いでね。私は実際に投稿を編集する時間がありません。これが助けてくれることを願って...

2

あなたが本当に通知が必要ですか?なぜアラーム通知を行い、消えるような活動をしないのですか?あなたはアラームを鳴らすことができ、電話を振動させることができます。

<activity android:name=".MyAlarmResponse" 
     android:theme="@android:style/Theme.Dialog"> 
    </activity> 

それは、ダイアログのように見える必要はありません:あなたはまだしたい場合でも、ダイアログのように見えるために、次のテーマを使用し、マニフェストでは...

Intent intent = new Intent(context.MyAlarmResponse); 
    intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
    intent.putExtra("REASONFORALARM", "What ever you want"); 
    context.startActivity(intent); 

を通知します。フルスクリーンディスプレイ、アニメーション、振動、およびサウンドで完全なコート紙プレスを行うことができます。ユーザーがキャンセルキーを押すと、すべてが消えます。

+0

ありがとうthats正確に何を探しています。この周辺のどこかの例を知っていますか?アラームチュートリアルの例も示しています。 – yoshi24

関連する問題