1.获取手机上的所有的传感器
SensorManager sensorManager=(SensorManager)context.getSystemService(Context.SENSOR_SERVICE);List<Sensor> sensorList=sensorManager.getSensorList(Sensor.TYPE_ALL);for(Sensor sensor:sensorList){Log.e(sensor.getName()+"----");}
加速度传感器:LSM330 3-axis Accelerometer
磁场传感器:AK09911 3-axis Magnetic field sensor
方向传感器:iNemo Orientation sensor
光传感器:Light sensor
近程传感器:Proximity sensor
陀螺仪传感器:LSM330 Gyroscope sensor
重力传感器:iNemo Gravity sensor
线性加速度传感器:iNemo Linear Acceleration sensor
旋转向量传感器:iNemo Rotation Vector sensor
华为自带的传感器:
传感器名字:huawei hall sensor
传感器名字:huawei step counter
传感器更新速率:
SensorManager.SENSOR_DELAY_FASTEST:
指定可能最快的传感器更新速率
SensorManager.SENSOR_DELAY_GAME:
指定适合在游戏中使用的更新速率
SensorManager.SENSOR_DELAY_NORMAL:
指定默认的更新速率
SensorManager.SENSOR_DELAY_UI:
指定适合于更新UI的更新速率
public class Main extends Activity implements SensorEventListener{private TextView tvAccelerometer;private TextView tvMagentic;private TextView tvLight;private TextView tvOrientation;private TextView tvSensors;@Overridepublic 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 sensors = sensorManager.getSensorList(Sensor.TYPE_ALL);for(Sensor sensor:sensors){// 输出当前传感器的名称tvSensors.append(sensor.getName() + "\n");}}@Overridepublic 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;}}@Overridepublic void onAccuracyChanged(Sensor sensor, int accuracy){}}
本文介绍了如何在Android设备上获取并使用各种传感器,包括加速度、磁场、光线等,并提供了具体的代码实现示例。
2073

被折叠的 条评论
为什么被折叠?



