【发布时间】:2016-04-28 09:28:18
【问题描述】:
我正在使用信标类型,我需要每半小时重置一次计数。当设备被触发时,我将在 db 中插入相应日期和时间以及计数器的数据。但是到了半小时后,需要将计数器从1重新设置。如何处理?
这是我尝试过的代码。
此数据库方法将在服务类中调用..
if(Application.getPrefString(BluetoothLeService.this,Application.ACTIVITY_LOGGING_ON).equalsIgnoreCase(getString(R.string.activity_logging_on))) {
if(GattConstant.CHAR_ACTIVITY_NOTIFY.equals(characteristic.getUuid())) {
Log.e("logging on", "logging on");
dbHelper.insertTestHistory();
}
}
数据库助手:
private int activityCounts=0;
public void insertTestHistory() {
synchronized (lock) {
SimpleDateFormat dateFormat = new SimpleDateFormat("MM/dd/yyyy HH:mm:ss", Locale.getDefault());
String date = dateFormat.format(new Date());
previousDate = date;
Log.e("activitycount", activityCounts + " " + date);
activityCounts++;
SQLiteDatabase database = this.getWritableDatabase();
ContentValues values = new ContentValues();
values.put(Application.ACTIVITY_LOG_STATUS, previousDate + ",activity," + (activityCounts));
database.insert(Application.ACTIVITY_LOG_TABLE, null, values);
database.close();
}
}
public List<String> getActivityHistory() {
synchronized (lock) {
List<String> deviceHistoryLog = new ArrayList<String>();
String selectQuery = "SELECT * FROM " + Application.ACTIVITY_LOG_TABLE + " ORDER BY ROWID DESC";
SQLiteDatabase database = this.getWritableDatabase();
Cursor cursor = database.rawQuery(selectQuery, null);
if (cursor.moveToFirst()) {
do {
deviceHistoryLog.add(cursor.getString(cursor.getColumnIndex(Application.ACTIVITY_LOG_STATUS)));
} while (cursor.moveToNext());
}
// Close cursor and database.
cursor.close();
database.close();
return deviceHistoryLog;
}
}
in MainActivity:
public class MainActivity extends Activity{
Da
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_tracking);
dbHelper = DatabaseHelper.getInstance(this);
deviceHistory = dbHelper.getActivityHistory();
if (deviceHistory.size() == 0) {
Log.e("empty", "empty");
} else {
for (int i = 0; i < deviceHistory.size(); i++) {
historyContent += deviceHistory.get(i);
historyData = deviceHistory.get(i);
Log.e("historydata", historyContent);
}
}
}
我得到的数据是:
04-28 14:41:32.730 30076-30091/com.test E/activitycount: 1 04/28/2016 14:41:32
04-28 14:41:33.861 30076-30091/com.test E/logging on: logging on
04-28 14:41:33.863 30076-30091/com.test E/activitycount: 2 04/28/2016 14:41:33
04-28 14:41:33.879 30076-30091/com.test E/logging on: logging on
04-28 14:41:33.881 30076-30091/com.test E/activitycount: 3 04/28/2016 14:41:33
04-28 14:41:33.895 30076-30091/com.test E/logging on: logging on
04-28 14:41:33.896 30076-30091/com.test E/activitycount: 4 04/28/2016 14:41:33
当它到达 15:01 时我需要重置,即当它触发时活动记录为 1.. 然后 15.02 为 2 以此类推,每半小时,计数器重置一次。
【问题讨论】:
标签: android mysql database android-sqlite android-database