#android
#Android
Вопрос:
Я создаю приложение с использованием гарнитуры EEG NeuroSky, которая измеряет уровни внимания и посредничества пользователя в течение определенного периода времени, когда они играют в игру.
Уровни внимания и посредничества записываются с гарнитуры и отображаются в режиме реального времени на экране каждую секунду (в целых числах от 0 до 100). Это очень похоже на приложение NeuroSky, показанное здесь
Я хотел бы иметь возможность сохранять их, а затем просматривать в отдельном действии после завершения игры, либо в виде значений int, либо в графической форме. Т. е. иметь возможность просматривать, какой уровень посредничества пользователей был на 36 секунд, и какой уровень внимания был на 45 секунд и т.д.
Возможно ли это сделать, и если да, то как?
Особая область, вызывающая озабоченность:
примечание — Я не знаю, как сохранить значение каждого msg.arg1?
case TGDevice.MSG_MEDITATION:
meditation.setText("Meditation: " msg.arg1 "n");
if(msg.arg1<=35){
//if mediation level is low it turns red
meditation.setBackgroundColor(Color.RED);
}else if((msg.arg1<=70)amp;amp;(msg.arg1>=35)){
meditation.setBackgroundColor(Color.YELLOW);
}else{
meditation.setBackgroundColor(Color.GREEN);
}
break;
Код, из которого записываются данные:
/**
* Handles messages from TGDevice
*
*/
final Handler handler = new Handler() {
@Override
public void handleMessage(Message msg) {
// msg.what determines the type of each message
switch (msg.what) {
case TGDevice.MSG_EEG_POWER:
//WILL NEED TO CHANGE TO PUTPUT TO SCREEN.
// Log.d("LSD", "highAlpha: " eegPower.highAlpha);
// Log.d("LSD", "lowAlpha: " eegPower.lowAlpha);
// Log.d("LSD", "highBeta: " eegPower.highBeta);
// Log.d("LSD", "lowBeta: " eegPower.lowBeta);
// Log.d("LSD", "lowGamma: " eegPower.lowGamma);
// Log.d("LSD", "midGamma: " eegPower.midGamma);
// Log.d("LSD", "delta: " eegPower.delta);
// Log.d("LSD", "theta: " eegPower.theta);
break;
case TGDevice.MSG_STATE_CHANGE:
// actual value of the message is determined by msg.arg1
switch (msg.arg1) {
case TGDevice.STATE_IDLE:
break;
case TGDevice.STATE_CONNECTING:
meditation.append("Connecting...n");
break;
case TGDevice.STATE_CONNECTED:
meditation.append("Connected.n");
device.start();
break;
case TGDevice.STATE_NOT_FOUND:
meditation.append("Could not connect any of the paired BT devices. Turn them on and try again.n");
break;
case TGDevice.STATE_ERR_NO_DEVICE:
meditation.append("No Bluetooth devices paired. Pair your device and try again.n");
break;
case TGDevice.STATE_ERR_BT_OFF:
meditation.append("Bluetooth is off. Turn on Bluetooth and try again.");
break;
case TGDevice.STATE_DISCONNECTED:
meditation.append("Disconnected.n");
} /* end switch on msg.arg1 */
break;
case TGDevice.MSG_POOR_SIGNAL:
//meditation.append("PoorSignal: " msg.arg1 "n");
break;
case TGDevice.MSG_HEART_RATE:
meditation.append("Heart rate: " msg.arg1 "n");
break;
case TGDevice.MSG_RAW_DATA:
/* Handle raw EEG/EKG data here */
//tv.append("RAW EEG: " msg.arg1); Note: commented out as trying to get the exact figs (gamma etc)
break;
case TGDevice.MSG_ATTENTION:
//meditation.append("Attention: " msg.arg1 "n");
break;
case TGDevice.MSG_MEDITATION:
meditation.setText("Meditation: " msg.arg1 "n");
if(msg.arg1<=35){
//if mediation level is low it turns red
meditation.setBackgroundColor(Color.RED);
}else if((msg.arg1<=70)amp;amp;(msg.arg1>=35)){
meditation.setBackgroundColor(Color.YELLOW);
}else{
meditation.setBackgroundColor(Color.GREEN);
}
break;
case TGDevice.MSG_BLINK:
meditation.append("Blink: " msg.arg1 "n");
break;
default:
break;
} /* end switch on msg.what */
//sv.fullScroll(View.FOCUS_DOWN); May need to use this again if the scroll view is needed!
} /* end handleMessage() */
}; /* end Handler */
Комментарии:
1. Запишите каждую точку данных в файл (включая значения и временную метку), затем отобразите ее в другом действии или приложении. Это должно быть довольно тривиально.
2. Извините, но я не уверен, что вы имеете в виду, я довольно новичок в Android!
3. Это не Android, это базовое программирование.
4. Хорошо, как мне сохранить каждую точку данных тогда? Я хотел бы использовать SQLite в качестве базы данных
Ответ №1:
System.currentTimeMillis()
выдает системное время, установленное системными часами, в виде метки времени Unix
Комментарии:
1. По сути, я просто хочу иметь возможность сохранять данные за каждую секунду, когда они меняются, то есть значение за одну секунду, 2 секунды и т. Д