Android传感器使用实例1

以下仅是传感器使用实例,关于传感器的详细简绍请参考《 Android传感器的环境监控 》。
文件1:Main.java
import java.util.HashMap;
import java.util.List;
import java.util.Set;
import java.util.Map.Entry;

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 classMain extends ActivityimplementsSensorEventListener{
private TextView tvAccelerometer;
private TextView tvMagentic;
private TextView tvLight;
private TextView tvOrientation;
private TextView tvSensors;
private TextView tvAccuracy;
SensorManager sensorManager;
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
// 获得SensorManager对象
sensorManager = (SensorManager) getSystemService(SENSOR_SERVICE);
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);
tvAccuracy=(TextView)findViewById(R.id.tvAccuracy);
// 获得当前手机支持的所有传感器
tvSensors.setText("当前手机支持的所有传感器:\n");
List<Sensor> sensors = sensorManager.getSensorList(Sensor.TYPE_ALL);
for(Sensor sensor:sensors)
{
// 输出当前传感器的名称
tvSensors.append(sensor.getName() + "\n");
}
}
public voidonResume()
{
super.onResume();
registerSensorListener();
}
public voidonPause()
{
unRegisterSensorListener();
super.onPause();
}
private void registerSensorListener()
{
// 注册加速度传感器
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);

}
private voidunRegisterSensorListener()
{
sensorManager.unregisterListener(this);
}
@Override
public voidonSensorChanged(SensorEvent event)
{
// 通过getType方法获得当前传回数据的传感器类型
switch (event.sensor.getType())
{
case Sensor.TYPE_ACCELEROMETER: // 处理加速度传感器传回的数据
String accelerometer = "加速度\n" + "X:" + event.values[0] + " "
+ "Y:" + event.values[1] + " " + "Z:" + event.values[2];
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] + " " + "Y:"
+ event.values[1] + " " + "Z:" + event.values[2];
tvMagentic.setText(magentic);
break;
case Sensor.TYPE_ORIENTATION: // 处理方向传感器传回的数据
String orientation = "方向\n" + "X:" + event.values[0] + " "
+ "Y:" + event.values[1] + " " + "Z:" + event.values[2];
tvOrientation.setText(orientation);
break;
}
}
HashMap<String,Integer> hashMapAccuracy=new HashMap<String,Integer>();
StringBuffer strBuffer=new StringBuffer(50);
@Override
public voidonAccuracyChanged(Sensor sensor, int accuracy)
{
hashMapAccuracy.put(sensor.getName(), accuracy);
Set<Entry<String,Integer>> set=hashMapAccuracy.entrySet();
strBuffer.delete(0, strBuffer.length());
for(Entry<String,Integer>entry:set)
{
strBuffer.append("传感器"+entry.getKey()+"的精度改变为:"+entry.getValue()+"\n");
}
tvAccuracy.setText(strBuffer.toString());
}
}
文件2:main.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<TextView
android:id="@+id/tvAccelerometer"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
/>
<TextView
android:id="@+id/tvMagentic"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
/>
<TextView
android:id="@+id/tvLight"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
/>
<TextView
android:id="@+id/tvOrientation"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
/>
<TextView
android:id="@+id/tvSensors"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
/>
<TextView
android:id="@+id/tvAccuracy"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
/>
</LinearLayout>
<wbr style="line-height:25px"></wbr>
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值