亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 系統 > Android > 正文

Android編程之重力感應用法分析

2019-10-23 20:08:55
字體:
來源:轉載
供稿:網友

本文實例講述了Android編程之重力感應用法。分享給大家供大家參考,具體如下:

重力感應主要是依靠手機的加速度傳感器(accelerometer)來實現

在Android的開發中一共有八種傳感器但是不一定每一款真機都支持這些傳感器。因為很多功能用戶根本不care的所以可能開發商會把某些功能屏蔽掉。還是得根據真機的實際情況來做開發,下面主要討論加速度傳感器的具體實現方式,傳感器名稱如下:

加速度傳感器(accelerometer)
陀螺儀傳感器(gyroscope)
環境光照傳感器(light)
磁力傳感器(magnetic field)
方向傳感器(orientation)
壓力傳感器(pressure)
距離傳感器(proximity)
溫度傳感器(temperature)

1.SensorMannager傳感器管理對象

手機中的所有傳感器都須要通過SensorMannager來訪問,調用getSystemService (SENSOR_SERVICE)方法就可以拿到當前手機的傳感器管理對象。

2.實現SensorEventListener接口

我們需要實現SensorEventListener接口onSensorChanged(SensorEventevent)方法來捕獲手機傳感器的狀態,拿到手機 X軸Y軸Z軸三個方向的重力分量,有了這三個方向的數據重力感應的原理我們就已經學會了。

public void onSensorChanged(SensorEvent e) {  float x = e.values[SensorManager.DATA_X];  float y = e.values[SensorManager.DATA_Y];  float z = e.values[SensorManager.DATA_Z];}

如上述代碼所示:float x y z 3個方向的取值范圍是在-10到10之間。下面解釋一下X軸 Y軸 Z軸 重力分量的含義(這里須要注意的是坐標原點:向天空為正數,向地面為負數,剛好與編程時坐標是相反的):

(1)手機屏幕向左側方,X軸就朝向天空,垂直放置,這時候 Y 軸與Z軸沒有重力分量,因為X軸朝向天空所以它的重力分量則最大。這時候X軸、Y軸、Z軸的重力分量的值分別為(10,0,0);

(2)手機屏幕向右側方,X軸就朝向地面,垂直放置,這時候 Y 軸與 Z軸沒有重力分量,因為X軸朝向地面所以它的重力分量則最小。這時候X軸、Y軸、Z軸的重力分量的值分別為(-10,0,0);

(3)手機屏幕垂直豎立放置,Y軸就朝向天空,垂直放置,這時候X 軸與Z軸沒有重力分量,因為Y軸朝向天空所以它的重力分量則最大。這時候X軸、Y軸、Z軸的重力分量的值分別為(0,10,0);

(4)手機屏幕垂直豎立放置,Y軸就朝向地面,垂直放置,這時候X 軸與Z軸沒有重力分量,因為Y軸朝向地面所以它的重力分量則最小 。這時候X軸、Y軸、Z軸的重力分量的值分別為(0,-10,0);

(5)手機屏幕向上,Z軸就朝向天空,水平放置,這時候 X 軸與Y軸沒有重力分量,因為Z軸朝向天空所以它的重力分量則最大。這時候X軸、Y軸、Z軸的重力分量的值分別為(0,0,10);

(6)手機屏幕向上,Z軸就朝向地面,水平放置,這時候 X 軸與Y軸沒有重力分量,因為Z軸朝向地面所以它的重力分量則最小。這時候X軸、Y軸、Z軸的重力分量的值分別為(0,0,-10)。

3.注冊SensorEventListener

使用SensorMannager調用getDefaultSensor(Sensor.TYPE_ACCELEROMETER)方法拿到加速重力感應的Sensor對象。因為我討論的是重力加速度傳感器所以參數為Sensor.TYPE_ACCELEROMETER,如果需要拿到其它的傳感器需要傳入對應的名稱。使用SensorMannager調用registerListener()方法來注冊,第三個參數是檢測的靈敏精確度,根據不同的需求來選擇精準度,游戲開發建議使用  SensorManagerSENSOR_DELAY_ GAME。

4 .重力感應簡單速度計算的方式

每次搖晃手機計算出 X軸 Y軸 Z軸的重力分量可以將它們記錄下來 然后每次搖晃的重力分量和之前的重力分量可以做一個對比,利用差值和時間就可以計算出他們的移動速度。

