Android中的传感器活动 [英] Sensor Activity in 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屋!