搖一搖的實現(傳感器)

package com.kwok.sensor;

import android.app.Activity;
import android.app.Service;
import android.hardware.Sensor;
import android.hardware.SensorEvent;
import android.hardware.SensorEventListener;
import android.hardware.SensorManager;
import android.os.Bundle;
import android.os.Vibrator;

public class SensorActivity extends Activity {
	/** Called when the activity is first created. */
	private SensorManager sensorMgr;
	Sensor sensor;
	private float x, y, z;
	private Vibrator vibrator;
	private SensorEventListener lsn;

	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.main);
		sensorMgr = (SensorManager) getSystemService(SENSOR_SERVICE);
		sensor = sensorMgr.getDefaultSensor(Sensor.TYPE_ACCELEROMETER);
		vibrator = (Vibrator) getSystemService(Service.VIBRATOR_SERVICE);
		lsn = new SensorEventListener() {
			/*
			 * 因爲一般正常情況下,任意軸數值最大就在9.8~10之間,只有在你突然搖動手機的時候,瞬時加速度纔會突然增大或減少。
			 * 所以,經過實際測試,只需監聽任一軸的加速度大於12的時候,一般就可以了~~~
			 */
			@Override
			public void onSensorChanged(SensorEvent event) {
				// TODO Auto-generated method stub
				x = event.values[SensorManager.DATA_X];
				y = event.values[SensorManager.DATA_Y];
				z = event.values[SensorManager.DATA_Z];
				if ((Math.abs(x) > 12 || Math.abs(y) > 12 || Math.abs(z) > 12)) {
					vibrator.vibrate(500);
				}
			}

			// 當傳感器精度改變時回調該方法
			@Override
			public void onAccuracyChanged(Sensor sensor, int accuracy) {
			}
		};

		sensorMgr.registerListener(lsn, sensor,
				////根據不同應用,需要的反應速率不同,具體根據實際情況設定
				SensorManager.SENSOR_DELAY_NORMAL);
	}
	
	@Override
	protected void onStop(){
		sensorMgr.unregisterListener(lsn);
	  super.onStop();
	}

	@Override
	protected void onPause(){
		sensorMgr.unregisterListener(lsn);
	  super.onPause();
	}
}


方向傳感器:   Sensor.TYPE_ORIENTATION
加速度(重力)傳感器: Sensor.TYPE_ACCELEROMETER
光線傳感器:    Sensor.TYPE_LIGHT
 磁場傳感器:   Sensor.TYPE_MAGNETIC_FIELD
 距離(臨近性)傳感器: Sensor.TYPE_PROXIMITY
       溫度傳感器:   Sensor.TYPE_TEMPERATURE

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章