package com.android.traffic;

import android.content.Context;
import android.hardware.Sensor;
import android.hardware.SensorEvent;
import android.hardware.SensorEventListener;
import android.hardware.SensorManager;

public class MyOrientationListener implements SensorEventListener {

	private SensorManager mSensorManager;
	private Context mContext;
	private Sensor mSensor;
	
	private float lastX;
	
	public MyOrientationListener(Context context){
		this.mContext = context;
	}
	
	@SuppressWarnings("deprecation")
	public void start(){
		mSensorManager = (SensorManager) mContext.getSystemService(Context.SENSOR_SERVICE);
		
		if(mSensorManager != null){
			//获得方向传感器
			mSensor = mSensorManager.getDefaultSensor(Sensor.TYPE_ORIENTATION);
		}
		
		if(mSensor != null){
			mSensorManager.registerListener(this, mSensor, 
					SensorManager.SENSOR_DELAY_UI);
		}
			
	}
	
	public void stop(){
		mSensorManager.unregisterListener(this);
		
	}

	@SuppressWarnings("deprecation")
	@Override
	public void onSensorChanged(SensorEvent event) {//方向发生变化
		if(event.sensor.getType() == Sensor.TYPE_ORIENTATION){
			float x = event.values[SensorManager.DATA_X];
			
			if(Math.abs(x-lastX) > 1.0){
				if(mOnOrientationListener != null){
					mOnOrientationListener.onOrientationChanged(x);
				}
				
				
			}
			lastX = x;
		}
		

	}
	
	private OnOrientationListener mOnOrientationListener;
	public void setOnOrientationListener(
			OnOrientationListener mOnOrientationListener) {
		this.mOnOrientationListener = mOnOrientationListener;
	}

	public interface OnOrientationListener{
		void onOrientationChanged(float x);
	}

	@Override
	public void onAccuracyChanged(Sensor sensor, int accuracy) {
		// TODO Auto-generated method stub
		//精度的改变暂时不用管

	}

}