要使用NeuroSky的MindWave來抓一些腦波資料,他提供的Android API利用handler回傳message來回傳mindwave所抓到的腦波訊息。
在使用上我需要將EEG訊號儲存在Sqlite中,因為raw data的偵測與傳送速率是512 Hz,且官方所給的範例使用的handler是UI thread handler。自己寫的程式使用此handler來儲存資料會使得UI thread產生ANR的問題。
因此想先將偵測到的message儲存在一個容器內,然後呼叫另一個thread批次的儲存在Sqlite中。
然後慘劇就發生了,不曉得為什麼容器內的message會被當作垃圾回收!
handler程式碼如下:
@Override public void handleMessage(Message msg) { switch (msg.what) { case 0: Log.i(TAG, "got Message 0"); break; case TGDevice.MSG_STATE_CHANGE: switch (msg.arg1) { case TGDevice.STATE_IDLE: break; case TGDevice.STATE_CONNECTING: SensingActivity.setState("Connecting..."); break; case TGDevice.STATE_CONNECTED: SensingActivity.setState("Connected."); SensingActivity.getTGDevice().start(); break; case TGDevice.STATE_NOT_FOUND: SensingActivity.setState("Can't find"); break; case TGDevice.STATE_NOT_PAIRED: SensingActivity.setState("not paired"); break; case TGDevice.STATE_DISCONNECTED: SensingActivity.setState("Disconnected mang"); } break; case TGDevice.MSG_POOR_SIGNAL: //signal = msg.arg1; SensingActivity.setState("Poor Signal: " + String.valueOf(msg.arg1)); break; case TGDevice.MSG_RAW_DATA: //msgBuffer.add(msg); msgBuffer[index] = msg; Log.e(TAG, "In: msg.what = " + msgBuffer[index].what + ", msg.when = " + msgBuffer[index].getWhen() + ", number = " + index); index++; break; case TGDevice.MSG_HEART_RATE: break; case TGDevice.MSG_ATTENTION: //msgBuffer.add(msg); //msgBuffer[index++] = msg; msgBuffer[index] = msg; Log.e(TAG, "In: msg.what = " + msgBuffer[index].what + ", msg.when = " + msgBuffer[index].getWhen() + ", number = " + index); index++; SensingActivity.setAtt(String.valueOf(msg.arg1)); SensingActivity.setp1(msg.arg1); case TGDevice.MSG_MEDITATION: //msgBuffer.add(msg); // msgBuffer[index++] = msg; msgBuffer[index] = msg; Log.e(TAG, "In: msg.what = " + msgBuffer[index].what + ", msg.when = " + msgBuffer[index].getWhen() + ", number = " + index); index++; SensingActivity.setMed(String.valueOf(msg.arg1)); SensingActivity.setp2(msg.arg1); break; case TGDevice.MSG_BLINK: msgBuffer[index] = msg; Log.e(TAG, "In: msg.what = " + msgBuffer[index].what + ", msg.when = " + msgBuffer[index].getWhen() + ", number = " + index); index++; break; case TGDevice.MSG_RAW_COUNT: //tv.append("Raw Count: " + msg.arg1 + "\n"); break; case TGDevice.MSG_LOW_BATTERY: //Toast.makeText(getApplicationContext(), "Low battery!", Toast.LENGTH_SHORT).show(); break; case TGDevice.MSG_RAW_MULTI: //TGRawMulti rawM = (TGRawMulti)msg.obj; //tv.append("Raw1: " + rawM.ch1 + "\nRaw2: " + rawM.ch2); default: break; } //if (msgBuffer.size() > maxBufferSize - 1) { if (index >= maxBufferSize) { index = 0; //Fixme // int i = 0; // for(Message mm : msgBuffer) { // Log.d(TAG, "check message msg.what = " + mm.what + " number = " + i); // i++; // } for (int i = 0; i<maxBufferSize; ++i) { Log.d(TAG, "Out: msg.what = " + msgBuffer[i].what + ", msg.when = " + msgBuffer[i].getWhen() + ", number = " + i); } // 儲存db資料 if (OneOrTwo == 1) { // t1 = new SavingData(Buffer1); // while (t2 != null && t2.myThread.isAlive()) ; //Buffer2 = Collections.synchronizedList(new ArrayList<Message>()); Buffer2 = new Message[maxBufferSize]; msgBuffer = Buffer2; OneOrTwo = 2; } else { // t2 = new SavingData(Buffer2); // while (t1.myThread.isAlive()) ; //Buffer1 = Collections.synchronizedList(new ArrayList<Message>()); Buffer1 = new Message[maxBufferSize]; msgBuffer = Buffer1; OneOrTwo = 1; } } }
在第34~36行,我們將message存放到Array中,然後馬上將Array的內容印出來檢查
當Array的內容儲存到一定的數量,我們再將Array所有的內容印出來再次檢查,如第84~86。Log的結果卻發現在84~86的傾印的內容有一大堆的message變成空值,這個問題抓了很久一直找不到解決的方法,是哪一個細節忽略掉了呢? 做成紀錄先
EventLog如下,line 1 ~ 100是存入容器時的log,line 101 ~ 200是批次列印時的結果。發現在批次列印時,容器內的message物件都不是原來的物件了(從msg.when推測出來)
01-26 15:16:10.340 31127-31127/cycu.nclab.demo.neuroeeg E/TGDeviceHandler: In: msg.what = 128, msg.when = 1129376205, number = 0 01-26 15:16:10.340 31127-31127/cycu.nclab.demo.neuroeeg E/TGDeviceHandler: In: msg.what = 128, msg.when = 1129376205, number = 1 01-26 15:16:10.350 31127-31127/cycu.nclab.demo.neuroeeg E/TGDeviceHandler: In: msg.what = 128, msg.when = 1129376219, number = 2 01-26 15:16:10.350 31127-31127/cycu.nclab.demo.neuroeeg E/TGDeviceHandler: In: msg.what = 128, msg.when = 1129376219, number = 3 01-26 15:16:10.350 31127-31127/cycu.nclab.demo.neuroeeg E/TGDeviceHandler: In: msg.what = 128, msg.when = 1129376220, number = 4 01-26 15:16:10.350 31127-31127/cycu.nclab.demo.neuroeeg E/TGDeviceHandler: In: msg.what = 128, msg.when = 1129376220, number = 5 01-26 15:16:10.350 31127-31127/cycu.nclab.demo.neuroeeg E/TGDeviceHandler: In: msg.what = 128, msg.when = 1129376221, number = 6 01-26 15:16:10.350 31127-31127/cycu.nclab.demo.neuroeeg E/TGDeviceHandler: In: msg.what = 128, msg.when = 1129376221, number = 7 01-26 15:16:10.350 31127-31127/cycu.nclab.demo.neuroeeg E/TGDeviceHandler: In: msg.what = 128, msg.when = 1129376221, number = 8 01-26 15:16:10.350 31127-31127/cycu.nclab.demo.neuroeeg E/TGDeviceHandler: In: msg.what = 128, msg.when = 1129376221, number = 9 01-26 15:16:10.350 31127-31127/cycu.nclab.demo.neuroeeg E/TGDeviceHandler: In: msg.what = 128, msg.when = 1129376222, number = 10 01-26 15:16:10.350 31127-31127/cycu.nclab.demo.neuroeeg E/TGDeviceHandler: In: msg.what = 128, msg.when = 1129376222, number = 11 01-26 15:16:10.360 31127-31127/cycu.nclab.demo.neuroeeg E/TGDeviceHandler: In: msg.what = 128, msg.when = 1129376237, number = 12 01-26 15:16:10.360 31127-31127/cycu.nclab.demo.neuroeeg E/TGDeviceHandler: In: msg.what = 128, msg.when = 1129376237, number = 13 01-26 15:16:10.360 31127-31127/cycu.nclab.demo.neuroeeg E/TGDeviceHandler: In: msg.what = 128, msg.when = 1129376237, number = 14 01-26 15:16:10.360 31127-31127/cycu.nclab.demo.neuroeeg E/TGDeviceHandler: In: msg.what = 128, msg.when = 1129376238, number = 15 01-26 15:16:10.360 31127-31127/cycu.nclab.demo.neuroeeg E/TGDeviceHandler: In: msg.what = 128, msg.when = 1129376238, number = 16 01-26 15:16:10.360 31127-31127/cycu.nclab.demo.neuroeeg E/TGDeviceHandler: In: msg.what = 128, msg.when = 1129376238, number = 17 01-26 15:16:10.360 31127-31127/cycu.nclab.demo.neuroeeg E/TGDeviceHandler: In: msg.what = 128, msg.when = 1129376238, number = 18 01-26 15:16:10.370 31127-31127/cycu.nclab.demo.neuroeeg E/TGDeviceHandler: In: msg.what = 128, msg.when = 1129376238, number = 19 01-26 15:16:10.370 31127-31127/cycu.nclab.demo.neuroeeg E/TGDeviceHandler: In: msg.what = 128, msg.when = 1129376239, number = 20 01-26 15:16:10.370 31127-31127/cycu.nclab.demo.neuroeeg E/TGDeviceHandler: In: msg.what = 128, msg.when = 1129376239, number = 21 01-26 15:16:10.380 31127-31127/cycu.nclab.demo.neuroeeg E/TGDeviceHandler: In: msg.what = 128, msg.when = 1129376257, number = 22 01-26 15:16:10.380 31127-31127/cycu.nclab.demo.neuroeeg E/TGDeviceHandler: In: msg.what = 128, msg.when = 1129376257, number = 23 01-26 15:16:10.380 31127-31127/cycu.nclab.demo.neuroeeg E/TGDeviceHandler: In: msg.what = 128, msg.when = 1129376258, number = 24 01-26 15:16:10.380 31127-31127/cycu.nclab.demo.neuroeeg E/TGDeviceHandler: In: msg.what = 128, msg.when = 1129376259, number = 25 01-26 15:16:10.380 31127-31127/cycu.nclab.demo.neuroeeg E/TGDeviceHandler: In: msg.what = 128, msg.when = 1129376259, number = 26 01-26 15:16:10.390 31127-31127/cycu.nclab.demo.neuroeeg E/TGDeviceHandler: In: msg.what = 128, msg.when = 1129376260, number = 27 01-26 15:16:10.390 31127-31127/cycu.nclab.demo.neuroeeg E/TGDeviceHandler: In: msg.what = 128, msg.when = 1129376260, number = 28 01-26 15:16:10.390 31127-31127/cycu.nclab.demo.neuroeeg E/TGDeviceHandler: In: msg.what = 128, msg.when = 1129376261, number = 29 01-26 15:16:10.390 31127-31127/cycu.nclab.demo.neuroeeg E/TGDeviceHandler: In: msg.what = 128, msg.when = 1129376261, number = 30 01-26 15:16:10.390 31127-31127/cycu.nclab.demo.neuroeeg E/TGDeviceHandler: In: msg.what = 128, msg.when = 1129376261, number = 31 01-26 15:16:10.400 31127-31127/cycu.nclab.demo.neuroeeg E/TGDeviceHandler: In: msg.what = 128, msg.when = 1129376277, number = 32 01-26 15:16:10.400 31127-31127/cycu.nclab.demo.neuroeeg E/TGDeviceHandler: In: msg.what = 128, msg.when = 1129376277, number = 33 01-26 15:16:10.400 31127-31127/cycu.nclab.demo.neuroeeg E/TGDeviceHandler: In: msg.what = 128, msg.when = 1129376277, number = 34 01-26 15:16:10.400 31127-31127/cycu.nclab.demo.neuroeeg E/TGDeviceHandler: In: msg.what = 128, msg.when = 1129376278, number = 35 01-26 15:16:10.400 31127-31127/cycu.nclab.demo.neuroeeg E/TGDeviceHandler: In: msg.what = 128, msg.when = 1129376278, number = 36 01-26 15:16:10.400 31127-31127/cycu.nclab.demo.neuroeeg E/TGDeviceHandler: In: msg.what = 128, msg.when = 1129376278, number = 37 01-26 15:16:10.400 31127-31127/cycu.nclab.demo.neuroeeg E/TGDeviceHandler: In: msg.what = 128, msg.when = 1129376279, number = 38 01-26 15:16:10.400 31127-31127/cycu.nclab.demo.neuroeeg E/TGDeviceHandler: In: msg.what = 128, msg.when = 1129376279, number = 39 01-26 15:16:10.400 31127-31127/cycu.nclab.demo.neuroeeg E/TGDeviceHandler: In: msg.what = 128, msg.when = 1129376279, number = 40 01-26 15:16:10.400 31127-31127/cycu.nclab.demo.neuroeeg E/TGDeviceHandler: In: msg.what = 128, msg.when = 1129376279, number = 41 01-26 15:16:10.420 31127-31127/cycu.nclab.demo.neuroeeg E/TGDeviceHandler: In: msg.what = 128, msg.when = 1129376297, number = 42 01-26 15:16:10.420 31127-31127/cycu.nclab.demo.neuroeeg E/TGDeviceHandler: In: msg.what = 128, msg.when = 1129376297, number = 43 01-26 15:16:10.420 31127-31127/cycu.nclab.demo.neuroeeg E/TGDeviceHandler: In: msg.what = 128, msg.when = 1129376297, number = 44 01-26 15:16:10.420 31127-31127/cycu.nclab.demo.neuroeeg E/TGDeviceHandler: In: msg.what = 128, msg.when = 1129376297, number = 45 01-26 15:16:10.420 31127-31127/cycu.nclab.demo.neuroeeg E/TGDeviceHandler: In: msg.what = 128, msg.when = 1129376298, number = 46 01-26 15:16:10.420 31127-31127/cycu.nclab.demo.neuroeeg E/TGDeviceHandler: In: msg.what = 128, msg.when = 1129376298, number = 47 01-26 15:16:10.420 31127-31127/cycu.nclab.demo.neuroeeg E/TGDeviceHandler: In: msg.what = 128, msg.when = 1129376298, number = 48 01-26 15:16:10.430 31127-31127/cycu.nclab.demo.neuroeeg E/TGDeviceHandler: In: msg.what = 128, msg.when = 1129376298, number = 49 01-26 15:16:10.430 31127-31127/cycu.nclab.demo.neuroeeg E/TGDeviceHandler: In: msg.what = 128, msg.when = 1129376298, number = 50 01-26 15:16:10.430 31127-31127/cycu.nclab.demo.neuroeeg E/TGDeviceHandler: In: msg.what = 128, msg.when = 1129376298, number = 51 01-26 15:16:10.440 31127-31127/cycu.nclab.demo.neuroeeg E/TGDeviceHandler: In: msg.what = 128, msg.when = 1129376314, number = 52 01-26 15:16:10.440 31127-31127/cycu.nclab.demo.neuroeeg E/TGDeviceHandler: In: msg.what = 128, msg.when = 1129376315, number = 53 01-26 15:16:10.440 31127-31127/cycu.nclab.demo.neuroeeg E/TGDeviceHandler: In: msg.what = 128, msg.when = 1129376315, number = 54 01-26 15:16:10.440 31127-31127/cycu.nclab.demo.neuroeeg E/TGDeviceHandler: In: msg.what = 128, msg.when = 1129376316, number = 55 01-26 15:16:10.440 31127-31127/cycu.nclab.demo.neuroeeg E/TGDeviceHandler: In: msg.what = 128, msg.when = 1129376316, number = 56 01-26 15:16:10.440 31127-31127/cycu.nclab.demo.neuroeeg E/TGDeviceHandler: In: msg.what = 128, msg.when = 1129376317, number = 57 01-26 15:16:10.440 31127-31127/cycu.nclab.demo.neuroeeg E/TGDeviceHandler: In: msg.what = 128, msg.when = 1129376317, number = 58 01-26 15:16:10.440 31127-31127/cycu.nclab.demo.neuroeeg E/TGDeviceHandler: In: msg.what = 128, msg.when = 1129376318, number = 59 01-26 15:16:10.440 31127-31127/cycu.nclab.demo.neuroeeg E/TGDeviceHandler: In: msg.what = 128, msg.when = 1129376318, number = 60 01-26 15:16:10.440 31127-31127/cycu.nclab.demo.neuroeeg E/TGDeviceHandler: In: msg.what = 128, msg.when = 1129376319, number = 61 01-26 15:16:10.460 31127-31127/cycu.nclab.demo.neuroeeg E/TGDeviceHandler: In: msg.what = 128, msg.when = 1129376337, number = 62 01-26 15:16:10.460 31127-31127/cycu.nclab.demo.neuroeeg E/TGDeviceHandler: In: msg.what = 128, msg.when = 1129376337, number = 63 01-26 15:16:10.460 31127-31127/cycu.nclab.demo.neuroeeg E/TGDeviceHandler: In: msg.what = 128, msg.when = 1129376338, number = 64 01-26 15:16:10.460 31127-31127/cycu.nclab.demo.neuroeeg E/TGDeviceHandler: In: msg.what = 128, msg.when = 1129376338, number = 65 01-26 15:16:10.460 31127-31127/cycu.nclab.demo.neuroeeg E/TGDeviceHandler: In: msg.what = 128, msg.when = 1129376339, number = 66 01-26 15:16:10.470 31127-31127/cycu.nclab.demo.neuroeeg E/TGDeviceHandler: In: msg.what = 128, msg.when = 1129376340, number = 67 01-26 15:16:10.470 31127-31127/cycu.nclab.demo.neuroeeg E/TGDeviceHandler: In: msg.what = 128, msg.when = 1129376341, number = 68 01-26 15:16:10.470 31127-31127/cycu.nclab.demo.neuroeeg E/TGDeviceHandler: In: msg.what = 128, msg.when = 1129376341, number = 69 01-26 15:16:10.470 31127-31127/cycu.nclab.demo.neuroeeg E/TGDeviceHandler: In: msg.what = 128, msg.when = 1129376342, number = 70 01-26 15:16:10.470 31127-31127/cycu.nclab.demo.neuroeeg E/TGDeviceHandler: In: msg.what = 128, msg.when = 1129376342, number = 71 01-26 15:16:10.480 31127-31127/cycu.nclab.demo.neuroeeg E/TGDeviceHandler: In: msg.what = 128, msg.when = 1129376354, number = 72 01-26 15:16:10.480 31127-31127/cycu.nclab.demo.neuroeeg E/TGDeviceHandler: In: msg.what = 128, msg.when = 1129376355, number = 73 01-26 15:16:10.480 31127-31127/cycu.nclab.demo.neuroeeg E/TGDeviceHandler: In: msg.what = 128, msg.when = 1129376355, number = 74 01-26 15:16:10.480 31127-31127/cycu.nclab.demo.neuroeeg E/TGDeviceHandler: In: msg.what = 128, msg.when = 1129376356, number = 75 01-26 15:16:10.480 31127-31127/cycu.nclab.demo.neuroeeg E/TGDeviceHandler: In: msg.what = 128, msg.when = 1129376356, number = 76 01-26 15:16:10.480 31127-31127/cycu.nclab.demo.neuroeeg E/TGDeviceHandler: In: msg.what = 128, msg.when = 1129376356, number = 77 01-26 15:16:10.480 31127-31127/cycu.nclab.demo.neuroeeg E/TGDeviceHandler: In: msg.what = 128, msg.when = 1129376356, number = 78 01-26 15:16:10.480 31127-31127/cycu.nclab.demo.neuroeeg E/TGDeviceHandler: In: msg.what = 128, msg.when = 1129376357, number = 79 01-26 15:16:10.480 31127-31127/cycu.nclab.demo.neuroeeg E/TGDeviceHandler: In: msg.what = 128, msg.when = 1129376357, number = 80 01-26 15:16:10.480 31127-31127/cycu.nclab.demo.neuroeeg E/TGDeviceHandler: In: msg.what = 128, msg.when = 1129376357, number = 81 01-26 15:16:10.510 31127-31127/cycu.nclab.demo.neuroeeg E/TGDeviceHandler: In: msg.what = 128, msg.when = 1129376375, number = 82 01-26 15:16:10.510 31127-31127/cycu.nclab.demo.neuroeeg E/TGDeviceHandler: In: msg.what = 128, msg.when = 1129376376, number = 83 01-26 15:16:10.510 31127-31127/cycu.nclab.demo.neuroeeg E/TGDeviceHandler: In: msg.what = 128, msg.when = 1129376376, number = 84 01-26 15:16:10.510 31127-31127/cycu.nclab.demo.neuroeeg E/TGDeviceHandler: In: msg.what = 128, msg.when = 1129376377, number = 85 01-26 15:16:10.510 31127-31127/cycu.nclab.demo.neuroeeg E/TGDeviceHandler: In: msg.what = 128, msg.when = 1129376377, number = 86 01-26 15:16:10.510 31127-31127/cycu.nclab.demo.neuroeeg E/TGDeviceHandler: In: msg.what = 128, msg.when = 1129376377, number = 87 01-26 15:16:10.510 31127-31127/cycu.nclab.demo.neuroeeg E/TGDeviceHandler: In: msg.what = 128, msg.when = 1129376377, number = 88 01-26 15:16:10.510 31127-31127/cycu.nclab.demo.neuroeeg E/TGDeviceHandler: In: msg.what = 128, msg.when = 1129376377, number = 89 01-26 15:16:10.510 31127-31127/cycu.nclab.demo.neuroeeg E/TGDeviceHandler: In: msg.what = 128, msg.when = 1129376378, number = 90 01-26 15:16:10.510 31127-31127/cycu.nclab.demo.neuroeeg E/TGDeviceHandler: In: msg.what = 128, msg.when = 1129376378, number = 91 01-26 15:16:10.520 31127-31127/cycu.nclab.demo.neuroeeg E/TGDeviceHandler: In: msg.what = 128, msg.when = 1129376395, number = 92 01-26 15:16:10.520 31127-31127/cycu.nclab.demo.neuroeeg E/TGDeviceHandler: In: msg.what = 128, msg.when = 1129376395, number = 93 01-26 15:16:10.520 31127-31127/cycu.nclab.demo.neuroeeg E/TGDeviceHandler: In: msg.what = 128, msg.when = 1129376396, number = 94 01-26 15:16:10.520 31127-31127/cycu.nclab.demo.neuroeeg E/TGDeviceHandler: In: msg.what = 128, msg.when = 1129376396, number = 95 01-26 15:16:10.520 31127-31127/cycu.nclab.demo.neuroeeg E/TGDeviceHandler: In: msg.what = 128, msg.when = 1129376396, number = 96 01-26 15:16:10.520 31127-31127/cycu.nclab.demo.neuroeeg E/TGDeviceHandler: In: msg.what = 128, msg.when = 1129376396, number = 97 01-26 15:16:10.520 31127-31127/cycu.nclab.demo.neuroeeg E/TGDeviceHandler: In: msg.what = 128, msg.when = 1129376396, number = 98 01-26 15:16:10.520 31127-31127/cycu.nclab.demo.neuroeeg E/TGDeviceHandler: In: msg.what = 128, msg.when = 1129376396, number = 99 01-26 15:16:10.520 31127-31127/cycu.nclab.demo.neuroeeg D/TGDeviceHandler: Out: msg.what = 0, msg.when = 0, number = 0 01-26 15:16:10.520 31127-31127/cycu.nclab.demo.neuroeeg D/TGDeviceHandler: Out: msg.what = 128, msg.when = 1129376397, number = 1 01-26 15:16:10.520 31127-31127/cycu.nclab.demo.neuroeeg D/TGDeviceHandler: Out: msg.what = 128, msg.when = 1129376397, number = 2 01-26 15:16:10.520 31127-31127/cycu.nclab.demo.neuroeeg D/TGDeviceHandler: Out: msg.what = 0, msg.when = 0, number = 3 01-26 15:16:10.520 31127-31127/cycu.nclab.demo.neuroeeg D/TGDeviceHandler: Out: msg.what = 0, msg.when = 0, number = 4 01-26 15:16:10.520 31127-31127/cycu.nclab.demo.neuroeeg D/TGDeviceHandler: Out: msg.what = 0, msg.when = 0, number = 5 01-26 15:16:10.520 31127-31127/cycu.nclab.demo.neuroeeg D/TGDeviceHandler: Out: msg.what = 128, msg.when = 1129376397, number = 6 01-26 15:16:10.520 31127-31127/cycu.nclab.demo.neuroeeg D/TGDeviceHandler: Out: msg.what = 128, msg.when = 1129376396, number = 7 01-26 15:16:10.520 31127-31127/cycu.nclab.demo.neuroeeg D/TGDeviceHandler: Out: msg.what = 128, msg.when = 1129376397, number = 8 01-26 15:16:10.520 31127-31127/cycu.nclab.demo.neuroeeg D/TGDeviceHandler: Out: msg.what = 0, msg.when = 0, number = 9 01-26 15:16:10.520 31127-31127/cycu.nclab.demo.neuroeeg D/TGDeviceHandler: Out: msg.what = 0, msg.when = 0, number = 10 01-26 15:16:10.530 31127-31127/cycu.nclab.demo.neuroeeg D/TGDeviceHandler: Out: msg.what = 0, msg.when = 0, number = 11 01-26 15:16:10.530 31127-31127/cycu.nclab.demo.neuroeeg D/TGDeviceHandler: Out: msg.what = 0, msg.when = 0, number = 12 01-26 15:16:10.530 31127-31127/cycu.nclab.demo.neuroeeg D/TGDeviceHandler: Out: msg.what = 0, msg.when = 0, number = 13 01-26 15:16:10.530 31127-31127/cycu.nclab.demo.neuroeeg D/TGDeviceHandler: Out: msg.what = 0, msg.when = 0, number = 14 01-26 15:16:10.530 31127-31127/cycu.nclab.demo.neuroeeg D/TGDeviceHandler: Out: msg.what = 0, msg.when = 0, number = 15 01-26 15:16:10.530 31127-31127/cycu.nclab.demo.neuroeeg D/TGDeviceHandler: Out: msg.what = 0, msg.when = 0, number = 16 01-26 15:16:10.530 31127-31127/cycu.nclab.demo.neuroeeg D/TGDeviceHandler: Out: msg.what = 128, msg.when = 1129376397, number = 17 01-26 15:16:10.530 31127-31127/cycu.nclab.demo.neuroeeg D/TGDeviceHandler: Out: msg.what = 128, msg.when = 1129376396, number = 18 01-26 15:16:10.530 31127-31127/cycu.nclab.demo.neuroeeg D/TGDeviceHandler: Out: msg.what = 128, msg.when = 1129376397, number = 19 01-26 15:16:10.530 31127-31127/cycu.nclab.demo.neuroeeg D/TGDeviceHandler: Out: msg.what = 0, msg.when = 0, number = 20 01-26 15:16:10.530 31127-31127/cycu.nclab.demo.neuroeeg D/TGDeviceHandler: Out: msg.what = 0, msg.when = 0, number = 21 01-26 15:16:10.530 31127-31127/cycu.nclab.demo.neuroeeg D/TGDeviceHandler: Out: msg.what = 0, msg.when = 0, number = 22 01-26 15:16:10.530 31127-31127/cycu.nclab.demo.neuroeeg D/TGDeviceHandler: Out: msg.what = 0, msg.when = 0, number = 23 01-26 15:16:10.530 31127-31127/cycu.nclab.demo.neuroeeg D/TGDeviceHandler: Out: msg.what = 0, msg.when = 0, number = 24 01-26 15:16:10.530 31127-31127/cycu.nclab.demo.neuroeeg D/TGDeviceHandler: Out: msg.what = 0, msg.when = 0, number = 25 01-26 15:16:10.530 31127-31127/cycu.nclab.demo.neuroeeg D/TGDeviceHandler: Out: msg.what = 0, msg.when = 0, number = 26 01-26 15:16:10.530 31127-31127/cycu.nclab.demo.neuroeeg D/TGDeviceHandler: Out: msg.what = 0, msg.when = 0, number = 27 01-26 15:16:10.530 31127-31127/cycu.nclab.demo.neuroeeg D/TGDeviceHandler: Out: msg.what = 0, msg.when = 0, number = 28 01-26 15:16:10.530 31127-31127/cycu.nclab.demo.neuroeeg D/TGDeviceHandler: Out: msg.what = 128, msg.when = 1129376397, number = 29 01-26 15:16:10.530 31127-31127/cycu.nclab.demo.neuroeeg D/TGDeviceHandler: Out: msg.what = 128, msg.when = 1129376396, number = 30 01-26 15:16:10.530 31127-31127/cycu.nclab.demo.neuroeeg D/TGDeviceHandler: Out: msg.what = 128, msg.when = 1129376397, number = 31 01-26 15:16:10.530 31127-31127/cycu.nclab.demo.neuroeeg D/TGDeviceHandler: Out: msg.what = 128, msg.when = 1129376397, number = 32 01-26 15:16:10.530 31127-31127/cycu.nclab.demo.neuroeeg D/TGDeviceHandler: Out: msg.what = 128, msg.when = 1129376396, number = 33 01-26 15:16:10.530 31127-31127/cycu.nclab.demo.neuroeeg D/TGDeviceHandler: Out: msg.what = 128, msg.when = 1129376397, number = 34 01-26 15:16:10.530 31127-31127/cycu.nclab.demo.neuroeeg D/TGDeviceHandler: Out: msg.what = 128, msg.when = 1129376397, number = 35 01-26 15:16:10.530 31127-31127/cycu.nclab.demo.neuroeeg D/TGDeviceHandler: Out: msg.what = 128, msg.when = 1129376397, number = 36 01-26 15:16:10.530 31127-31127/cycu.nclab.demo.neuroeeg D/TGDeviceHandler: Out: msg.what = 128, msg.when = 1129376397, number = 37 01-26 15:16:10.530 31127-31127/cycu.nclab.demo.neuroeeg D/TGDeviceHandler: Out: msg.what = 128, msg.when = 1129376397, number = 38 01-26 15:16:10.530 31127-31127/cycu.nclab.demo.neuroeeg D/TGDeviceHandler: Out: msg.what = 128, msg.when = 1129376397, number = 39 01-26 15:16:10.530 31127-31127/cycu.nclab.demo.neuroeeg D/TGDeviceHandler: Out: msg.what = 128, msg.when = 1129376397, number = 40 01-26 15:16:10.530 31127-31127/cycu.nclab.demo.neuroeeg D/TGDeviceHandler: Out: msg.what = 128, msg.when = 1129376397, number = 41 01-26 15:16:10.530 31127-31127/cycu.nclab.demo.neuroeeg D/TGDeviceHandler: Out: msg.what = 128, msg.when = 1129376397, number = 42 01-26 15:16:10.530 31127-31127/cycu.nclab.demo.neuroeeg D/TGDeviceHandler: Out: msg.what = 128, msg.when = 1129376396, number = 43 01-26 15:16:10.530 31127-31127/cycu.nclab.demo.neuroeeg D/TGDeviceHandler: Out: msg.what = 128, msg.when = 1129376397, number = 44 01-26 15:16:10.530 31127-31127/cycu.nclab.demo.neuroeeg D/TGDeviceHandler: Out: msg.what = 0, msg.when = 0, number = 45 01-26 15:16:10.530 31127-31127/cycu.nclab.demo.neuroeeg D/TGDeviceHandler: Out: msg.what = 0, msg.when = 0, number = 46 01-26 15:16:10.530 31127-31127/cycu.nclab.demo.neuroeeg D/TGDeviceHandler: Out: msg.what = 0, msg.when = 0, number = 47 01-26 15:16:10.530 31127-31127/cycu.nclab.demo.neuroeeg D/TGDeviceHandler: Out: msg.what = 0, msg.when = 0, number = 48 01-26 15:16:10.530 31127-31127/cycu.nclab.demo.neuroeeg D/TGDeviceHandler: Out: msg.what = 0, msg.when = 0, number = 49 01-26 15:16:10.530 31127-31127/cycu.nclab.demo.neuroeeg D/TGDeviceHandler: Out: msg.what = 0, msg.when = 0, number = 50 01-26 15:16:10.530 31127-31127/cycu.nclab.demo.neuroeeg D/TGDeviceHandler: Out: msg.what = 0, msg.when = 0, number = 51 01-26 15:16:10.530 31127-31127/cycu.nclab.demo.neuroeeg D/TGDeviceHandler: Out: msg.what = 0, msg.when = 0, number = 52 01-26 15:16:10.530 31127-31127/cycu.nclab.demo.neuroeeg D/TGDeviceHandler: Out: msg.what = 0, msg.when = 0, number = 53 01-26 15:16:10.530 31127-31127/cycu.nclab.demo.neuroeeg D/TGDeviceHandler: Out: msg.what = 0, msg.when = 0, number = 54 01-26 15:16:10.530 31127-31127/cycu.nclab.demo.neuroeeg D/TGDeviceHandler: Out: msg.what = 0, msg.when = 0, number = 55 01-26 15:16:10.530 31127-31127/cycu.nclab.demo.neuroeeg D/TGDeviceHandler: Out: msg.what = 0, msg.when = 0, number = 56 01-26 15:16:10.530 31127-31127/cycu.nclab.demo.neuroeeg D/TGDeviceHandler: Out: msg.what = 0, msg.when = 0, number = 57 01-26 15:16:10.530 31127-31127/cycu.nclab.demo.neuroeeg D/TGDeviceHandler: Out: msg.what = 0, msg.when = 0, number = 58 01-26 15:16:10.530 31127-31127/cycu.nclab.demo.neuroeeg D/TGDeviceHandler: Out: msg.what = 0, msg.when = 0, number = 59 01-26 15:16:10.530 31127-31127/cycu.nclab.demo.neuroeeg D/TGDeviceHandler: Out: msg.what = 0, msg.when = 0, number = 60 01-26 15:16:10.530 31127-31127/cycu.nclab.demo.neuroeeg D/TGDeviceHandler: Out: msg.what = 0, msg.when = 0, number = 61 01-26 15:16:10.530 31127-31127/cycu.nclab.demo.neuroeeg D/TGDeviceHandler: Out: msg.what = 0, msg.when = 0, number = 62 01-26 15:16:10.530 31127-31127/cycu.nclab.demo.neuroeeg D/TGDeviceHandler: Out: msg.what = 0, msg.when = 0, number = 63 01-26 15:16:10.530 31127-31127/cycu.nclab.demo.neuroeeg D/TGDeviceHandler: Out: msg.what = 0, msg.when = 0, number = 64 01-26 15:16:10.530 31127-31127/cycu.nclab.demo.neuroeeg D/TGDeviceHandler: Out: msg.what = 0, msg.when = 0, number = 65 01-26 15:16:10.530 31127-31127/cycu.nclab.demo.neuroeeg D/TGDeviceHandler: Out: msg.what = 0, msg.when = 0, number = 66 01-26 15:16:10.530 31127-31127/cycu.nclab.demo.neuroeeg D/TGDeviceHandler: Out: msg.what = 0, msg.when = 0, number = 67 01-26 15:16:10.530 31127-31127/cycu.nclab.demo.neuroeeg D/TGDeviceHandler: Out: msg.what = 0, msg.when = 0, number = 68 01-26 15:16:10.530 31127-31127/cycu.nclab.demo.neuroeeg D/TGDeviceHandler: Out: msg.what = 0, msg.when = 0, number = 69 01-26 15:16:10.530 31127-31127/cycu.nclab.demo.neuroeeg D/TGDeviceHandler: Out: msg.what = 0, msg.when = 0, number = 70 01-26 15:16:10.530 31127-31127/cycu.nclab.demo.neuroeeg D/TGDeviceHandler: Out: msg.what = 0, msg.when = 0, number = 71 01-26 15:16:10.530 31127-31127/cycu.nclab.demo.neuroeeg D/TGDeviceHandler: Out: msg.what = 0, msg.when = 0, number = 72 01-26 15:16:10.530 31127-31127/cycu.nclab.demo.neuroeeg D/TGDeviceHandler: Out: msg.what = 0, msg.when = 0, number = 73 01-26 15:16:10.530 31127-31127/cycu.nclab.demo.neuroeeg D/TGDeviceHandler: Out: msg.what = 0, msg.when = 0, number = 74 01-26 15:16:10.530 31127-31127/cycu.nclab.demo.neuroeeg D/TGDeviceHandler: Out: msg.what = 0, msg.when = 0, number = 75 01-26 15:16:10.530 31127-31127/cycu.nclab.demo.neuroeeg D/TGDeviceHandler: Out: msg.what = 0, msg.when = 0, number = 76 01-26 15:16:10.530 31127-31127/cycu.nclab.demo.neuroeeg D/TGDeviceHandler: Out: msg.what = 0, msg.when = 0, number = 77 01-26 15:16:10.530 31127-31127/cycu.nclab.demo.neuroeeg D/TGDeviceHandler: Out: msg.what = 0, msg.when = 0, number = 78 01-26 15:16:10.530 31127-31127/cycu.nclab.demo.neuroeeg D/TGDeviceHandler: Out: msg.what = 0, msg.when = 0, number = 79 01-26 15:16:10.530 31127-31127/cycu.nclab.demo.neuroeeg D/TGDeviceHandler: Out: msg.what = 0, msg.when = 0, number = 80 01-26 15:16:10.530 31127-31127/cycu.nclab.demo.neuroeeg D/TGDeviceHandler: Out: msg.what = 0, msg.when = 0, number = 81 01-26 15:16:10.530 31127-31127/cycu.nclab.demo.neuroeeg D/TGDeviceHandler: Out: msg.what = 0, msg.when = 0, number = 82 01-26 15:16:10.530 31127-31127/cycu.nclab.demo.neuroeeg D/TGDeviceHandler: Out: msg.what = 0, msg.when = 0, number = 83 01-26 15:16:10.530 31127-31127/cycu.nclab.demo.neuroeeg D/TGDeviceHandler: Out: msg.what = 0, msg.when = 0, number = 84 01-26 15:16:10.530 31127-31127/cycu.nclab.demo.neuroeeg D/TGDeviceHandler: Out: msg.what = 0, msg.when = 0, number = 85 01-26 15:16:10.530 31127-31127/cycu.nclab.demo.neuroeeg D/TGDeviceHandler: Out: msg.what = 0, msg.when = 0, number = 86 01-26 15:16:10.530 31127-31127/cycu.nclab.demo.neuroeeg D/TGDeviceHandler: Out: msg.what = 0, msg.when = 0, number = 87 01-26 15:16:10.530 31127-31127/cycu.nclab.demo.neuroeeg D/TGDeviceHandler: Out: msg.what = 128, msg.when = 1129376397, number = 88 01-26 15:16:10.530 31127-31127/cycu.nclab.demo.neuroeeg D/TGDeviceHandler: Out: msg.what = 128, msg.when = 1129376396, number = 89 01-26 15:16:10.530 31127-31127/cycu.nclab.demo.neuroeeg D/TGDeviceHandler: Out: msg.what = 128, msg.when = 1129376397, number = 90 01-26 15:16:10.530 31127-31127/cycu.nclab.demo.neuroeeg D/TGDeviceHandler: Out: msg.what = 0, msg.when = 0, number = 91 01-26 15:16:10.530 31127-31127/cycu.nclab.demo.neuroeeg D/TGDeviceHandler: Out: msg.what = 0, msg.when = 0, number = 92 01-26 15:16:10.530 31127-31127/cycu.nclab.demo.neuroeeg D/TGDeviceHandler: Out: msg.what = 128, msg.when = 1129376397, number = 93 01-26 15:16:10.530 31127-31127/cycu.nclab.demo.neuroeeg D/TGDeviceHandler: Out: msg.what = 0, msg.when = 0, number = 94 01-26 15:16:10.530 31127-31127/cycu.nclab.demo.neuroeeg D/TGDeviceHandler: Out: msg.what = 0, msg.when = 0, number = 95 01-26 15:16:10.540 31127-31127/cycu.nclab.demo.neuroeeg D/TGDeviceHandler: Out: msg.what = 0, msg.when = 0, number = 96 01-26 15:16:10.540 31127-31127/cycu.nclab.demo.neuroeeg D/TGDeviceHandler: Out: msg.what = 0, msg.when = 0, number = 97 01-26 15:16:10.540 31127-31127/cycu.nclab.demo.neuroeeg D/TGDeviceHandler: Out: msg.what = 128, msg.when = 1129376397, number = 98 01-26 15:16:10.540 31127-31127/cycu.nclab.demo.neuroeeg D/TGDeviceHandler: Out: msg.what = 128, msg.when = 1129376396, number = 99
[補充]
如果改成每收到一個message就發動一個thread去做存檔的工作,一樣會發生message物件不見得問題,覺得是我忽略了某一個基礎的問題,唉~
@Override public void handleMessage(Message msg) { switch (msg.what) { ... case TGDevice.MSG_RAW_DATA: Log.e(TAG, "In: msg.what = " + msg.what + ", msg.when = " + msg.getWhen() + ", msgCount = " + msgCount++); new SavingData2(msg); break; case TGDevice.MSG_ATTENTION: Log.e(TAG, "In: msg.what = " + msg.what + ", msg.when = " + msg.getWhen() + ", msgCount = " + msgCount++); new SavingData2(msg); SensingActivity.setAtt(String.valueOf(msg.arg1)); SensingActivity.setp1(msg.arg1); case TGDevice.MSG_MEDITATION: Log.e(TAG, "In: msg.what = " + msg.what + ", msg.when = " + msg.getWhen() + ", msgCount = " + msgCount++); new SavingData2(msg); SensingActivity.setMed(String.valueOf(msg.arg1)); SensingActivity.setp2(msg.arg1); break; case TGDevice.MSG_BLINK: Log.e(TAG, "In: msg.what = " + msg.what + ", msg.when = " + msg.getWhen() + ", msgCount = " + msgCount++); new SavingData2(msg); break; ... default: break; } }
另外改成每收到一個message就發動一個thread去做存檔,因為thread會自己排程很難去控制他的順序,所以又會有後產生的message先存檔的問題,造成資料庫中的資料順序不對,可以看下面的log節錄,TGDeviceHandler產生的順序和SavingData Thread執行的順序。
01-26 16:19:23.870 30164-30164/cycu.nclab.demo.neuroeeg E/TGDeviceHandler2: In: msg.what = 128, msg.when = 1133169728, msgCount = 7216 01-26 16:19:23.870 30164-30164/cycu.nclab.demo.neuroeeg E/TGDeviceHandler2: In: msg.what = 128, msg.when = 1133169728, msgCount = 7217 01-26 16:19:23.870 30164-30164/cycu.nclab.demo.neuroeeg E/TGDeviceHandler2: In: msg.what = 128, msg.when = 1133169728, msgCount = 7218 01-26 16:19:23.870 30164-30164/cycu.nclab.demo.neuroeeg E/TGDeviceHandler2: In: msg.what = 128, msg.when = 1133169744, msgCount = 7219 01-26 16:19:23.870 30164-6424/cycu.nclab.demo.neuroeeg I/SavingData2: Out: msg.what = 0, msg.when = 0, msgCount = 7216 01-26 16:19:23.870 30164-6424/cycu.nclab.demo.neuroeeg E/DB_neurosky: saving error on msg.what = 0 01-26 16:19:23.870 30164-6423/cycu.nclab.demo.neuroeeg I/SavingData2: Out: msg.what = 128, msg.when = 1133169746, msgCount = 7215 01-26 16:19:23.870 30164-6422/cycu.nclab.demo.neuroeeg I/SavingData2: Out: msg.what = 128, msg.when = 1133169745, msgCount = 7214 01-26 16:19:23.870 30164-6425/cycu.nclab.demo.neuroeeg I/SavingData2: Out: msg.what = 0, msg.when = 0, msgCount = 7217 01-26 16:19:23.880 30164-6425/cycu.nclab.demo.neuroeeg E/DB_neurosky: saving error on msg.what = 0 01-26 16:19:23.880 30164-30164/cycu.nclab.demo.neuroeeg E/TGDeviceHandler2: In: msg.what = 128, msg.when = 1133169744, msgCount = 7220 01-26 16:19:23.880 30164-6426/cycu.nclab.demo.neuroeeg I/SavingData2: Out: msg.what = 0, msg.when = 0, msgCount = 7218 01-26 16:19:23.880 30164-30164/cycu.nclab.demo.neuroeeg E/TGDeviceHandler2: In: msg.what = 128, msg.when = 1133169745, msgCount = 7221 01-26 16:19:23.880 30164-6426/cycu.nclab.demo.neuroeeg E/DB_neurosky: saving error on msg.what = 0 01-26 16:19:23.880 30164-30164/cycu.nclab.demo.neuroeeg E/TGDeviceHandler2: In: msg.what = 128, msg.when = 1133169745, msgCount = 7222 01-26 16:19:23.880 30164-6428/cycu.nclab.demo.neuroeeg I/SavingData2: Out: msg.what = 0, msg.when = 0, msgCount = 7220 01-26 16:19:23.880 30164-6428/cycu.nclab.demo.neuroeeg E/DB_neurosky: saving error on msg.what = 0 01-26 16:19:23.880 30164-30164/cycu.nclab.demo.neuroeeg E/TGDeviceHandler2: In: msg.what = 128, msg.when = 1133169745, msgCount = 7223 01-26 16:19:23.880 30164-6427/cycu.nclab.demo.neuroeeg I/SavingData2: Out: msg.what = 0, msg.when = 0, msgCount = 7219 01-26 16:19:23.880 30164-6427/cycu.nclab.demo.neuroeeg E/DB_neurosky: saving error on msg.what = 0 01-26 16:19:23.880 30164-6429/cycu.nclab.demo.neuroeeg I/SavingData2: Out: msg.what = 0, msg.when = 0, msgCount = 7221
[補充2]
修改程式碼,在thread中檢查是否有正確的接收到message物件。SavingData.java的程式碼如下
public class SavingData2 implements Runnable { private final String TAG = getClass().getSimpleName(); Message msg; Thread myThread; private long counter; private static long threadCount = 0; public long getCounter() { return counter; } public static long getThreadCount() { return threadCount; } ReentrantLock lock = new ReentrantLock(); SavingData2(Message msg) { this.msg = msg; this.counter = threadCount++; Log.i(TAG, "Out1: msg.what = " + msg.what + ", msg.when = " + msg.getWhen() + ", msgCount = " + counter++); myThread = new Thread(this); myThread.start(); } @Override public void run() { lock.lock(); Log.i(TAG, "Out: msg.what = " + msg.what + ", msg.when = " + msg.getWhen() + ", msgCount = " + counter++); SensingActivity.getDB().insert(msg); lock.unlock(); } }
我分別在line 16跟25放一個Log來檢查物件,發現在建構子中的物件的確由傳遞進來,然而在run()執行緒中的物件則會變得不確定,如下面的log輸出,因此可能解決這個問題的方法是另外使用一個物件來存放message的內容,不要直接使用message物件。這算是系統的bug還是我的物件導向沒學好XD
01-27 12:37:29.080 18151-18151/cycu.nclab.demo.neuroeeg E/TGDeviceHandler2: In: msg.what = 4, msg.when = 1206254932, msgCount = 0 01-27 12:37:29.080 18151-18151/cycu.nclab.demo.neuroeeg I/SavingData2: Out1: msg.what = 4, msg.when = 1206254932, msgCount = 0 01-27 12:37:29.090 18151-18151/cycu.nclab.demo.neuroeeg E/TGDeviceHandler2: In: msg.what = 4, msg.when = 1206254932, msgCount = 1 01-27 12:37:29.090 18151-18151/cycu.nclab.demo.neuroeeg I/SavingData2: Out1: msg.what = 4, msg.when = 1206254932, msgCount = 1 01-27 12:37:29.100 18151-18151/cycu.nclab.demo.neuroeeg E/TGDeviceHandler2: In: msg.what = 5, msg.when = 1206254932, msgCount = 2 01-27 12:37:29.100 18151-18151/cycu.nclab.demo.neuroeeg I/SavingData2: Out1: msg.what = 5, msg.when = 1206254932, msgCount = 2 01-27 12:37:29.110 18151-18770/cycu.nclab.demo.neuroeeg I/SavingData2: Out: msg.what = 0, msg.when = 0, msgCount = 3 01-27 12:37:29.110 18151-18769/cycu.nclab.demo.neuroeeg I/SavingData2: Out: msg.what = 0, msg.when = 0, msgCount = 2 01-27 12:37:29.110 18151-18770/cycu.nclab.demo.neuroeeg E/DB_neurosky: saving error on msg.what = 0 01-27 12:37:29.110 18151-18769/cycu.nclab.demo.neuroeeg E/DB_neurosky: saving error on msg.what = 0 01-27 12:37:29.120 18151-18768/cycu.nclab.demo.neuroeeg I/SavingData2: Out: msg.what = 0, msg.when = 0, msgCount = 1 01-27 12:37:29.120 18151-18768/cycu.nclab.demo.neuroeeg E/DB_neurosky: saving error on msg.what = 0 01-27 12:37:30.060 18151-18151/cycu.nclab.demo.neuroeeg E/TGDeviceHandler2: In: msg.what = 4, msg.when = 1206255929, msgCount = 3 01-27 12:37:30.060 18151-18151/cycu.nclab.demo.neuroeeg I/SavingData2: Out1: msg.what = 4, msg.when = 1206255929, msgCount = 3 01-27 12:37:30.060 18151-18151/cycu.nclab.demo.neuroeeg E/TGDeviceHandler2: In: msg.what = 4, msg.when = 1206255929, msgCount = 4 01-27 12:37:30.060 18151-18151/cycu.nclab.demo.neuroeeg I/SavingData2: Out1: msg.what = 4, msg.when = 1206255929, msgCount = 4 01-27 12:37:30.060 18151-18151/cycu.nclab.demo.neuroeeg E/TGDeviceHandler2: In: msg.what = 5, msg.when = 1206255929, msgCount = 5 01-27 12:37:30.060 18151-18151/cycu.nclab.demo.neuroeeg I/SavingData2: Out1: msg.what = 5, msg.when = 1206255929, msgCount = 5 01-27 12:37:30.060 18151-18826/cycu.nclab.demo.neuroeeg I/SavingData2: Out: msg.what = 0, msg.when = 0, msgCount = 4 01-27 12:37:30.060 18151-18826/cycu.nclab.demo.neuroeeg E/DB_neurosky: saving error on msg.what = 0 01-27 12:37:30.060 18151-18827/cycu.nclab.demo.neuroeeg I/SavingData2: Out: msg.what = 0, msg.when = 0, msgCount = 5