2

This application, displays an EEG devices OSC data. So far it can display the it receives from the device.

 @Override
    public void receiveDataPacket(DataPacket p) {
        switch (p.getPacketType()) {
            case EEG:
                updateEeg(p.getValues());
                break;
            case ACCELEROMETER:
                updateAccelerometer(p.getValues());
                break;
            case ALPHA_RELATIVE:
                updateAlphaRelative(p.getValues());
                break;
            case BATTERY:
                fileWriter.addDataPacket(1, p);
                // It's library client responsibility to flush the buffer,
                // otherwise you may get memory overflow. 
                if (fileWriter.getBufferedMessagesSize() > 8096)
                    fileWriter.flush();
                break;
            default:
                break;
        }
    }


    private void updateEeg(final ArrayList<Double> data) {
        Activity activity = activityRef.get();
        if (activity != null) {
            activity.runOnUiThread(new Runnable() {
                @Override
                public void run() {
                     TextView tp9 = (TextView) findViewById(R.id.eeg_tp9);
                     TextView fp1 = (TextView) findViewById(R.id.eeg_fp1);
                     TextView fp2 = (TextView) findViewById(R.id.eeg_fp2);
                     TextView tp10 = (TextView) findViewById(R.id.eeg_tp10);
                     tp9.setText(String.format(
                        "%6.2f", data.get(Eeg.TP9.ordinal())));
                     fp1.setText(String.format(
                        "%6.2f", data.get(Eeg.FP1.ordinal())));
                     fp2.setText(String.format(
                        "%6.2f", data.get(Eeg.FP2.ordinal())));
                     tp10.setText(String.format(
                        "%6.2f", data.get(Eeg.TP10.ordinal())));
                }
            });
        }
    }

I would like to create an array that holds and records the EEG values from the different positions. I would like to populate this list and enable a button that can display a graphical representation of the data.

Could i create an array and populate it as followed in the recieveDataPacket(Datapacket p) case EEG? My problem the data is being updated via a refresh function, which refreshes it and gets the new data. There are 4 positions and i would like to atleast have 5-10 values from each position in an array to populate the line graph.

EEGData[] eegData = new EEGData[]
for(int i = 0; i<eegData.length; i++){
eegData[i] = new EEGData();}

refresh function:

    public void onClick(View v) {
    Spinner Spinner = (Spinner) findViewById(R.id.spinner);
    if (v.getId() == R.id.refresh) {
        MuManager.refreshPaired();
        List<Device> pairedDevice = MManager.getPaired();
        List<String> spinnerItems = new ArrayList<String>();
        for (Device m: pairedDevice) {
            String dev_id = m.getName() + "-" + m.getMacAddress();
            Log.i("Device", dev_id);
            spinnerItems.add(dev_id);
        }
        ArrayAdapter<String> adapterArray = new ArrayAdapter<String> (
                this, android.R.layout.simple_spinner_item, spinnerItems);
        Spinner.setAdapter(adapterArray);
    }

I know that the data is constantly varrying, could i keep a counter for the first 15 values for each position then populate an array which the graph can pull data from.

3rdeye7
  • 536
  • 4
  • 25

0 Answers0