隨筆 - 312, 文章 - 14, 評論 - 1393, 引用 - 0
          數據加載中……

          Android教程之實現動作感應技術

              今天有個公司說需要動作感應的幾個小游戲!也接觸android很久了,但是以前沒有看過關于動作感應技術的教程,到google上也沒搜索到類似教程!只有自己看API了,加上就其他平臺的動作感應試試吧!就在這里記錄下收獲吧!
          1.發現Android提供了SensorListener接口
          2.要使用還得有個動作感應管理器SensorManager
          Java代碼

             1. //取得SensorManager  
             2. SensorManager sensorMgr = (SensorManager)getSystemService(SENSOR_SERVICE);    

          //取得SensorManager
          SensorManager sensorMgr = (SensorManager)getSystemService(SENSOR_SERVICE);  

          3.注冊我們獲得的SensorManager
          Java代碼

             1. //返回true表示注冊成功,flase則反之  
             2. sensorMgr.registerListene(this,SensorManager.SENSOR_ACCELEROMETER,SensorManager.SENSOR_DELAY_GAME);  

          //返回true表示注冊成功,flase則反之
          sensorMgr.registerListene(this,SensorManager.SENSOR_ACCELEROMETER,SensorManager.SENSOR_DELAY_GAME);

          如果注冊SensorManager不成功就調用
          Java代碼

             1. sensorMgr.unregisterListener(this,SensorManager.SENSOR_ACCELEROMETER); 

          sensorMgr.unregisterListener(this,SensorManager.SENSOR_ACCELEROMETER);

          4.SensorListener必須實現兩個方法
          Java代碼

             1. public void onAccuracyChanged(int arg0, int arg1) {}  
             2. public void onSensorChanged(int sensor, float[] values) {}  

          public void onAccuracyChanged(int arg0, int arg1) {}
          public void onSensorChanged(int sensor, float[] values) {}

          5.自己定義一個3D的坐標
          Java代碼

             1. class Pos3D  
             2. {  
             3.     float x;  
             4.     float y;  
             5.     float z;  
             6. }  
             7. Pos3D cur,last;  

          class Pos3D
          {
              float x;
              float y;
              float z;
          }
          Pos3D cur,last;

           在方法中這樣課可以獲得數據

           
          Java代碼

             1. cur.x = values[SensorManager.DATA_X];  
             2. cur.y = values[SensorManager.DATA_Y];  
             3. cur.z = values[SensorManager.DATA_Z];  
             4. float speed = Math.abs((cur.x+cur.y+cur.z)-(last.x+last.y+last.z))/ 間隔的時間 

          cur.x = values[SensorManager.DATA_X];
          cur.y = values[SensorManager.DATA_Y];
          cur.z = values[SensorManager.DATA_Z];
          float speed = Math.abs((cur.x+cur.y+cur.z)-(last.x+last.y+last.z))/ 間隔的時間

          下面就是判斷這個speed大于自己定義的一個數值時,進行處理
          Java代碼

             1. if(speed > 1000)  
             2. {  
             3.     //這里來進行處理  
             4. }  

          if(speed > 1000)
          {
              //這里來進行處理
          }

           
          就這樣最基本的實現了動作感應,,但是大家肯定能感覺得到這個方法的不足之處,
          我也還在研究更好的方法,希望一起討論

          原文:http://www.eoeandroid.com/viewthread.php?tid=879&extra=&page=1




          Android開發完全講義(第2版)(本書版權已輸出到臺灣)

          http://product.dangdang.com/product.aspx?product_id=22741502



          Android高薪之路:Android程序員面試寶典 http://book.360buy.com/10970314.html


          新浪微博:http://t.sina.com.cn/androidguy   昵稱:李寧_Lining

          posted on 2009-08-17 10:32 銀河使者 閱讀(929) 評論(0)  編輯  收藏 所屬分類: java 原創移動(mobile)

          主站蜘蛛池模板: 三门峡市| 密云县| 江津市| 衡水市| 湘潭县| 仲巴县| 南通市| 安丘市| 西平县| 永修县| 准格尔旗| 庐江县| 石楼县| 平凉市| 清远市| 大同县| 华蓥市| 包头市| 南城县| 玛纳斯县| 溆浦县| 莎车县| 枣庄市| 双柏县| 道真| 山阴县| 南平市| 沙坪坝区| 班戈县| 科技| 呼图壁县| 三江| 柯坪县| 彰化县| 水城县| 上犹县| 九江市| 玉田县| 金堂县| 洮南市| 长武县|