Android的传感器如何获取,并显示,自己写的Demo,可以获取Android系统的一些常用传感器,可以作为测试用:
package com.example.demo9;
import android.app.Activity;
import android.content.Context;
import android.hardware.Sensor;
import android.hardware.SensorEvent;
import android.hardware.SensorEventListener;
import android.hardware.SensorManager;
import android.os.Bundle;
import android.view.Menu;
import android.widget.EditText;
public class MainActivity extends Activity implements SensorEventListener {
SensorManager sensorManager;
EditText editText;
EditText orientationEditText;
EditText magneticEditText;
EditText temeratureEditText;
EditText lightEditText;
EditText pressureEditText;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
editText = (EditText) findViewById(R.id.txt1);
orientationEditText = (EditText) findViewById(R.id.EditText01);
magneticEditText = (EditText) findViewById(R.id.EditText02);
temeratureEditText = (EditText) findViewById(R.id.EditText03);
lightEditText = (EditText) findViewById(R.id.EditText04);
pressureEditText = (EditText) findViewById(R.id.EditText05);
sensorManager = (SensorManager) getSystemService(Context.SENSOR_SERVICE);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
@Override
public void onAccuracyChanged(Sensor sensor, int accuracy) {
// TODO Auto-generated method stub
}
@Override
public void onSensorChanged(SensorEvent event) {
// TODO Auto-generated method stub
float[] values = event.values;
int sensorType = event.sensor.getType();
StringBuilder sbBuilder = null;
switch (sensorType) {
case Sensor.TYPE_ACCELEROMETER:
sbBuilder = new StringBuilder();
sbBuilder.append("x方向上的加速度:");
sbBuilder.append(values[0]);
sbBuilder.append("\ny方向上的加速度:");
sbBuilder.append(values[1]);
sbBuilder.append("\nz方向上的加速度:");
sbBuilder.append(values[2]);
editText.setText(sbBuilder.toString());
break;
case Sensor.TYPE_ORIENTATION:
sbBuilder = new StringBuilder();
sbBuilder.append("绕X轴转过的角度:");
sbBuilder.append(values[0]);
sbBuilder.append("\n绕Y轴转过的角度:");
sbBuilder.append(values[1]);
sbBuilder.append("\n绕Z轴转过的角度:");
sbBuilder.append(values[2]);
orientationEditText.setText(sbBuilder.toString());
break;
case Sensor.TYPE_MAGNETIC_FIELD:
sbBuilder = new StringBuilder();
sbBuilder.append("X方向上的角度:");
sbBuilder.append(values[0]);
sbBuilder.append("\nY方向上的角度:");
sbBuilder.append(values[1]);
sbBuilder.append("\nZ方向上的角度:");
sbBuilder.append(values[2]);
magneticEditText.setText(sbBuilder.toString());
break;
case Sensor.TYPE_TEMPERATURE:
sbBuilder = new StringBuilder();
sbBuilder.append("当前温度为:");
sbBuilder.append(values[0]);
temeratureEditText.setText(sbBuilder.toString());
break;
case Sensor.TYPE_LIGHT:
sbBuilder = new StringBuilder();
sbBuilder.append("当前光的温度为:");
sbBuilder.append(values[0]);
lightEditText.setText(sbBuilder.toString());
break;
case Sensor.TYPE_PROXIMITY:
sbBuilder = new StringBuilder();
sbBuilder.append("当前距离为:");
sbBuilder.append(values[0]);
temeratureEditText.setText(sbBuilder.toString());
break;
}
}
@SuppressWarnings("deprecation")
protected void onResume() {
super.onResume();
sensorManager.registerListener(this,
sensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER),
SensorManager.SENSOR_DELAY_GAME);
sensorManager.registerListener(this,
sensorManager.getDefaultSensor(Sensor.TYPE_ORIENTATION),
SensorManager.SENSOR_DELAY_GAME);
sensorManager.registerListener(this,
sensorManager.getDefaultSensor(Sensor.TYPE_MAGNETIC_FIELD),
SensorManager.SENSOR_DELAY_GAME);
sensorManager.registerListener(this,
sensorManager.getDefaultSensor(Sensor.TYPE_TEMPERATURE),
SensorManager.SENSOR_DELAY_GAME);
sensorManager.registerListener(this,
sensorManager.getDefaultSensor(Sensor.TYPE_LIGHT),
SensorManager.SENSOR_DELAY_GAME);
sensorManager.registerListener(this,
sensorManager.getDefaultSensor(Sensor.TYPE_PROXIMITY),
SensorManager.SENSOR_DELAY_GAME);
}
protected void onStop() {
sensorManager.unregisterListener(this);
super.onStop();
}
protected void onPause() {
sensorManager.unregisterListener(this);
super.onStop();
}
}
布局文件如下:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical"
tools:context=".AccelerometerTest" >
<TextView
android:id="@+id/textView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/hello_world" />
<EditText
android:id="@+id/txt1"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_marginTop="15dp"
android:ems="10"
android:inputType="textMultiLine" >
<requestFocus />
</EditText>
<TextView
android:id="@+id/textView2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/s1" />
<EditText
android:id="@+id/EditText01"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:ems="10"
android:inputType="textMultiLine" />
<TextView
android:id="@+id/TextView01"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/s2" />
<EditText
android:id="@+id/EditText02"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:ems="10"
android:inputType="textMultiLine" />
<TextView
android:id="@+id/TextView02"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/s3" />
<EditText
android:id="@+id/EditText03"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:ems="10"
android:inputType="textMultiLine" />
<TextView
android:id="@+id/TextView03"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/s4" />
<EditText
android:id="@+id/EditText04"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:ems="10"
android:inputType="textMultiLine" />
<TextView
android:id="@+id/TextView04"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/s5" />
<EditText
android:id="@+id/EditText05"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:inputType="textMultiLine" />
</LinearLayout>