重力感應裝置包括感應器、處理器和控制器三個部分。感應器負責偵測存儲器的狀態,計算存儲器的重力加速度值;處理器則對加速度值是否超出安全范圍進行判斷;而控制器則負責控制將磁頭鎖定或者釋放出安全停泊區。一旦感應器偵測并經處理器判斷當前的重力加速度超過安全值之后,控制器就會通過硬件控制磁頭停止讀寫工作,并快速歸位,鎖定在專有的磁頭停泊區。這一系列動作會在200毫秒內完成。當感應裝置探測到加速度值恢復到正常值范圍之后,產品才會恢復工作。

Android多媒體框架的代碼在以下目錄中:external/opencore/.這個目錄是Android多媒體框架的根目錄,其中包含的子目錄如下所示:

* android:這里面是一個上層的庫,它基于PVPlayer和PVAuthor的SDK實現了一個為Android使用的Player和Author
* baselibs:包含數據結構和線程安全等內容的底層庫
* codecs_v2:這是一個內容較多的庫,主要包含編解碼的實現,以及一個OpenMAX的實現
* engines:包含PVPlayer和PVAuthor引擎的實現
*extern_libs_v2:包含了khronos的OpenMAX的頭文件
*fileformats:文件格式的據具體解析(parser)類
* nodes:編解碼和文件解析的各個node類
* oscl:操作系統兼容庫
* pvmi: 輸入輸出控制的抽象接口
* protocols:主要是與網絡相關的RTSP、RTP、HTTP等協議的相關內容
* pvcommon:pvcommon庫文件的Android.mk文件,沒有源文件
*pvplayer:pvplayer庫文件的Android.mk文件,沒有源文件
* pvauthor:pvauthor庫文件的Android.mk文件,沒有源文件
* tools_v2:編譯工具以及一些可注冊的模塊

以下是部分測試代碼:

private SensorManager sensorMgr;Sensor sensor = sensorMgr.getDefaultSensor(Sensor.TYPE_ACCELEROMETER);//保存上一次 x y z 的坐標float bx = 0;float by = 0;float bz = 0;long btime = 0;//這一次的時間sensorMgr = (SensorManager) getSystemService(SENSOR_SERVICE);SensorEventListener lsn = new SensorEventListener() {  public void onSensorChanged(SensorEvent e) {    float x = e.values[SensorManager.DATA_X];    float y = e.values[SensorManager.DATA_Y];    float z = e.values[SensorManager.DATA_Z];    //計算出 X Y Z的數值下面可以根據這個數值來計算搖晃的速度了    //速度 = 路程/時間    //X軸的速度    float speadX = (x - bx) / (System.currentTimeMillis() - btime);    //y軸的速度    float speadY = (y - by) / (System.currentTimeMillis() - btime);    //z軸的速度    float speadZ = (z - bz) / (System.currentTimeMillis() - btime);    //這樣簡單的速度就可以計算出來,如果你想計算加速度也可以,在運動學里,加速度a與速度,    //位移都有關系:Vt=V0+at,S=V0*t+1/2at^2, S=(Vt^2-V0^2)/(2a),根據這些信息也可以求解a    bx = x;    by = y;    bz = z;    btime = System.currentTimeMillis();  }  public void onAccuracyChanged(Sensor s, int accuracy) {  }};// 注冊listener,第三個參數是檢測的精確度sensorMgr.registerListener(lsn, sensor, SensorManager.SENSOR_DELAY_GAME);

希望本文所述對大家Android程序設計有所幫助。


