Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/186.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
一个独立类中的Android步进检测器_Android - Fatal编程技术网

一个独立类中的Android步进检测器

一个独立类中的Android步进检测器,android,Android,我正在制作一个包含3个类的应用程序。主要活动是一个用于绘制的画布类和一个步骤检测器类。我的问题是,我的step detector类检测我的步骤,但我不能在另一个类(如activity main类)中使用它。我想做一个标志来检测一个步骤,但这是不可能的。步进检测器: public class Pasos implements SensorEventListener { private SensorManager mSensorManager; public boolean d

我正在制作一个包含3个类的应用程序。主要活动是一个用于绘制的画布类和一个步骤检测器类。我的问题是,我的step detector类检测我的步骤,但我不能在另一个类(如activity main类)中使用它。我想做一个标志来检测一个步骤,但这是不可能的。步进检测器:

public class Pasos  implements   SensorEventListener {
    private SensorManager mSensorManager;
    public boolean deteccionPaso;
    private Sensor mStepCounterSensor;
    private Sensor mStepDetectorSensor;

    @TargetApi(Build.VERSION_CODES.KITKAT)
    public Pasos(){
        mSensorManager = (SensorManager) Config.context.getSystemService(Context.SENSOR_SERVICE);
        mStepCounterSensor = mSensorManager.getDefaultSensor(Sensor.TYPE_STEP_COUNTER);
        mStepDetectorSensor = mSensorManager.getDefaultSensor(Sensor.TYPE_STEP_DETECTOR);
        deteccionPaso=false;
    }


    public boolean isDeteccionPaso() {
        return deteccionPaso;
    }

    @Override
    public void onSensorChanged(SensorEvent event) {
        Sensor sensor = event.sensor;
        float[] values = event.values;
        int value = -1;

        if (values.length > 0) {
            value = (int) values[0];
        }

        if (sensor.getType() == Sensor.TYPE_STEP_COUNTER) {
            deteccionPaso = true;

            Log.d("paso", "onSensorChanged ");


           // textView.setText("Step Counter Detected : " + value);
        }
        // For test only. Only allowed value is 1.0 i.e. for step taken
        //textView.setText("Step Detector Detected : " + value);
        if (sensor.getType() == Sensor.TYPE_STEP_DETECTOR) {

         //   deteccionPaso = true;

        }
    }

    public void register(){
        mSensorManager.registerListener(this, mStepCounterSensor, SensorManager.SENSOR_DELAY_NORMAL);
        mSensorManager.registerListener(this, mStepDetectorSensor, SensorManager.SENSOR_DELAY_NORMAL);
    }

   public void unregister(){
        mSensorManager.unregisterListener(this);
   }


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


public class MainActivity extends AppCompatActivity {
    private CanvasView customCanvas;
    public   Pasos pasos;

   @Override
   protected void onCreate(Bundle savedInstanceState) {
       super.onCreate(savedInstanceState);
       setContentView(R.layout.activity_main);
       customCanvas = (CanvasView) findViewById(R.id.signature_canvas);
       Config.context = this;
       pasos = new Pasos();

       if (pasos.isDeteccionPaso()){
           Log.d("paso", "paso ");
       }
    }

    public void clearCanvas(View v){
        customCanvas.clearCanvas();
    }

    @Override
    protected void onResume(){
        super.onResume();
        pasos.register();
   }

   @Override
   protected void onPause(){
       super.onPause();
       pasos.unregister();
   }

}

从你的活动中实例化你的步骤检测器,并为DetecionPaso创建一个getter。我做了,什么都没有。我把代码放进去了,我不知道怎么了。你只是在检查onCreate中是否有步骤检测,这是在你创建实例之后。你需要创造它,给它一个被发现的机会,然后做你的事情:是的,我试过了。类pasos中的日志告诉我步骤何时完成,但if中的日志从未出现