Android传感器(加速度传感器,磁场传感器,光线传感器,方向传感器)详解手机开发

package mobile.android.sensor; 
 
import java.util.List; 
import android.app.Activity; 
import android.hardware.Sensor; 
import android.hardware.SensorEvent; 
import android.hardware.SensorEventListener; 
import android.hardware.SensorManager; 
import android.os.Bundle; 
import android.widget.TextView; 
 
public class Main extends Activity implements SensorEventListener { 
	private TextView tvAccelerometer; 
	private TextView tvMagentic; 
	private TextView tvLight; 
	private TextView tvOrientation; 
	private TextView tvSensors; 
 
	@Override 
	public void onCreate(Bundle savedInstanceState) { 
		super.onCreate(savedInstanceState); 
		setContentView(R.layout.main); 
		// 获得SensorManager对象 
		SensorManager sensorManager = (SensorManager) getSystemService(SENSOR_SERVICE); 
 
		// 注册加速度传感器 
		sensorManager.registerListener(this, 
				sensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER), 
				SensorManager.SENSOR_DELAY_FASTEST); 
 
		// 注册磁场传感器 
		sensorManager.registerListener(this, 
				sensorManager.getDefaultSensor(Sensor.TYPE_MAGNETIC_FIELD), 
				SensorManager.SENSOR_DELAY_FASTEST); 
 
		// 注册光线传感器 
		sensorManager.registerListener(this, 
				sensorManager.getDefaultSensor(Sensor.TYPE_LIGHT), 
				SensorManager.SENSOR_DELAY_FASTEST); 
 
		// 注册方向传感器 
		sensorManager.registerListener(this, 
				sensorManager.getDefaultSensor(Sensor.TYPE_ORIENTATION), 
				SensorManager.SENSOR_DELAY_FASTEST); 
 
		tvAccelerometer = (TextView) findViewById(R.id.tvAccelerometer); 
		tvMagentic = (TextView) findViewById(R.id.tvMagentic); 
		tvLight = (TextView) findViewById(R.id.tvLight); 
		tvOrientation = (TextView) findViewById(R.id.tvOrientation); 
		tvSensors = (TextView) findViewById(R.id.tvSensors); 
 
		// 获得当前手机支持的所有传感器 
		List<Sensor> sensors = sensorManager.getSensorList(Sensor.TYPE_ALL); 
		for (Sensor sensor : sensors) { 
			// 输出当前传感器的名称 
			tvSensors.append(sensor.getName() + "/n"); 
		} 
	} 
 
	@Override 
	public void onSensorChanged(SensorEvent event) { 
		// 通过getType方法获得当前传回数据的传感器类型 
		switch (event.sensor.getType()) { 
		case Sensor.TYPE_ACCELEROMETER: // 处理加速度传感器传回的数据 
			String accelerometer = "加速度/n" + "X:" + event.values[0] + "/n" 
					+ "Y:" + event.values[1] + "/n" + "Z:" + event.values[2] 
					+ "/n"; 
			tvAccelerometer.setText(accelerometer); 
			break; 
		case Sensor.TYPE_LIGHT: // 处理光线传感器传回的数据 
			tvLight.setText("亮度:" + event.values[0]); 
			break; 
		case Sensor.TYPE_MAGNETIC_FIELD: // 处理磁场传感器传回的数据 
			String magentic = "磁场/n" + "X:" + event.values[0] + "/n" + "Y:" 
					+ event.values[1] + "/n" + "Z:" + event.values[2] + "/n"; 
			tvMagentic.setText(magentic); 
			break; 
		case Sensor.TYPE_ORIENTATION: // 处理方向传感器传回的数据 
			String orientation = "方向/n" + "X:" + event.values[0] + "/n" + "Y:" 
					+ event.values[1] + "/n" + "Z:" + event.values[2] + "/n"; 
			tvOrientation.setText(orientation); 
			break; 
		} 
	} 
 
	@Override 
	public void onAccuracyChanged(Sensor sensor, int accuracy) { 
	} 
}

原创文章,作者:Maggie-Hunter,如若转载,请注明出处:https://blog.ytso.com/tech/aiops/3242.html

(0)
上一篇 2021年7月16日 14:07
下一篇 2021年7月16日 14:07

相关推荐

发表回复

登录后才能评论