アンドロイド:午後のアラーム形式

アラームを設定するためにalarmmangerクラスのsetメソッドを使用しています。私  ユーザーからの入力をタイムピッカーダイアログを介して  特定の時間と分を設定するとalarm.alarmはうまく動作しますが  アプリケーションはam/pmロジックに従っていません。私がアラームを設定した場合  午前10時31分です。システム時間は午後10時30分です。午前10時31分に警報が鳴ります。午前10時30分です。理由は何ですか?

Calendar time = Calendar.getInstance();
        time.set(Calendar.HOUR, hourOfDay);
        time.set(Calendar.MINUTE, minute);
        time.set(Calendar.SECOND, 5);
        //time.set(Calendar.AM_PM);



        AlarmManager alarmMgr = (AlarmManager)getSystemService(Context.ALARM_SERVICE);
        Intent intent = new Intent(this, AlarmReceiver.class);
        PendingIntent pendingIntent = PendingIntent.getBroadcast(this, 0, intent, 0);

        alarmMgr.set(AlarmManager.RTC_WAKEUP,time.getTimeInMillis(), pendingIntent);
0
関連するコードを投稿してください。
追加された 著者 st0le,
これについてお勧めします。
追加された 著者 Asad Iqbal,

3 答え

SimpleDateFormatまたはDateFormatクラスを使用して時刻を設定する必要があります。これは、日時文字列に基づいて日付を与え、getTimeを使用してその値を取得し、setメソッドでアラームに設定します。

または、別の方法でアラーム時刻を取得し、その時刻が午前であるか pm であるかを確認し、この属性を時間と日付でカレンダーオブジェクトに設定し、カレンダーからミリ秒値alarm.set()メソッドに設定します。

あなたがいくつかのアイデアや提案を得ることを願って

編集

SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy hh:mm:ss a");//this is you format
Date d = sdf.parse("19/12/2011 03:47:00 pm");//this string getting you from your timepicker
Intent myIntent = new Intent(youractivity.this, AlarmService.class);
PendingIntent pendingIntent = PendingIntent.getBroadcast(youractivity.this, 0, myIntent, PendingIntent.FLAG_ONE_SHOT);
am.set(AlarmManager.RTC_WAKEUP, d.getTime(), pendingIntent);

注:tryとcatchのブロック解析パーツに入れておくと、解析時間中にエラーが発生する可能性があります

1
追加された
編集された回答を確認する
追加された 著者 Pratik,
提案していただきありがとうございます。あなたは最初の提案のためのコードを書くことができます。だから私ははっきり理解する。
追加された 著者 Asad Iqbal,

私はこの方法を使ってアラームを設定しました:

    /**
     * Set the Alarm
     *
     * @param context  the activity context
     * @param id       the alarm ID for this app
     * @param hour     the alarm hour
     * @param minute   the alarm minute
     * @param timeZone the timezone am = Calendar.AM or pm = Calendar.PM
     */
    public static void setAlarm(Context context, int id, int hour, int minute, int timeZone) {
        AlarmManager alarm = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);

        Calendar calendar = Calendar.getInstance();
        calendar.setTimeInMillis(System.currentTimeMillis());
        calendar.set(Calendar.HOUR, hour);
        calendar.set(Calendar.MINUTE, minute);
        calendar.set(Calendar.AM_PM, timeZone);

        Intent intent = new Intent(context, PopupActivity.class);
        PendingIntent pIntent = PendingIntent.getActivity(context, id, intent, 0);
        alarm.setInexactRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), 1000 * 60 * 10, pIntent);
    }

For the timezone parameter use either am = Calendar.AM or pm = Calendar.PM

0
追加された

次の行を変更します。

time.set(Calendar.HOUR, hourOfDay);

time.set(Calendar.HOUR_OF_DAY, hourOfDay);
0
追加された