Qt

AndroidエミュレーターでGPS位置をシミュレートする方法は?



How Simulate Gps Location Android Emulator



テスト用にAndroidエミュレーターで経度と緯度を取得したいと思います。

誰かがこの目標を達成する方法を教えてもらえますか?



エミュレータの位置をテスト位置として設定するにはどうすればよいですか?


#1階

上記の解決策が機能しない場合。これを試して:



AndroidのManifest.xml内で、次の2つのリンクをアプリケーションタグに追加します 外側 、ただし、コースリストタブ内

telnet localhost 5554

#2階

エミュレータがGoogleAPIなしでAndroidイメージを実行している場合、エミュレータでGPS修復を取得することはできません。 Google APIを含むように画像を変更すると、以下に説明するすべての方法でGPS修復を適切に機能させることができます。

AVDを作成するときは、必ずGoogleAPIを使用して画像を選択してください。




#3階

1. AndroidStudioユーザー。

エミュレーターを実行した後、[ツール]-> [Android]-> [Androidデバイスモニター]に移動します

変更するには、[位置制御]グループの[エミュレータ制御]タブをクリックします。

2.Eclipseユーザー。

最初にEclipseのメニューで「ウィンドウ」を選択し、次に「パースペクティブを開く」を選択し、次に「DDMS」を選択します。つまり、[ウィンドウ]-> [予測を開く]-> [DDMS]です。

[左側のデバイス]パネルに表示され、右側にさまざまなタブが表示されます。 「エミュレータ制御」タブを選択します。

下部に、ロケーションコントロールパネルが表示されます。 [手動]タブを選択します。

テキストボックスに経度と緯度を入力し、送信ボタンをクリックします。場所をエミュレーターとアプリケーションに送信します。

3.telnetを使用します。

runコマンドにこれを入力します。

geo fix long lat geo fix -121.45356 46.51119 4392

Windowsを使用していない場合は、任意のTelnetクライアントを使用できます。

telnetに接続した後、次のコマンドを使用して位置をシミュレーターに送信します

android sdk

4.ブラウザベースのGoogleマップツールを使用します

GWTとGoogleMaps APIを使用して、ブラウザベースのマップツールを起動し、シミュレータでGPSの位置を設定するプログラムがあります。

android-gps-emulator


#4階

Dalvikデバッグモニター>エミュレーターの選択>エミュレーター制御タブ>位置制御。

DDMS-android_sdk / tools / ddmsまたはandroid_sdk / tools / monitor


#5階

最初に日食にDDMSパーツを入力し、次にシミュレーターのコントロールを開きます... [手動]セクションに移動し、緯度と経度を設定して、送信ボタンを押します。


#6階

EclipseプラグインのDDMS関数を使用してGPSを送信します。 android-gps-emulator


#7階

シェルコマンドを使用する ' ジオフィックス..。 「答えは正解であると何度も言われています。ただし、使用する場合 LocationClient.getLastLocation() データを取得するには、最初は機能しないことに注意してください。 LocationClientクラスは、GooglePlayサービスを使用して座標を取得します。私にとって、これはシミュレーターマップアプリケーションを一度実行した後に機能し始めました。最初の起動時に、Googleアプリがあなたの場所にアクセスすることを許可するように求められます。これで問題は解決すると思います。


#8階

Linuxでは、通信ポートはブロックされています。ターミナルを./adb -s #{device_name} emu geo fix #{longitude} #{latitude} platform-toolsフォルダー内に移動し、次のコマンドをトリガーします。

MapView mapView = (MapView) findViewById(R.id.mapview) final MyLocationOverlay myLocation = new MyLocationOverlay(this, mapView) mapView.getOverlays().add(myLocation) myLocation.enableMyLocation() myLocation.runOnFirstFix(new Runnable() { public void run() { GeoPoint pt = myLocation.getMyLocation() } })

#9階

Eclipseを使用していて、シミュレーターコントローラーを使用している場合は、緯度と経度を手動で設定し、シミュレーターでマップベースのアプリケーションを実行できます。


