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