6

現在、Androidでgpsの場所をテストしています(SDK Tools rev 21.0.1を使用しています。標準の手順を試しました:

  1. GPS を有効にしたエミュレータを作成します (2.1 から 4.2 までの複数のバージョンを試しました)。
  2. エミュレーターを起動する
  3. localhost:5554 への telnet
  4. geo fix long lat と入力します

理論的には、これにより gps が に設定されます。

ただし、次の兆候は、場所が正しく設定されていないことを示しています。

1. maps.google.com にアクセスするか、Google マップを開くと、常に自分の位置を特定できないと不平を言い、常に wifi をオンにするように求められます

2. GPS がアクティブになっているようには見えません。ステータス バーにアイコンが表示されません。

また、私はDDMSを試しました(これは非推奨で、もちろんモニターも試しました)。何も起こらないようです。

私はここで指摘された以前のリンクに行きました: Androidエミュレーターの新しい地理的修正で場所が更新されていません

Android - エミュレーターで GPS の位置を取得できません

エミュレーターの GPS で地理情報が修正されない - Android

しかし、これらすべてのリンクが役に立たないようです。Android プロジェクト ページにいくつかのバグ レポートがあります: http://code.google.com/p/android/issues/detail?id=13046

しかし、それはかなり古い問題であり、最終的な解決には至りませんでした。

他の誰かが同様の問題を経験したかどうか疑問に思っており、助けを提供してください。ありがとう。

4

2 に答える 2

1

アイコンが表示され、動作することを願っています。API レベル 10

package com.example.locationsddf;

import android.location.Location;
import android.location.LocationListener;
import android.location.LocationManager;
import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.widget.TextView;

public class MainActivity extends Activity {

    LocationManager lm;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        final TextView tv = (TextView) findViewById(R.id.tv);
        lm = (LocationManager) getSystemService(LOCATION_SERVICE);
        lm.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, new LocationListener() {

            @Override
            public void onStatusChanged(String arg0, int arg1, Bundle arg2) {
                // TODO Auto-generated method stub

            }

            @Override
            public void onProviderEnabled(String arg0) {
                // TODO Auto-generated method stub

            }

            @Override
            public void onProviderDisabled(String arg0) {
                // TODO Auto-generated method stub

            }

            @Override
            public void onLocationChanged(Location arg0) {
                tv.setText("Latitude: "+arg0.getLatitude()+" \nLongitude: "+arg0.getLongitude());

            }
        });
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.activity_main, menu);
        return true;
    }

}

マニフェスト.xml

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.locationsddf"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk
        android:minSdkVersion="5"
        android:targetSdkVersion="10" />
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
    <uses-permission android:name="android.permission.ACCESS_MOCK_LOCATION"/>

    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <activity
            android:name="com.example.locationsddf.MainActivity"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

</manifest>

アイコンが通知されたら、単に場所を取得するだけlm.getLastKnowLocationで機能します

于 2013-02-09T12:41:20.927 に答える
0

AVD 自体に問題がある場合があります。別の CPU アーキテクチャに切り替えてみてください。同様の問題があり、ARM と Intel を切り替えることで解決しました。場合によっては、Google サービスを有効にした AVD も役立つことがあります

また、開発者向けオプションの「モックの場所を許可する」で遊んでください

別の方法として、このクライアントを試すこともできます: https://github.com/RomanTheLegend/Pokemon_NoGo/tree/master/Sources/PokemonNoGo ポケモンをプレイするために作成しましたが、GPS ベースのアプリで動作します。デスクトップ クライアントから座標を受け取り、メイン システムの GPS プロバイダーである LocationManager.GPS_PROVIDER をモックするだけです。

最後になりましたが、AVD では .kml ファイルを再生できます。作成に役立つサービスはたくさんあります。または、「Lockito」をインストールして、Android から偽の座標を生成するだけです

于 2016-08-23T10:36:43.297 に答える