#10階

マップビューを設定して実行したとします。

telnet localhost 5554

リストには次の権限が必要です。

geo fix

シミュレートされた座標をEclipseからエミュレーターに送信するには、「ウィンドウ」メニューに移動し、「ビューの表示」>「その他」>「エミュレーター・コントロール」を選択すると、表示されるエミュレーターのコントロール・ペインから座標を送信できます。


#11階

Telnet経由でエミュレータに接続できます。次に、地理的復元、ネットワークなどの特定のデータを入力できるエミュレータコンソールがあります。

詳細はこちら 説明 オフ コンソールの使い方。コンソールに接続するには、コマンドラインを開いて次のように入力します

Tools -> Android ->Android device monitor

次に、geoコマンドを使用して、GPSロケーションプロバイダーを使用してすべてのプログラムに渡されるデバイスの緯度、経度、および目的の高さを設定できます。詳細な手順については、上記のリンクを参照してください。

コンソールで実行される特定のコマンドは次のとおりです。

Emulator Control

このサイトは、実際の緯度と経度を見つけるのに役立つことがわかりました。 http//itouchmap.com/latlong.html

複数の座標が必要な場合は、ルート付きのkmlファイルを使用することもできます。 記事上で 導入されました。現在、これ以上の情報源は見つかりません。


#12階

日食の場合:

DDMSウィンドウを下にドラッグする必要がある場合があります。 「PositionControl」は「PhoneOperation」の下にあり、通常サイズのコンソールビューでは非表示になっている場合があります(コンソール付きのバー、LogCatなどでカバーされている場合があります)。


#13階

Android Studioユーザーの場合:

シミュレーターを実行し、

次に、echo 'geo fix -99.133333 19.43333 2202' | nc localhost 5554 に移動します

オン#!/usr/bin/python # -*- coding: utf-8 -*- import sys import telnetlib from time import sleep import random HOST = '127.0.0.1' PORT = 5554 TIMEOUT = 10 LAT_SRC = 52.5243700 LNG_SRC = 13.4105300 LAT_DST = 53.5753200 LNG_DST = 10.0153400 SECONDS = 120 LAT_MAX_STEP = ((max(LAT_DST, LAT_SRC) - min(LAT_DST, LAT_SRC)) / SECONDS) * 2 LNG_MAX_STEP = ((max(LNG_DST, LNG_SRC) - min(LNG_DST, LNG_SRC)) / SECONDS) * 2 DIRECTION_LAT = 1 if LAT_DST - LAT_SRC > 0 else -1 DIRECTION_LNG = 1 if LNG_DST - LNG_SRC > 0 else -1 lat = LAT_SRC lng = LNG_SRC tn = telnetlib.Telnet(HOST, PORT, TIMEOUT) tn.set_debuglevel(9) tn.read_until('OK', 5) tn.write('geo fix {0} {1} '.format(LNG_SRC, LAT_SRC)) #tn.write('exit ') for i in range(SECONDS): lat += round(random.uniform(0, LAT_MAX_STEP), 7) * DIRECTION_LAT lng += round(random.uniform(0, LNG_MAX_STEP), 7) * DIRECTION_LNG #tn.read_until('OK', 5) tn.write('geo fix {0} {1} '.format(lng, lat)) #tn.write('exit ') sleep(1) tn.write('geo fix {0} {1} '.format(LNG_DST, LAT_DST)) tn.write('exit ') print tn.read_all() タブをオンにしてから、ロケーションコントロールグループを使用します。


#14F

私自身のプロジェクトでは、Androidエミュレーターのシミュレートされた場所を提供できるオンラインサービスを開発しました。

緯度/経度に加えて、geofixの代わりにgeonmeaを使用し、速度、進行方向、正確な時間などを設定することもできます。

このサービスには、nc(netcat)コマンドラインユーティリティが必要です。それ以上のことはありません。

http://www.kisstech.ch/nmea/


#15F

