web-dev-qa-db-ja.com

Google Play開発者サービス6.5以降でジオフェンシングをテストする

ここで入手可能な公式サンプルを使用して、最新のGoogle Play開発者サービスで利用可能なジオフェンシングAPIをテストしています: https://github.com/googlesamples/Android-Geofencing/ そしてもちろん、トレーニングコース: http://developer.Android.com/training/location/geofencing.html

このサンプルでは、​​サンフランシスコにある2つのGoogleの建物に近づくと通知が表示されるため、自宅や職場に近づいたときにトリガーされるように微調整しました。

実際のデバイスを使用すれば動作します。通知は適切にトリガーされます。しかし、シミュレータを使用していて、telnetまたはddmsで場所を変更しても、何も起こりません。 GappsをインストールしたGenymotionなども試しましたが、何もありませんでした。

実際に私の尻を動かさずに、ジオフェンスをテストする方法について誰かが何かポインタを持っていますか?通りでは、コードをデバッグする方法がないからです...

23
Redwarp

これはあなたがする必要があることです:

  1. 設定->開発者向けオプション->模擬場所を許可

  2. 次の権限を追加します。

<uses-permission Android:name="Android.permission.ACCESS_MOCK_LOCATION" />

  1. GPS位置情報サービスがネットワーク位置情報ではなくオン(高精度)であることを確認してください

  2. アプリストアからFake GPS(リモコンを持っている黄色い嬉しい事実)というアプリをダウンロードします。そのアプリを使用して偽のGPSを設定できます

これがあなたの質問に答えることを願っています:)

9
Snake

私も同じ問題を抱えていましたが、デバイスがあれば、設定でモックの場所を有効にすることで簡単に場所を偽ることができます

設定->開発者向けオプション->モックの場所を許可

また、これをマニフェストに追加する必要もあります。

 <uses-permission Android:name="Android.permission.ACCESS_MOCK_LOCATION" /> 

私はエミュレーターを試したことはありませんが、エミュレーターを開いて同じことを行ってみてください(設定に移動してモックの場所を有効にします)。

8
Sid

アプリLockitoは、テストのためのルートのシミュレーションに役立ちますGeofencinghttps://play.google.com/store/apps/details?id=fr.dvilleneuve.lockito

模擬場所を許可する設定->開発者向けオプション->模擬場所を許可するをオンにする必要があります

ルートに沿って平均速度を設定してシミュレーションを高速化できることを発見しました。ただし、速度が速すぎると、Geofencingの出入りがトリガーされないか、トリガーされるタイミングが大幅に遅くなる可能性があります。また、トリガーが確実に発生するように、ジオフェンスの半径を少なくとも40メートルに設定しました。

Lockitoでは、速すぎる速度を設定すると、現在の場所(地図上の青い点)が十分に速く更新されません。したがって、まず低速に設定してから実行し、次に速度を上げて実行します。

4
toobsco42

私はジオフェンスのテストをほぼあきらめました...

実際にお尻を動かさずに

...しかし、徹底的な調査の結果、解決策が見つかりました(ただし、最適ではありません)。

通常の位置情報の更新とは対照的に、ジオフェンスの問題は、ジオフェンスが機能するために少し「突く」必要があることです。

ジオフェンスは他のアプリとOSに依存しています。場所の更新をアクティブに要求するアプリがなく、Androidシステムはそれが同じ場所にあると「考えている」場合(エミュレーターでは常にそうです)、フェンスはトリガーしません。

したがって、2つの解決策があります。

  • デバッグ中に位置情報の更新を積極的に要求する

  • 緯度/経度を入力し、エミュレータ設定で[送信]をクリックした後、Googleウィンドウをマルチウィンドウモードで開き、[my-position-button]をクリックします。

もちろん、他の回答で述べられていることが必要です(高精度)。

この答えが他の開発者の時間を節約することを願っています:)

3
Appyx

Android Studio Emulatorでジオフェンスアプリをテストする方法を理解するために2日間試行しました。最後にそれを行いました。デバイスにはデフォルトのPlayサービスがありました(つまり、仮想デバイスを作成しました) )。

「Google設定」>場所>モードに行くことで解決しました

そして、「デバイスのみ」から「高精度」に変更します。

このようにして、私のアプリはようやく動作しました。それが役に立てば幸い。

2
algarrobo

Androidエミュレータで模擬場所を設定する最も簡単な方法は、この目的のために設計された小さなアプリを使用することです。

ロケーションベースの機能を備えたアプリをテストするとき、私は Fake GPS location を使用します。

apkをミラーからダウンロードし(googleでcom.lexa.fakegps.apkを検索)、エミュレータに次のようにインストールします。

adb install com.lexa.fakegps.apk

それは魅力のように働きます。 telnetやDDMSのような偽の場所の設定でこれ以上問題が発生することはなく、単純な[〜#〜] gui [〜#〜]の代わりに使用できるため、はるかに簡単です。端末コマンド!

編集:ユニットテストで自動的に場所を設定する必要がある場合は、次のインテントを使用できます:

Intent startIntent = new Intent();
startIntent.setAction("com.lexa.fakegps.START");
startIntent.putExtra("lat", 56.1234);
startIntent.putExtra("long", 44.0011);
startService(startIntent);

Intent stopIntent = new Intent();
stopIntent.setAction("com.lexa.fakegps.STOP");
startService(stopIntent);

素敵なテストをしてください!

マティア

2
araks