0

Androidで現在のユーザーの場所を見つけたい。

私はこれらのコードを使用します:

mLocationRequest = LocationRequest.create();
        mLocationRequest.setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY);
        mLocationRequest.setInterval(1000); // Update location every second
if (ContextCompat.checkSelfPermission(this, android.Manifest.permission.ACCESS_FINE_LOCATION)
                == PackageManager.PERMISSION_GRANTED) {
            LocationServices.FusedLocationApi.requestLocationUpdates(mGoogleApiClient, mLocationRequest, this);

            mMap.setMyLocationEnabled( true );
            mLastLocation = LocationServices.FusedLocationApi.getLastLocation(
                    mGoogleApiClient);
            if (mLastLocation != null) {
                lat = String.valueOf(mLastLocation.getLatitude());
                lon = String.valueOf(mLastLocation.getLongitude());

            }
            firstLoction();
        }
        else
        {
            Toast.makeText(this, "Not promisseion", Toast.LENGTH_SHORT).show();
        }

一部のネットワーク(データモバイル)で動作します。ただし、すべての場所で機能するわけではありません。(GPSにも対応しています)

ネットワークをより適切に処理するために、他にできることはありますか?

4

3 に答える 3

1

Androidアプリで位置データを取得して使用する方法でこの リンクを参照してください

于 2016-01-23T11:13:50.657 に答える
1

LocationListener インターフェイスを実装するアクティビティを作成し、利用可能なすべてのプロバイダー (GPS、ネットワークなど) を処理する FusedLocationApi を活用します。

onConnected メソッドでは、次のように進める必要があります。

@Override
public void onConnected(Bundle connectionHint) {
    LocationRequest request = new LocationRequest();
    request.setInterval(10000);
    request.setFastestInterval(5000);
    request.setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY);
    // using fused location api, taking care of all
    // available providers (e.g. GPS, NETWORK)
    // here do not forget to check for available LOCATION
    // permission before asking for updates
    LocationServices.FusedLocationApi.requestLocationUpdates(
        mGoogleApiClient, request, this);
}

Activity は LocationListener インターフェイスを実装しているため、 onLocationChanged メソッドで更新を受け取ります。

@Override
public void onLocationChanged(Location location) {
    // this method is defined by LocationListener interface
    // here you will receive location updates based
    // on fused location api        
}

バッテリーの消耗を減らすためのコードの改善方法の詳細については、こちらを参照してください。

アクティビティで GoogleMap を使用しているようです。メソッド setOnMyLocationChangeListener を使用して、GoogleMap オブジェクトから直接現在地を取得することもできます。残念ながら、このメソッドは非推奨になったため、FusedLocationProviderApi を使用することをお勧めします。

于 2016-01-23T09:49:39.113 に答える