私は Android OS 用のアプリを作成しています。時間の値を SQLite DB に保存する必要があります。私はandroid.text.format.Timeを使用して時間値をアプリに保存し、値をミリ秒としてDBにREAL値として挿入しています。SDK エミュレーターでは、すべてが完全に機能します。アプリをテストする機会があった唯一の電話 (これまでのところ) で、期間コードが期待どおりに機能しません。関連するコード:
private static final String DATABASE_CREATE =
"create table " + DATABASE_TABLE + " ("
+ KEY_ROWID + " integer primary key autoincrement, "
+ KEY_START + " REAL, "
+ KEY_STOP + " REAL, "
+ KEY_DUR + " REAL );";
...
private SQLiteDatabase mDb;
ContentValues timerValues = new ContentValues();
...
timerValues.put(KEY_START, stime.toMillis(false));
timerValues.put(KEY_STOP, etime.toMillis(false));
timerValues.put(KEY_DURATION, stime.toMillis(false)-etime.toMillis(false));
int result = mDb.insert(DATABASE_TABLE, null, timerValues);
どちらも Time.set(long millis) を使用して、コードのビットがわずかに異なる 2 つの別個の関数からこのデータを取得します。両方とも誤った結果をもたらします。開始値と停止値は正しく返されますが、期間が 17 時間長すぎます。持続時間の計算について何かが欠けているのでしょうか、それともこの特定のドロイドに「特別な」何かがあるように見えますか? 月曜日にテストする別のドロイドがありますが、アイデアは大歓迎です。