本文介紹一個Android設(shè)備上的傳感器模擬工具:SensorSimulator。
1.沒有設(shè)備。
Android開發(fā)中要用到某些傳感器,沒有真實設(shè)備,或者已有的設(shè)備不具備某種傳感器。
這種情況當然首先是買設(shè)備,畢竟程序最終是要跑在真實設(shè)備上的,再山寨的應用也務必在真實設(shè)備上跑一跑比較好,(真實設(shè)備用多了之后就發(fā)現(xiàn)不怎么愛用模擬器了)。
當然,考慮實際情況,在不一定立即有設(shè)備的情況下,可以用這個傳感器模擬工具來開發(fā)。
2.比使用真實設(shè)備更容易控制、更方便。
即便有裝備好的真實設(shè)備,利用這個工具也可以進行一些參數(shù)的具體調(diào)試,畢竟,要嚴格控制真實設(shè)備的各種角度,人手工操作不太準確;
并且開發(fā)的時候一邊要寫代碼,一邊要動來動去也不太方便。
3. Telnet Simulator部分的功能可以模擬GPS和電池電量。
因為GPS必須是在室外才可以得到數(shù)據(jù),所以這項模擬功能很有必要(當然,Eclipse也可以往模擬器發(fā)送GPS的經(jīng)緯度坐標值)。
關(guān)于該項目功能的詳細介紹可以參看文后的鏈接。
可以模擬的傳感器有:
accelerometer(加速度計), compass(羅盤), orientation(方向傳感器), temperature(溫度傳感器), light(光傳感器), proximity(接近傳感器), pressure(壓力傳感器), linear acceleration(線性加速度計), gravity(重力感應傳感器), gyroscope(陀螺儀) and rotation vector sensors(旋轉(zhuǎn)向量傳感器)。
這個SensorSimulator工具可以把模擬的傳感器數(shù)據(jù)傳到Android模擬器,也可以記錄真實設(shè)備上的傳感器數(shù)據(jù)。
去這個鏈接
http://code.google.com/p/openintents/wiki/SensorSimulator
有項目相關(guān)介紹,然后點擊其中的下載鏈接,進入下載頁面:
http://code.google.com/p/openintents/downloads/list?q=sensorsimulator
下載最新的sensorsimulator-x.x.x.zip壓縮包。
我寫這篇文章的時候最新的壓縮包是叫sensorsimulator-2.0-rc1.zip。
readme中包含了目錄結(jié)構(gòu)的介紹和簡單的使用指南。
bin目錄下擴展名為.apk的程序就是手機端的程序了。
有兩個安裝包。
請連好設(shè)備或者打開模擬器。
如果是豌豆莢和真機的話雙擊應該就能安裝。
不行的話可以用命令行,進入當前路徑后輸入:
adb install SensorSimulatorSettings-2.0-rc1.apk
adb install SensorRecordFromDevice-2.0-rc1.apk
包名不同的話,請注意更改包名。。
安裝完成后命令行會有Success提示。
在手機或模擬器上出現(xiàn)的圖標是這樣的:
bin目錄下擴展名為.jar的程序即為PC端程序。
我是雙擊就可以執(zhí)行,這個貌似跟配置有關(guān),如果你雙擊執(zhí)行不了,也可以進入命令行執(zhí)行下列命令:
java –jar sensorsimulator-2.0-rc1.jar
后面是具體的jar包名,如果不同請注意修改。
成功后出現(xiàn)的界面如下:
運行手機端程序,填入PC端程序中左下角顯示的IP地址還有端口號。
端口號顯示在PC程序設(shè)置面的Socket中。
設(shè)置完之后轉(zhuǎn)入Testing Tab,選擇連接。
開始的時候沒有連接成功,用的IP是192.168.1.101。
吃了個飯回來換成10.0.2.2就連接成功了!
連接好后如下圖:
左邊是PC端程序,右邊是我的模擬器。
連接好后就可以利用PC端軟件進行各種調(diào)節(jié)。
注意,選中的傳感器類型變化之后需要Disconnect,再重新Connect一下。
可以看到模擬器中顯示的數(shù)字是和數(shù)據(jù)顯示區(qū)域?qū)崟r對應的,不需要手動刷新。
這樣,通過鼠標,就可以在PC端改變模擬器的傳感器數(shù)值了。
Google code:
http://code.google.com/p/openintents/wiki/SensorSimulator
相關(guān)介紹:
http://www.openintents.org/en/node/6
http://www.openintents.org/en/node/23