Как сохранить данные в режиме реального времени в приложении Android для последующего просмотра?

#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 секунды и т. Д