2014-09-20 118 views
4

我正在嘗試測試使用模擬器使用地理位置的我的應用程序。描述了幾種方法here。我要去Window->Open Perspective->DDMS,然後輸入經緯度。和長。一個在Location Controls,然後我點擊「發送」。無法模擬Android模擬器中的位置數據

enter image description here

但它不工作。相反,我看到以下錯誤:Unable to send command to the emulator.

爲什麼會發生這種情況!?

我不認爲我的應用程序是問題,因爲我用模擬器的默認瀏覽器進行了測試,它也無法訪問位置信息。

詳情:

  • OSX 10.9.4
  • AVD_for_Nexus_4_by_Google瞄準v4.4.2
  • 的Eclipse IDE Android開發23.0.2.1259578

更新: 我改AVD_for_Galaxy_Nexus_by_Google它仍然不起作用,但我不再看到那個錯誤。我點擊發送並沒有任何反應。

Update2: 我已經測試過使用Telnet將位置數據傳遞給模擬器,並且什麼也沒有發生。沒有錯誤。根本不值一提。 Urgh!

telnet localhost 5554 
geo fix 50 50 

它迴應OK但沒有任何反應。仍然沒有可用的位置數據。

UPDATE3: 我注意到下面的錯誤流中的logcat

09-20 17:58:59.910: E/eglCodecCommon(1777): glUtilsParamSize: unknow param 0x00000b44 
09-20 17:58:59.910: E/eglCodecCommon(1777): glUtilsParamSize: unknow param 0x00000bd0 
09-20 17:58:59.930: E/eglCodecCommon(1777): **** ERROR unknown type 0x0 (glSizeof,72) 

的應用程序似乎運行良好,並且這些錯誤理應解釋here

更新4: 我見過多個建議以確認我的AVD已啓用GPS支持,但此選項/設置不會出現在任何地方。當我打開「Android虛擬設備管理器」,然後在我的設備上點擊「編輯」時,我看到: enter image description here

沒有提到「GPS支持」。

更新5: 我檢查我所有的自動真空澱積的config.ini文件,他們都正確設置爲hw.gps=yes。我還使用Google API目標創建了AVD,但我仍然遇到同樣的問題。該應用程序加載,但沒有位置數據可用,「位置控制」以及遠程登錄。

更新6: 繼Gyebro的建議如下...試圖加載他的LocationDemo應用程序... enter image description here

下面是我在logcat中看到:

+0

'yourLocationClient.getLastLocation()'返回'null'嗎?你在實現'LocationListener'嗎?任何事都會干擾你的模擬器端口(5554)?您是否嘗試過Android Studio(及其Android設備監視器)? – Gyebro 2014-09-23 10:54:28

+0

沒有位置偵聽器。至於'yourLocatoinClient',我對Android開發很陌生,所以我不確定那是什麼。如果你給我說明,我會測試。我還沒有嘗試過Android Studio,但我嘗試過使用Genymotion插件,但仍然無法工作。 – emersonthis 2014-09-23 14:13:26

+0

只需檢查您的AVD是否具有以下設置:AVD - >硬件 - >新 - > GPS支持 - >「是」 – 2014-09-24 06:41:51

回答

-1

確保您的AVD具有GPS支持的硬件設置爲true

新建AVD>硬件>新建> GPS支持

值應該是「是」

此外,確保您的應用以某種方式請求位置更新,否則仿真器將忽略來自DDMS或控制檯的任何傳入位置。

(或)

我只是通過telnet使用android控制檯,它始終工作。

只需打開一個命令行和:

telnet localhost 5554 

5554是你的模擬器的端口號,它通常是,但可能會改變,也可以是在模擬器上的端口的窗口FRAM:AVD_NAME。

您應該看到Android控制檯消息。

要將位置發送到您的設備只需鍵入。

geo fix [] 

兩個有效的語句將

geo fix -77.036519 38.896143 
geo fix -77.036519 38.896143 100 

希望這有助於它不是DDMS,但它的作品始終。你也可以餵它nmea句子,但我不認爲你需要。

+1