Mac、Linux、またはCygwinの場合:

geo fix

それはあなたをメキシコシティに連れて行くでしょう。それに応じて経度/緯度/高度を変更します。 nmeaに興味がなければ、それで十分です。


#16階

GPSの位置をtelnet経由でエミュレーターにプッシュするPythonスクリプトを作成しました。ソースとターゲットの場所を定義します。座標がデバイスにプッシュされるタイミングを制御できるタイムオフセットもあります。場所は毎秒蜂によって一度押されます。

以下の例では、スクリプトは120秒でベルリンからハンブルクに移動します。 1秒あたり1ステップ/ gps位置、ランダムな距離。

#!/usr/bin/env python # -*- coding: utf-8 -*- import sys import telnetlib from time import sleep import random FILE = open('/home/username/.emulator_console_auth_token', 'r') AUTH_TOKEN = FILE.read() FILE.close() HOST = '127.0.0.1' PORT = 5554 TIMEOUT = 10 LAT_SRC = 52.5243700 LNG_SRC = 13.4105300 LAT_DST = 53.5753200 LNG_DST = 10.0153400 SECONDS = 120 LAT_MAX_STEP = ((max(LAT_DST, LAT_SRC) - min(LAT_DST, LAT_SRC)) / SECONDS) * 2 LNG_MAX_STEP = ((max(LNG_DST, LNG_SRC) - min(LNG_DST, LNG_SRC)) / SECONDS) * 2 DIRECTION_LAT = 1 if LAT_DST - LAT_SRC > 0 else -1 DIRECTION_LNG = 1 if LNG_DST - LNG_SRC > 0 else -1 lat = LAT_SRC lng = LNG_SRC tn = telnetlib.Telnet(HOST, PORT, TIMEOUT) tn.set_debuglevel(9) tn.read_until('OK', 5) tn.write('auth {0} '.format(AUTH_TOKEN)) tn.read_until('OK', 5) tn.read_until('OK', 5) tn.write('geo fix {0} {1} '.format(LNG_SRC, LAT_SRC)) #tn.write('exit ') for i in range(SECONDS): lat += round(random.uniform(0, LAT_MAX_STEP), 7) * DIRECTION_LAT lng += round(random.uniform(0, LNG_MAX_STEP), 7) * DIRECTION_LNG #tn.read_until('OK', 5) tn.write('geo fix {0} {1} '.format(lng, lat)) #tn.write('exit ') sleep(1) tn.write('geo fix {0} {1} '.format(LNG_DST, LAT_DST)) tn.write('exit ') print tn.read_all()

#17階

Android Studio(1.3)を使用している場合:

  • メニューの「ツール」をクリックします
  • 'アンドロイド'
  • 「Androidデバイスモニター」
  • 現在のエミュレータをクリックします
  • タブ「エミュレータ制御」
  • 「位置制御」に移動し、緯度と経度を入力します

#18階

adbを介して多くのポイントのジオロケーションを設定しようとしましたが、アプリにGPSデータを表示させることができませんでした。ただし、DDMSを開こうとすると、アプリケーションのプロセスを選択し、シミュレータの[コントロール]タブから座標を送信すると、すぐに機能します。


#19F

新しいシミュレーターの場合:

http://developer.android.com/tools/devices/emulator.html#extended

基本的に、エミュレーターコントロール(エミュレーターの右側にあります)の3つのドットボタンをクリックすると、場所を含むエミュレーターを制御できるメニューが開きます。


#20階

あなたは次のようなものを使うことができます genymotion クラスシミュレーター。このシミュレーターを使用すると、現在のGPS位置などを柔軟にシミュレートできます。


#21F

Android Studioには、「モックロケーションプラグイン」と呼ばれるプラグインがあります。このプラグインを使用して、複数のポイントをシミュレートできます。詳細なマニュアルは次のリンクにあります。 AndroidStudio。 シミュレートされた位置プラグインを使用して複数のGPSポイントをシミュレートします


#22F