注:相關教程知識閱讀請移步到Android開發頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
57pao国产精品一区| 亚洲视屏在线播放| 日韩欧美高清视频| 亚洲国模精品一区| 色婷婷综合久久久久| 91在线观看免费高清完整版在线观看| 国产在线999| 亚洲午夜女主播在线直播| 欧美日韩国产精品专区| 91亚洲午夜在线| 欧美黄色片视频| 日韩亚洲精品电影| 欧美电影免费观看电视剧大全| 亚洲欧美中文在线视频| 欧美有码在线观看| 国产欧美久久久久久| 欧美激情国产日韩精品一区18| 宅男66日本亚洲欧美视频| 国产婷婷成人久久av免费高清| 亚洲第一在线视频| 中文字幕久热精品视频在线| 日韩有码视频在线| 久久久久久网站| 一区二区三区国产视频| 清纯唯美亚洲激情| 欧美一级免费看| 精品久久久免费| 亚洲大尺度美女在线| 国产91九色视频| 国产精品久久久久久婷婷天堂| 自拍偷拍亚洲区| 亚洲石原莉奈一区二区在线观看| 欧美一级大片在线观看| 成人妇女免费播放久久久| 国产精品99一区| 成人黄色午夜影院| 国产中文字幕亚洲| 中日韩美女免费视频网址在线观看| 97在线免费视频| 亚洲免费电影在线观看| 成人在线中文字幕| 黑人巨大精品欧美一区免费视频| 国产精品久久视频| 日韩国产中文字幕| 亚洲欧美日韩精品久久| 国产精品午夜一区二区欲梦| 日韩精品高清在线观看| 国产精品永久在线| 国产免费成人av| 欧美视频专区一二在线观看| 91亚洲精华国产精华| 亚洲精品自拍偷拍| 97视频在线观看亚洲| 欧美黑人xxx| 亚洲国产精品久久久久秋霞不卡| 久久久精品亚洲| 久久久久久久久中文字幕| 国产一区二区三区免费视频| 精品国产区一区二区三区在线观看| 亚洲国产日韩欧美在线动漫| 久久亚洲私人国产精品va| 成人国产精品免费视频| 亚洲欧美成人一区二区在线电影| 成人激情视频网| 久久久人成影片一区二区三区| 成人免费高清完整版在线观看| 97精品视频在线观看| 欧美一级视频免费在线观看| 日韩男女性生活视频| 久久久久久久久网站| 亚洲国产成人精品一区二区| 国产美女久久精品| 国产精品永久免费视频| 欧美日韩xxxxx| 91久久在线视频| 精品中文视频在线| 亚洲福利视频二区| 亚洲精品v天堂中文字幕| 亚洲欧美资源在线| 狠狠久久五月精品中文字幕| 日韩精品视频在线观看免费| 亚洲精品久久7777777| 日韩精品免费观看| 欧美最猛性xxxxx免费| 亚洲色图欧美制服丝袜另类第一页| 九九热精品视频在线播放| 欧美性生交xxxxx久久久| 亚洲欧洲第一视频| 亚洲精品资源美女情侣酒店| 97在线观看视频| 2018中文字幕一区二区三区| 国产不卡视频在线| 亚洲女人被黑人巨大进入| 热草久综合在线| 7777精品视频| 国内精品伊人久久| 欧美wwwxxxx| 中文字幕在线看视频国产欧美在线看完整| 日韩一区二区在线视频| 国产一区二区三区在线观看视频| 久久久久999| 国产成人综合av| 91精品国产自产在线| 色婷婷综合成人| 国内免费精品永久在线视频| 国产精品久久一区| 久久精品国产电影| 国内外成人免费激情在线视频网站| 欧美交受高潮1| 亚洲国产美女精品久久久久∴| 国产亚洲视频在线| 亚洲国产精品va在线看黑人| 一本色道久久综合狠狠躁篇怎么玩| 欧美乱大交做爰xxxⅹ性3| 欧美国产日韩一区| 国产成人综合一区二区三区| 成人a在线观看| 国产69精品99久久久久久宅男| 91免费在线视频网站| 欧美日韩在线观看视频小说| 最新国产精品亚洲| 国产91在线高潮白浆在线观看| 亚洲男人天堂久| 91精品久久久久久久久久久| 狠狠色狠狠色综合日日小说| 国产成人拍精品视频午夜网站| 国产精品久久久久久久久久久久| 欧美小视频在线观看| 亚洲无亚洲人成网站77777| 亚洲片国产一区一级在线观看| 91国产精品91| 日韩久久精品电影| 中文字幕亚洲欧美一区二区三区| 亚洲尤物视频网| 欧美成人免费va影院高清| 亚洲日本aⅴ片在线观看香蕉| 91香蕉国产在线观看| 精品中文字幕在线观看| 精品久久久久久亚洲精品| 欧美日韩国产精品一区二区不卡中文| 欧美日韩一区二区在线| 国产精品中文字幕久久久| 黑人巨大精品欧美一区二区| 亚洲一二在线观看| 97超视频免费观看| 国产丝袜一区二区三区| 欧美黄色片视频| 欧美成人精品影院| 狠狠躁天天躁日日躁欧美| 亚洲天堂色网站| 成人在线一区二区| 国产亚洲人成网站在线观看| 久久艳片www.17c.com| 久热99视频在线观看| 国产国语videosex另类| 秋霞成人午夜鲁丝一区二区三区| 成人免费高清完整版在线观看| 孩xxxx性bbbb欧美| 亚洲在线第一页| 在线激情影院一区| 色老头一区二区三区在线观看| 成人av在线天堂| 久久综合久久八八| 久久福利视频网|