感謝您的回答,但您是否閱讀過我的問題?我已經嘗試了你的建議(更新#2)。另外,我的Eclipse/ADT版本與此不匹配:'New AVD> Hardware> New> GPS support'您可以檢查您是否使用與我相同的版本? – emersonthis 2014-09-24 15:42:48

+0

請參閱上面的**更新5 **。 – emersonthis 2014-09-24 16:24:10

5

要檢查您是否模擬器支持GPS,去~/.android/avd/<emulatorname>.avd/和檢查config.inihardware-qemu.ini(如果存在的話),他們應該包含:

hw.gps = yes

編輯
必須使用谷歌API的系統映像。你應該設置Google APIs - API Level 1#爲目標

編輯結束

假如是這樣的話,而且位置是在你的模擬器啓用,在模擬器中運行這個測試應用程序:LocationTest demo,詳細請見Dev docs on Retrieving the Current Location

該樣本執行GooglePlayServicesClient.ConnectionCallbacks,GooglePlayServicesClient.OnConnectionFailedListenerLocationListener。還檢查了谷歌與LocationClient連接前播放服務(這就是爲什麼我們需要一個谷歌仿真圖像。)(見MainActivity.java

之後你啓動應用程序,你應該看到在狀態欄中的位置圖標。還要驗證GP服務是否存在並且LocationClient已連接到日誌中。

D/LocationTest﹕ Google Play services is available. 
D/LocationTest﹕ LocationClient: Connected 

使用telnet發送geo fix 66 80後(應OK響應)或其他有效使用DDMS座標,你應該看到:

D/LocationTest﹕ Location changed! 

如果您仍然失去了這種做法,另一方面呃模擬位置的方法是create a Mock Location Provider app

+0

謝謝。我檢查了我的所有AVD的config.ini文件,它們都被正確設置爲'hw.gps = yes'。看到我的**更新5 **上面。我在Eclipse上工作很慢,所以我還沒有嘗試過位置測試,但是我不確定它測試的是什麼。我知道全球定位系統不可用,因爲我可以使用默認的互聯網瀏覽器訪問請求地理位置數據的頁面,它不起作用。我應該繼續進行位置測試嗎? – emersonthis 2014-09-24 17:49:22

+0

@SDP我絕對建議嘗試一下這個小演示程序(只有一個活動,加上AndroidManifest的一些權限)。我嘗試過仿真器的瀏覽器http://html5demos.com/geo,但它不起作用。 (也許它讀取最後一個位置,狀態欄中沒有位置圖標) – Gyebro 2014-09-24 18:05:02

+0

@SDP在我請求位置更新與測試應用程序後,html5demos.com/geo設法獲取位置。 (但它並不請求位置更新本身。) – Gyebro 2014-09-24 18:13:59

1

我嘗試了最新的SDK和adb工具,我發現基於Google地圖和基於Web瀏覽器的位置(maps.google.com)也存在同樣的問題。我使用adb命令行以及telnet方法來設置位置。還驗證了我的.avd文件有hw.gps=yes(這是默認設置)。我甚至嘗試使用較舊的Google API圖像。我確定也嘗試了不同的準確度級別 - 僅設備,高精度等。我注意到很多圖形渲染問題和logcat中的一些opengl錯誤消息,與您所看到的類似。

我沒有得到谷歌地圖應用程序使用模擬位置功能在Android模擬器上工作。您也可以在真實設備上使用模擬位置,我更喜歡它的性能。有關how to use mock location please see this.的詳細信息。下載具有LocationProvider項目的zip文件,可讓您模擬不同的位置和移動場景。

所以你可以選擇:

  • 如果你想使用模擬器,請嘗試使用模擬地點
  • 我曾與genymotion成功過使用物理的Android設備與模擬位置功能

  • ,你可以設置從附帶genymotion

    genyshell.exe -c "gps setstatus enabled" genyshell.exe -c "gps setlatitude 30.3077609" genyshell.exe -c "gps setlongitude -97.7534014"

  • 命令行 genyshell任何你想要的位置

由於性能方面的原因,器件是優選的。

更新:LocationTest demo by gyebro測試和它的作品時,我設置的位置PARAMS使用telnet。所以這個問題似乎與谷歌地圖或瀏覽器,而不是模擬器或adb工具。 location test demo

1

您是否試用過免費版Genymotion?它可以作爲通過USB連接的真實設備,並且可以根據需要創建GPS位置。我知道這不是AVD問題的解決方案,但AVD通常是模擬器上Android測試的一個糟糕的解決方案。

這是免費的,如果你想專門測試這個功能。

+0

我曾嘗試使用Genymotion的免費版本,但即使在使用按鈕設置GPS位置後,它也無法正常工作。我很欣賞這個建議,但這實際上不是我問的問題的答案,所以它可能屬於其他地方的討論。 – emersonthis 2014-09-24 19:47:39

+0

那麼,genymotion是一個很棒的模擬器。這是一種遺憾,它不起作用 – Ercan 2014-09-29 15:34:49

+0

Genymotion不再免費! – 2016-12-04 12:08:02

2

你真的應該使用GENYMOTION它提供了GPS功能,其中U設置的位置座標,再加上它比默認的仿真器速度更快,幾乎在每一個操作系統工作正常,繼承人的Docus上如何應用GPS的東西該頁面內的here尋找「GPS小部件」。祝你好運。

繼承人從窗口

genymotino gps widget

0

我是通過同樣的錯誤運行的一個鏡頭。問題在於AVD DDMS在其位置座標中使用逗號而不是點。

使用高位:-16,691534 LNG:-49,266185這樣的事情,你會沒事的!