0

如何设置一个间隔来注册我的数据Accelerometer,例如从 1 个数据到另一个数据的 1 秒。我尝试在这里更改延迟 sensorManager.registerListener(sensorEventListener, sensor, SensorManager.SENSOR_DELAY_NORMAL);

但结果是一样的

这是我在 MainActivity 中的一部分


  accelerometer.setListener(new Accelerometer.Listener() {
               //on translation method of accelerometer
               public void onTranslation(float tx, float ty, float ts){
                   SimpleDateFormat sdf = new SimpleDateFormat("yyyy.MM.dd 'at' HH:mm:ss");
                   String currentDateandTime = sdf.format(new Date());
                   tmp1[0] += "Accelerometer: X: " + (int) tx + " Y: " + (int) ty + " Z: " + (int) ts + "   Orario:  " + currentDateandTime + "\n";
                   Log.d("" , tmp1[0]);

                   FileOutputStream fos = null;
                   try {
                       fos = new FileOutputStream(myExternalFile1);
                       fos.write(tmp1[0].getBytes());
                   } catch (FileNotFoundException e) {
                       e.printStackTrace();
                   } catch (IOException e) {
                       e.printStackTrace();
                   }
               }

           }

这是我的类 Java Acceloremter

package com.example.textanddrive;

import android.content.Context;
import android.hardware.Sensor;
import android.hardware.SensorEvent;
import android.hardware.SensorEventListener;
import android.hardware.SensorManager;

import java.io.FileNotFoundException;

public class Accelerometer {

    // create an interface with one method
    public interface Listener {
        // create method with all 3
        // axis translation as argument
        void onTranslation(float tx, float ty, float ts) throws FileNotFoundException;
    }

    // create an instance
    public Listener listener;

    // method to set the instance
    public void setListener(Listener l) {
        listener = l;
    }

    private SensorManager sensorManager;
    private Sensor sensor;
    private SensorEventListener sensorEventListener;

    // create constructor with
    // context as argument
    public Accelerometer(Context context) {
        // create instance of sensor manager
        sensorManager = (SensorManager) context.getSystemService(Context.SENSOR_SERVICE);

        // create instance of sensor
        // with type linear acceleration
        sensor = sensorManager.getDefaultSensor(Sensor.TYPE_LINEAR_ACCELERATION);

        // create the sensor listener
        sensorEventListener = new SensorEventListener() {
            // this method is called when the
            // device's position changes
            @Override
            public void onSensorChanged(SensorEvent sensorEvent) {
                // check if listener is
                // different from null
                if (listener != null) {
                    // pass the three floats in listener on translation of axis
                    try {
                        listener.onTranslation(sensorEvent.values[0], sensorEvent.values[1], sensorEvent.values[2]);
                    } catch (FileNotFoundException e) {
                        e.printStackTrace();
                    }
                }
            }

            @Override
            public void onAccuracyChanged(Sensor sensor, int i) {

            }
        };
    }

    // create register method
    // for sensor notifications
    public void register() {
        // call sensor manger's register listener
        // and pass the required arguments
        sensorManager.registerListener(sensorEventListener, sensor, SensorManager.SENSOR_DELAY_NORMAL);
    }

    // create method to unregister
    // from sensor notifications
    public void unregister() {
        // call sensor manger's unregister listener
        // and pass the required arguments
        sensorManager.unregisterListener(sensorEventListener);
    }
}
4

0 回答 0