Android中的传感器活动 [英] Sensor Activity in android

查看:77
本文介绍了Android中的传感器活动的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在使用以下类从android手机读取加速度计数据:

I am using the following class to read accelerometer data from an android mobile:

public class AccelerometerData extends Activity implements SensorEventListener {

    //variables

    public AccelerometerData()
    {

        mSensorManager = (SensorManager) getSystemService(Context.SENSOR_SERVICE);
        mAccelerometer = mSensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER);
        mSensorManager.registerListener(this, mAccelerometer, SensorManager.SENSOR_DELAY_NORMAL);
    }

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

    @Override
    protected void onPause() {
        super.onPause();
        mSensorManager.unregisterListener(this);
    }

    @Override
    protected void onResume() {
        super.onResume();
        mSensorManager.registerListener(this, mAccelerometer, SensorManager.SENSOR_DELAY_NORMAL);
    }

    @Override
    public void onSensorChanged(SensorEvent event) {
        // TODO: my codes

        }
    }
}

现在从我的主要活动课程中,我正在调用该课程以读取数据

Now from my main activity class, I was calling that class to read the data

AccelerometerData sbt = new AccelerometerData ();

并显示以下消息不幸的是AccelerometerData已停止.我是android开发的新手,不确定在这里出了什么问题.

and it shows the following message Unfortunately AccelerometerData has stopped. I am new in android development and not sure what is wrong here.

任何帮助将不胜感激.

推荐答案

您正在寻找的答案可能看起来像这样. MainActivity拥有AccelerometerData类.

The answer you're looking for might look a little something like this. The MainActivity owns the AccelerometerData class.

public class MainActivity extends Activity {
  private AccelerometerData ad;
  private TextView someTextView;

  @Override
  protected void onCreate(Bundle savedInstanceState) {
    // "this" allows 'ad' to make calls back to the MainActivity
    ad = new AccelerometerData((SensorManager)getSystemService(SENSOR_SERVICE), this);
    someTextView = (TextView)findViewById(R.id.my_text_view);
  }

  protected void onResume() {
    super.onResume();
    sensorHandler.onResume();
  }

  protected void onPause() {
    super.onPause();
    sensorHandler.onPause();
  }

  protected void setTextViewValue(float[] values){
    someTextView.setText( Float.toString(values[0]) );
  }

然后在AccelerometerData类中,它可能看起来像这样.

Then in AccelerometerData class it might look something like this.

public class AccelerometerData implements SensorEventListener {

  private final SensorManager mSensorManager;
  private final Sensor mAccelerometer;
  private final MainActivity ma;

  public AccelerometerData(SensorManager sm, MainActivity ma){
    mSensorManager = sm;
    mAccelerometer = mSensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER);
    this.ma = ma;
  }

  protected void onResume() {
    mSensorManager.registerListener(this, mAccelerometer, SensorManager.SENSOR_DELAY_NORMAL);
  }

  protected void onPause() {
    mSensorManager.unregisterListener(this);
  }

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

  public void onSensorChanged(SensorEvent event) {
    // Here we call a method in MainActivity and pass it the values from the SensorChanged event
    ma.setTextViewValue( event.values );
  }
}

这篇关于Android中的传感器活动的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