#!/usr/bin/env bash export ATOKEN=`cat ~/.emulator_console_auth_token` echo -ne 'auth $ATOKEN geo fix -99.133333 19.43333 2202 ' | nc localhost 5554 を使用する代わりに、シミュレータのGPS座標を設定し、特定の緯度と経度の座標を手動で決定する方法を探しています。

何も見つかりませんでした。GWTとGoogleMaps APIを使用して、ブラウザベースのマップツールを起動し、シミュレータでGPSの位置を設定する小さなプログラムを作成しました。

android-gps-emulator

それが間違いなくこの困難/問題に遭遇した他の人を助けることができることを願っています。

画像


#23階

コメントはまだありません。@ ectomorphsを更新してここで回答してください。リモートでログインするときに認証トークンが必要になります。 Linuxでは/home/username/.emulator_console_auth_tokenの下にあります

adb emu geo fix [longtitude] [latitude]

シェルスクリプトから、次のようにcoorinateを設定できます

token=$(cat ~/.emulator_console_auth_token) cat <(echo -e 'auth $token geo fix 96.0290791 16.9041016 exit') - | nc localhost 5554

#24階

次の解決策が私のために働いた-コマンドラインを開いて書く:

adb devices

#25階

アルベルト・ガオナの答えを一行で書くだけ

adb emu

5554 is telnet localhost 5555表示されるエミュレータのポート番号。

場合geo fix -121.45356 46.51119 4392仕事、はるかに良い。


#26階

ここではエミュレータ自体の組み込みソリューションについては誰も言及していないので、将来の訪問者のために、ビジュアルと共有したいと思います。

まず、Androidエミュレーターを実行してから、以下に示すようにメニューボタン(3つのドット)をクリックします。

画像

次に、 'を選択します ポジション'、 次に、必要に応じて座標を変更します。押す ' 送信」 ボタンを押すと、変更はすぐに有効になります(理解を深めるために、Googleマップを開くことをお勧めします)。

画像

Android Studioバージョン:2.3.3

さらに、さまざまな場所でアプリケーションにリアルタイムで入力できるようにするために、GPXファイルを使用できます。グーグルマップの方向リンクを介してこのファイルを作成するのは非常に簡単です:

  1. Googleマップに移動し、場所を選択してから[方向]を押し、2番目の場所を入力します。
  2. ルートを作成したら、ブラウザからリンクをコピーします
  3. このWebサイトにアクセスします。 https//mapstogpx.com そして、リンクを「Let'sGo」ボックスに貼り付けます
  4. 「Let'sGo」ボタンを押すと、GPXファイルがダウンロードされます

[GPS / KMLの読み込み]ボタンを使用して、作成したファイルをシミュレータに読み込み、速度を選択してから、下部にある緑色の再生ボタンを押します。次の図に示すように、場所はリアルタイムで送信されます。


#27階

AndroidStudioを開きます-> 'ツール'メニュー-> 'Android'-> 'Androidデバイスモニター'-> 'エミュレーター'タブ-> 'ロケーションコントロール'->希望の経度と緯度を設定し、必要に応じてプロジェクトを確認します


#28階

エミュレータコンソールで「geo」コマンドを使用します

コマンドラインからシミュレートされた位置データを送信するには:

  1. Androidエミュレーターでアプリケーションを起動し、SDK / toolsディレクトリのターミナル/コンソールを開きます。

  2. エミュレータコンソールに接続します。

    Eclipse (5555を、シミュレーターが実行されている任意のポートに置き換えます)

  3. 位置データの送信:*固定された地理的位置を送信するための地理的修正。

    このコマンドは、経度と緯度を10進数で、オプションの高さをメートルで受け入れます。例えば:

    Window->Open Perspective->DDMS

#29階

使用している場合Location Controls 、 'Sendに移動します次に、「

 1つ入力して、「
|_+_|
」をクリックします。 。


#30階

見る ユーザーの場所を取得する

シミュレートされた位置データを提供する 以下をご覧ください。あなたは解決策を見つけるでしょう。