日付操作のキャプチャについてご協力をお願いします。記載されているすべてのタイムスタンプはシステム時間であり、インターネット時間ではありません。また、インターネット時間を使用することは一切許可されていません。
基本的に、2 つのタイムスタンプ (日付を含む) があります。1 つは現在のシステム時刻で、もう 1 つはファイルのダウンロード タイムスタンプであるタイムスタンプ データベースから取得された日付です。さらに、私のアプリは 30 日ごとにこのファイルをダウンロードする必要があります
例: TIMESTAMP FROM DB OR LAST DOWNLOAD DATE: 25/02/2012 CURRENT DATE: 15/03/2012 NEXT DOWNLOAD DATE は 27/03/2012 になります。
私の課題は、この 30 日間のウィンドウ内で日付の操作を停止/キャプチャすることです。そのため、ユーザーがアプリが 2012 年 3 月 27 日に更新されることに気付いたとします。ユーザーは日付と時刻の設定に入り、日付を巻き戻し続けます。日付が 2012 年 3 月 27 日になることを決して許さないようにするための時間です。つまり、現在の日付である 2012 年 3 月 15 日を 2012 年 3 月 3 日に巻き戻して、「12 日前に戻った」ことを意味します。
アイデア/提案はありますか?
どんな援助も感謝します!!!
こんにちはクラススタッカー、以下はタイマーを作成しようとする私の試みですが、あなたが提案したようにチェックをどこに置くべきか少しわかりません. タイマーでチェックを実行する必要があると思われる場所に疑似コードを配置しました。
ここに私の AlarmManagerActivity があります:
public class AlarmManagerActivity extends Activity {
private AlarmManagerBroadcastReceiver alarm;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
alarm = new AlarmManagerBroadcastReceiver();
}
@Override
protected void onStart() {
super.onStart();
}
public void startRepeatingTimer(View view) {
Context context = this.getApplicationContext();
if(alarm != null){
alarm.SetAlarm(context);
}else{
Toast.makeText(context, "Alarm is null", Toast.LENGTH_SHORT).show();
}
}
}
そして、これが私のブロードキャストレシーバーです:
public class AlarmManagerBroadcastReceiver extends BroadcastReceiver {
final public static String ONE_TIME = "onetime";
@Override
public void onReceive(Context context, Intent intent) {
PowerManager pm = (PowerManager) context.getSystemService(Context.POWER_SERVICE);
PowerManager.WakeLock wl = pm.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "AlarmManagerBroadcastReceiver");
//Acquire the lock
wl.acquire();
//You can do the processing here.
Bundle extras = intent.getExtras();
StringBuilder msgStr = new StringBuilder();
if(extras != null && extras.getBoolean(ONE_TIME, Boolean.FALSE)){
//Make sure this intent has been sent by the one-time timer button.
msgStr.append("One time Timer : ");
}
Format formatter = new SimpleDateFormat("hh:mm:ss a");
msgStr.append(formatter.format(new Date()));
Toast.makeText(context, msgStr, Toast.LENGTH_LONG).show();
// SHOULD THE CODE TO CHECK SYSTEM TIME AGAINST THE CORRECT TIME BE PLACED HERE ??
// CURRENTLY I'M DISPLAYING A TOAST
// THANKS FOR ANY HELP
//Release the lock
wl.release();
}
public void SetAlarm(Context context)
{
AlarmManager am=(AlarmManager)context.getSystemService(Context.ALARM_SERVICE);
Intent intent = new Intent(context, AlarmManagerBroadcastReceiver.class);
intent.putExtra(ONE_TIME, Boolean.FALSE);
PendingIntent pi = PendingIntent.getBroadcast(context, 0, intent, 0);
//After after EVERY HR
am.setRepeating(AlarmManager.RTC_WAKEUP, System.currentTimeMillis(), 1000 * 30 , pi);
}
}
ありがとう !!!!