我們使用G-sensor程式撰寫"酒醉判定"
計畫是使用G-sensor之加速度來判定是否為酒駕
當加速度大於一定得數值並在短時間內累計三次則判定為酒駕
目前進度已完成項目:
1.
三軸重力之感測
2.
抓取三軸之數據
3.
抓取ROLL之最大值(g的最大值)
4.
時間的計時
以下為G-seneor部分程式
@Override
public void onCreate(Bundle savedInstanceState)//
{
//保存當前的訊息or資料
super.onCreate(savedInstanceState);
//
/* 取得感測器服務 */
mSensorManager = (SensorManager)getSystemService(Context.SENSOR_SERVICE);
/* 註冊加速度監聽器,並可設定感測器類型及其它設定 */
mSensorManager.registerListener(mSensorListener,
mSensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER),
SensorManager.SENSOR_DELAY_FASTEST);
setContentView(R.layout.main);
textview1 = (TextView)findViewById(R.id.text1);
textview2 = (TextView)findViewById(R.id.text2);
button_1=(Button)findViewById(R.id.button1);
button_1.setOnClickListener(Handler);
}
private Button.OnClickListener Handler=new Button.OnClickListener()
{
public void onClick(View v)
{
startTime = System.currentTimeMillis();//取得目前時間
mHandlerTime.postDelayed(timerRun, 0);//計算目前已過秒數
}
};
private final SensorEventListener
mSensorListener = new SensorEventListener()
{
public void onSensorChanged(SensorEvent se)
{
x = se.values[0];
y = se.values[1];
z = se.values[2];
NumberFormat nf =
NumberFormat.getInstance();
nf.setMaximumFractionDigits(2);
textview1.setText("x:
"+ nf.format(x) +", y: "+ nf.format(y) +", z: " +
nf.format(z)+",max:"+nf.format(temp));
if(z>temp)
{
temp=z;
}
System.out.print(temp);
}
public void onAccuracyChanged(Sensor sensor, int accuracy)
{
}
};
@Override
protected void onResume()
{
super.onResume();
/* 註冊監聽器 */
mSensorManager.registerListener(mSensorListener,
mSensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER),
SensorManager.SENSOR_DELAY_FASTEST);
}
@Override
protected void onStop()
{
/* 註銷監聽器 */
mSensorManager.unregisterListener(mSensorListener);
super.onStop();
}
private final Runnable timerRun = new Runnable()
{
public void run()
{
Long spentTime = System.currentTimeMillis()
- startTime;
Long minius = (spentTime/1000)/60;
Long seconds = (spentTime/1000) % 60;
textview2.setText("time:"+minius+"分"+seconds+"秒");
mHandlerTime.postDelayed(this, 1000);
}
};