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:layout_width="fill_parent"    android:layout_height="wrap_content"    android:text="@string/orientation" /><EditText    android:id="@+id/etOrientation"    android:layout_width="fill_parent"    android:layout_height="wrap_content"    android:editable="false"    android:cursorVisible="false" /><TextView    android:layout_width="fill_parent"    android:layout_height="wrap_content"    android:text="@string/magnetic" /><EditText    android:id="@+id/etMagnetic"    android:layout_width="fill_parent"    android:layout_height="wrap_content"    android:editable="false"    android:cursorVisible="false" /><TextView    android:layout_width="fill_parent"    android:layout_height="wrap_content"    android:text="@string/temperature" /><EditText    android:id="@+id/etTemerature"    android:layout_width="fill_parent"    android:layout_height="wrap_content"    android:editable="false"    android:cursorVisible="false" /><TextView    android:layout_width="fill_parent"    android:layout_height="wrap_content"    android:text="@string/light" /><EditText    android:id="@+id/etLight"    android:layout_width="fill_parent"    android:layout_height="wrap_content"    android:editable="false"    android:cursorVisible="false" />    <TextView    android:layout_width="fill_parent"    android:layout_height="wrap_content"    android:text="@string/pressure" /><EditText    android:id="@+id/etPressure"    android:layout_width="fill_parent"    android:layout_height="wrap_content"    android:editable="false"    android:cursorVisible="false" />            </LinearLayout>

SensorTest.java

package org.crazyit.sensor;import android.app.Activity;import android.hardware.Sensor;import android.hardware.SensorEvent;import android.hardware.SensorEventListener;//import android.hardware.SensorEvent;//import android.hardware.SensorEventListener;import android.hardware.SensorManager;import android.os.Bundle;import android.widget.EditText;/** * Description: * <br/>site: <a href="http://www.crazyit.org">crazyit.org</a> * <br/>Copyright (C), 2001-2014, Yeeku.H.Lee * <br/>This program is protected by copyright laws. * <br/>Program Name: * <br/>Date: * @author  Yeeku.H.Lee [email protected] * @version  1.0 */public class SensorTest extends Activity    implements SensorEventListener{    // 定义Sensor管理器    private SensorManager mSensorManager;    EditText etOrientation;    EditText etMagnetic;    EditText etTemerature;    EditText etLight;    EditText etPressure;    @Override    public void onCreate(Bundle savedInstanceState)    {        super.onCreate(savedInstanceState);        setContentView(R.layout.main);        // 获取界面上的EditText组件        etOrientation = (EditText) findViewById(R.id.etOrientation);        etMagnetic = (EditText) findViewById(R.id.etMagnetic);        etTemerature = (EditText) findViewById(R.id.etTemerature);        etLight = (EditText) findViewById(R.id.etLight);        etPressure = (EditText) findViewById(R.id.etPressure);        // 获取传感器管理服务        mSensorManager = (SensorManager)getSystemService(SENSOR_SERVICE);  //    }    @Override    protected void onResume()    {        super.onResume();        // 为系统的方向传感器注册监听器        mSensorManager.registerListener(this,            mSensorManager.getDefaultSensor(Sensor.TYPE_ORIENTATION),            SensorManager.SENSOR_DELAY_GAME);        // 为系统的磁场传感器注册监听器        mSensorManager.registerListener(this,            mSensorManager.getDefaultSensor(Sensor.TYPE_MAGNETIC_FIELD),            SensorManager.SENSOR_DELAY_GAME);        // 为系统的温度传感器注册监听器        mSensorManager.registerListener(this,            mSensorManager.getDefaultSensor(Sensor.TYPE_AMBIENT_TEMPERATURE),            SensorManager.SENSOR_DELAY_GAME);        // 为系统的光传感器注册监听器        mSensorManager.registerListener(this,            mSensorManager.getDefaultSensor(Sensor.TYPE_LIGHT),            SensorManager.SENSOR_DELAY_GAME);        // 为系统的压力传感器注册监听器        mSensorManager.registerListener(this,            mSensorManager.getDefaultSensor(Sensor.TYPE_PRESSURE),            SensorManager.SENSOR_DELAY_GAME);    }    @Override    protected void onStop()    {        // 程序退出时取消注册传感器监听器        mSensorManager.unregisterListener(this);        super.onStop();    }    @Override    protected void onPause()    {        // 程序暂停时取消注册传感器监听器        mSensorManager.unregisterListener(this);        super.onPause();    }    // 以下是实现SensorEventListener接口必须实现的方法    @Override    // 当传感器精度改变时回调该方法。    public void onAccuracyChanged(Sensor sensor, int accuracy)    {    }    @Override    public void onSensorChanged(SensorEvent event)    {        float[] values = event.values;        // 获取触发event的传感器类型        int sensorType = event.sensor.getType();        StringBuilder sb = null;        // 判断是哪个传感器发生改变        switch (sensorType)        {            // 方向传感器            case Sensor.TYPE_ORIENTATION:                sb = new StringBuilder();                sb.append("绕Z轴转过的角度:");                sb.append(values[0]);                sb.append("\n绕X轴转过的角度:");                sb.append(values[1]);                sb.append("\n绕Y轴转过的角度:");                sb.append(values[2]);                etOrientation.setText(sb.toString());                break;            // 磁场传感器            case Sensor.TYPE_MAGNETIC_FIELD:                sb = new StringBuilder();                sb.append("X方向上的角度:");                sb.append(values[0]);                sb.append("\nY方向上的角度:");                sb.append(values[1]);                sb.append("\nZ方向上的角度:");                sb.append(values[2]);                etMagnetic.setText(sb.toString());                break;            // 温度传感器            case Sensor.TYPE_AMBIENT_TEMPERATURE:                sb = new StringBuilder();                sb.append("当前温度为:");                sb.append(values[0]);                etTemerature.setText(sb.toString());                break;            // 光传感器            case Sensor.TYPE_LIGHT:                sb = new StringBuilder();                sb.append("当前光的强度为:");                sb.append(values[0]);                etLight.setText(sb.toString());                break;            // 压力传感器            case Sensor.TYPE_PRESSURE:                sb = new StringBuilder();                sb.append("当前压力为:");                sb.append(values[0]);                etPressure.setText(sb.toString());                break;        }    }}

截屏:

image

更多相关文章

  1. android 手机传感器
  2. android 屏幕方向随传感器变化,并带有切换大屏,小屏和锁定屏幕方向
  3. Android模拟器学framework和driver之传感器篇5(Android framework
  4. Android 源码系列之从安全的角度深入理解BroadcastReceiver(上)
  5. 【转】Android 加速度传感器 (G-Sensor)
  6. 第三十六天 一乐在其中—Android的按钮单击事件及监听器的实现方
  7. Android传感器编程入门(一)

随机推荐

  1. Android:AppWidget放到桌面上
  2. 2019零基础学Android第1课——Android开
  3. android了解篇
  4. 在读《精通Android 3》
  5. 【转】如何成为一个android开发者
  6. Android中的权限问题
  7. Android(安卓)Activity的四种启动模式
  8. Android开发方便快捷的8个好工具
  9. android:sharedUserId
  10. 关于Android的一些设计