加速度计中的传感器批处理

我正在尝试实现加速度计传感器的批处理,并将x,y,z值存储在文件中。我需要存储所有加速度计values.Ex:加速度计的值10分钟。

场景:设备屏幕关闭,加速度计注册为SENSOR_DELAY_GAME,设备处于休眠模式。

我修改了github https://github.com/googlesamples/android-BatchStepSensor.git中的以下代码以获取这些值

   private String[] mEventDelaysAccelero = new String[EVENT_QUEUE_LENGTH];

 /**
     * Listener that handles step sensor events for step detector and step counter sensors.
     */
    private final SensorEventListener mListener = new SensorEventListener() {
        @Override
        public void onSensorChanged(SensorEvent event) {
            // BEGIN_INCLUDE(sensorevent)
            // store the delay of this event
            recordDelay(event);

           if (event.sensor.getType() == Sensor.TYPE_ACCELEROMETER) {
                final String delayString = getDelayStringAccelero();

                String rmsValues="";
                String[] buffer=delayString.split(",");
                for(int i=0;i<buffer.length;i++){
                    String[] buffer1=delayString.split(":");
                    Double x=Double.parseDouble(buffer1[0]);
                    Double y=Double.parseDouble(buffer1[1]);
                    Double z=Double.parseDouble(buffer1[2]);
                     float rms=(float) Math.sqrt(Math.pow(x, 2) + Math.pow(y, 2) + Math.pow(z, 2));
                    //Store in file
                    Logger.e(MainActivity.context,TAG,i+")RMS="+rms+" Timestamp="+buffer1[3]);
                }
                // Get accelerometer values.
                mSteps = (int) event.values[0];

                // Update the card with the latest values
                getCardStream().getCard(CARD_COUNTING)
                        .setTitle(getString(R.string.counting_title, mSteps))
                        .setDescription(getString(R.string.counting_description,
                                getString(R.string.sensor_accelerometer), mMaxDelay, rmsValues));
            }
        }

        @Override
        public void onAccuracyChanged(Sensor sensor, int accuracy) {
        }
    };

    /**
     * Records the delay for the event.
     *
     * @param event
     */
    private void recordDelay(SensorEvent event) {
        if(event.sensor.getType() == Sensor.TYPE_ACCELEROMETER){
            // Calculate the delay from when event was recorded until it was received here in ms
            // Event timestamp is recorded in us accuracy, but ms accuracy is sufficient here
            long timeInMillis = (new Date()).getTime();// + (event.timestamp - System.nanoTime()) / 1000000L;
            mEventDelaysAccelero[mEventData] = event.values[0]+":"+event.values[1]+":"+event.values[2]+":"+timeInMillis;
            // Increment length counter
            mEventLength = Math.min(EVENT_QUEUE_LENGTH, mEventLength + 1);
            // Move pointer to the next (oldest) location
            mEventData = (mEventData + 1) % EVENT_QUEUE_LENGTH;

        }
    }

private String getDelayStringAccelero() {
        mDelayStringBuffer.setLength(0);
        // Loop over all recorded delays and append them to the buffer as a decimal
        for (int i = 0; i < mEventLength; i++) {
            if (i > 0) {
                mDelayStringBuffer.append(", ");
            }
            final int index = (mEventData + i) % EVENT_QUEUE_LENGTH;
            final String delay = mEventDelaysAccelero[i];
            mDelayStringBuffer.append(delay);
        }

        return mDelayStringBuffer.toString();
    }

存储在文件中的读数在睡眠期间丢失了一些加速度计数值,并且仅在关闭屏幕后30秒内存储数值。

我应该在哪里实现存储方法,以便我可以获得加速度计的所有值?

转载请注明出处:http://www.bqysc.com/article/20230526/1593984.html