2012年9月9日 星期日

目前進度



我們使用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);

       }
     };



沒有留言:

張貼留言