AccelerometerSensor--- shake案例

activity_main.xml

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/hello_world" />

</RelativeLayout>
MainActivity.java

package com.example.accelerometersensortest;

import android.app.Activity;
import android.content.Context;
import android.hardware.Sensor;
import android.hardware.SensorEvent;
import android.hardware.SensorEventListener;
import android.hardware.SensorManager;
import android.os.Bundle;
import android.widget.Toast;
/**
 * 测试加速传感器的使用
	1. SensorManager : 传感器管理器
		getDefaultSensor(): 得到具体某种传感器对象
		registerListener(): 设置对传感器对象的监听
		unregisterListener(): 解注册监听
	2. Sensor : 传感器, 一般Android手机中都会有几种不同的传感器
		加速度,Sensor.TYPE_ACCELEROMETER
		陀螺仪,Sensor.TYPE_GYROSCOPE
		亮度,Sensor.TYPE_LIGHT
		地磁,Sensor.TYPE_MAGNETIC_FIELD
		方向,Sensor.TYPE_ORIENTATION
		压力,Sensor.TYPE_PRESSURE
		近场,Sensor.TYPE_PROXIMITY
		温度,Sensor.TYPE_TEMPERATURE
	3. SensorEventListener : 传感器事件监听器
		onSensorChanged(SensorEvent event) : 当传感器改变时调用
		onAccuracyChanged(Sensor sensor, int accuracy) : 当精确度变化时调用
	4. SensorEvent : 传感器事件, 其中包含了传感器收集到的数据
 */
public class MainActivity extends Activity {

	//创建传感器管理对象
	private SensorManager sensorManager;
	//创建事件监听对象(比如摇一摇)
	private SensorEventListener listener = new SensorEventListener() {
		
		//传感器有变化
		@Override
		public void onSensorChanged(SensorEvent event) {
			float[] values = event.values;
			//得到xyz轴坐标的绝对值
			float xValue = Math.abs(values[0]);
			float yValue = Math.abs(values[1]);
			float zValue = Math.abs(values[2]);
			if(xValue>15 | yValue>15 | zValue>15) {
				Toast.makeText(getApplicationContext(), "摇一摇", 0).show();
			}
		}
		
		@Override
		public void onAccuracyChanged(Sensor sensor, int accuracy) {
			
		}
	};
	
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		
		//得到传感器管理器
		sensorManager = (SensorManager) getSystemService(Context.SENSOR_SERVICE);
		//得到加速传感器的类型
		Sensor sensor = sensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER);
		//注册监听事件
		sensorManager.registerListener(listener, sensor, SensorManager.SENSOR_DELAY_NORMAL);
	}

	
}



你可能感兴趣的:(AccelerometerSensor--- shake案例)