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

          Android教程之實現(xiàn)動作感應技術(shù)

              今天有個公司說需要動作感應的幾個小游戲!也接觸android很久了,但是以前沒有看過關(guān)于動作感應技術(shù)的教程,到google上也沒搜索到類似教程!只有自己看API了,加上就其他平臺的動作感應試試吧!就在這里記錄下收獲吧!
          1.發(fā)現(xiàn)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不成功就調(diào)用
          Java代碼

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

          sensorMgr.unregisterListener(this,SensorManager.SENSOR_ACCELEROMETER);

          4.SensorListener必須實現(xiàn)兩個方法
          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;

           在方法中這樣課可以獲得數(shù)據(jù)

           
          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大于自己定義的一個數(shù)值時,進行處理
          Java代碼

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

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

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

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




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

          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 原創(chuàng)移動(mobile)

          主站蜘蛛池模板: 广宁县| 保定市| 镇雄县| 平顶山市| 芜湖市| 四会市| 健康| 博乐市| 宁城县| 汾西县| 门头沟区| 凉城县| 永和县| 达州市| 桃江县| 新兴县| 剑阁县| 新余市| 建瓯市| 浮山县| 郁南县| 五台县| 荣昌县| 巴林左旗| 八宿县| 乌拉特中旗| 孟州市| 涿鹿县| 五常市| 凌云县| 八宿县| 五家渠市| 铜陵市| 古丈县| 嘉禾县| 高密市| 响水县| 香港| 沭阳县| 兰溪市| 湘潭市|