package com.wistron.WiCamera.WiPanorama;
import java.util.List;
import Utilities.CSStaticData;
import android.content.Context;
import android.hardware.Sensor;
import android.hardware.SensorEvent;
import android.hardware.SensorEventListener;
import android.hardware.SensorManager;
import android.util.Log;
public class OrientationSensor implements SensorEventListener {
private SensorManager sensorManager;
float[] a={0,0,0};
RotateAround mAround=null;
float[] gravity=new float[3];
final float alpha = 0.2f;
private boolean isEnable=false;
private int mStartTimes=0;
public boolean isAroundComplete=false;
public OrientationSensor(Context context) {
sensorManager = (SensorManager)context.getSystemService(context.SENSOR_SERVICE);
List<Sensor> sensors = sensorManager.getSensorList(Sensor.TYPE_ORIENTATION);
if(CSStaticData.DEBUG)
Log.e("geshu ", ""+sensors.size());
if (sensors.size() > 0) {
sensorManager.registerListener(this, sensors.get(0), SensorManager.SENSOR_DELAY_FASTEST);
}
mAround=new RotateAround();
}
public void setEnable()
{
mStartTimes=0;
isEnable=true;
}
public void setDirect(int direct )
{
mAround.setDirection(direct);
}
public void resetToInit()
{
mAround.resetToInit();
isEnable=false;
mStartTimes=0;
isAroundComplete=false;
}
public void unregisterSensorListener() {
if(sensorManager!=null)
sensorManager.unregisterListener(this);
}
@Override
public void onSensorChanged(SensorEvent event)
{
// TODO Auto-generated method stub
if(isEnable)
{
float temp=event.values[0];
mStartTimes++;
if(mStartTimes<3)
{
mAround.setStartOrientation(temp);
return;
}
isAroundComplete= mAround.onOrientationChanged(temp);
}
}
@Override
public void onAccuracyChanged(Sensor sensor, int accuracy)
{
// TODO Auto-generated method stub
}
}