0

モバイルデバイスでGPSの緯度と経度を取得しようとしています。ログにエラーはありませんが、情報を取得できません。「ワイヤレスネットワーク/GPSを使用する」設定が選択されているかどうかは関係ありません。ヘルプが必要です

public class MainActivity extends Activity {

    private final static String TAG = "GPSTest";

    private LocationManager mLocationManager;
    private LocationListener mLocationListener;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        Criteria criteria = new Criteria();
        criteria.setAccuracy(Criteria.ACCURACY_FINE);
        criteria.setAltitudeRequired(false);
        criteria.setBearingRequired(false);
        criteria.setCostAllowed(true);
        criteria.setPowerRequirement(Criteria.POWER_LOW);
        String serviceName = Context.LOCATION_SERVICE;
        mLocationManager = (LocationManager) getSystemService(serviceName);

        mLocationListener = new LocationListener() {

            @Override
            public void onLocationChanged(Location location) {
                // TODO Auto-generated method stub
                Log.e(TAG, "onLocationChanged");
                if (location != null) {
                    Log.e(TAG, "Current Latitude = " + location.getLatitude());
                    Log.e(TAG, "Current Longitude = " + location.getLongitude());
                }
                mLocationManager.removeUpdates(this);
            }

            @Override
            public void onProviderDisabled(String provider) {
                // TODO Auto-generated method stub
                Log.e(TAG, "onProviderDisabled");

            }

            @Override
            public void onProviderEnabled(String provider) {
                // TODO Auto-generated method stub
                Log.e(TAG, "onProviderEnabled");
            }

            @Override
            public void onStatusChanged(String provider, int status, Bundle extras) {
                // TODO Auto-generated method stub
                Log.e(TAG, "onStatusChanged");
            }
        };

        if (!mLocationManager.isProviderEnabled(LocationManager.GPS_PROVIDER)) {
            mLocationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 2000, 10, mLocationListener);
        } else {
            mLocationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 2000, 10, mLocationListener);
        }
    }

    @Override
    protected void onDestroy() {
        mLocationManager.removeUpdates(mLocationListener);
        super.onDestroy();
    }
}
4

3 に答える 3

1

実際にデバイスで使用していますか? エミュレータで使用している場合は、強制的に ( geo fix <longitude value> <latitude value>) Telnet を介して実行する必要があります。デバイスでは、[設定] で位置情報サービスを有効にする必要があります。

その他、マニフェスト ファイルに次の行がありますか?

<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_GPS" />

場所にアクセスできるようにするための許可が必要です。

編集

DDMS を使用して、エミュレーターで地理的位置をシミュレートすることもできます。

于 2013-01-29T10:25:35.483 に答える
0

以下のように、マニフェスト ファイルにアクセス許可を指定しましたか。

<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_GPS" />
于 2013-01-29T10:28:00.193 に答える
0

次の権限を付与してください:

  <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
  <uses-permission android:name="android.permission.INTERNET" />

詳細については、次のリンクを参照してください。

http://www.androidhive.info/2012/07/android-gps-location-manager-tutorial/

于 2013-01-29T10:35:23.033 に答える