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 class Main extends Activity  implements SensorEventListener{
 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 void onResume()
    {
     super.onResume();
     registerSensorListener();
    }
    public void onPause()
    {
     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 void unRegisterSensorListener()
    {
     sensorManager.unregisterListener(this);
    }
    @Override
    public void onSensorChanged(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 void onAccuracyChanged(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>

你可能感兴趣的:(android,String,layout,Integer,encoding,delay)