2

私は Android でユーザーの位置を取得する方法を実装する方法を探し回っていましたが、この SO の質問に出くわしました: Android でユーザーの現在の位置を取得する最も簡単で最も堅牢な方法は何ですか?

私の質問は、LocationResult とは何ですか? どのように使用しますか?その質問で、現在の場所に基づいて近くの場所を検索する同様のアプリケーションを構築しています。場所の変更をポーリングするために、そのような別のクラスを用意することを考えているので、さまざまなアクティビティでコードを繰り返す必要はありません。LocationResult はこの目的のためのものだと思いますか? OnCreate() メソッドの 2 つのアクティビティで使用する方法の例を教えてください。

4

2 に答える 2

0

それはあなたが必要とするコードです:

    protected LocationCallback mLocationCallback = new LocationCallback()
{
    @Override
    public void onLocationAvailability(LocationAvailability locationAvailability) {
        super.onLocationAvailability(locationAvailability);
        if(!locationAvailability.isLocationAvailable())
        {// No location available
            checkLocationSettings();
            Snackbar snackLocationUnavailable = Snackbar.make(findViewById(R.id.myCoordinatorLayout), R.string.location_unavailable, Snackbar.LENGTH_LONG);
            snackLocationUnavailable.show();
        }
        else
        {
            Snackbar snackLocationAvailable = Snackbar.make(findViewById(R.id.myCoordinatorLayout), R.string.location_available, Snackbar.LENGTH_LONG);
            snackLocationAvailable.show();
        }
}

    @Override
    public void onLocationResult(LocationResult locationResult) {
        super.onLocationResult(locationResult); 
        mLastLocation = locationResult.getLastLocation();
        mMyLatLng = new LatLng(valueOf(mLastLocation.getLatitude()), valueOf(mLastLocation.getLongitude()));
        meMarker.setPosition(mMyLatLng);
        mMap.animateCamera(CameraUpdateFactory.newLatLngZoom(mMyLatLng, 15));
        Snackbar snak2 = Snackbar.make(findViewById(R.id.myCoordinatorLayout), R.string.location_updated, Snackbar.LENGTH_INDEFINITE);
        snak2.show();
    }
};

...

onCreate(){
// Build GoogleApiClient
    if (mGoogleApiClient == null) {
        mGoogleApiClient = new GoogleApiClient.Builder(this)
                .addConnectionCallbacks(this)
                .addOnConnectionFailedListener(this)
                .addApi(LocationServices.API)
                .build();

//`Build LocationRequest
        mLocationRequest = LocationRequest.create()
                .setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY)
                .setInterval(2000)        // 2 seconds, in milliseconds
                .setFastestInterval(1000); // 1 second, in milliseconds
`
//     

Build LocationSettingsRequest
        LocationSettingsRequest.Builder lRbuilder = new LocationSettingsRequest.Builder();
        lRbuilder.addLocationRequest(mLocationRequest);
        mLocationSettingsRequest = lRbuilder.build();
        lRbuilder.setAlwaysShow(true);

// ...

LocationServices.FusedLocationApi.requestLocationUpdates(mGoogleApiClient, mLocationRequest, mLocationCallback, null);

//...

 LocationServices.FusedLocationApi.removeLocationUpdates(mGoogleApiClient, mLocationCallback);
于 2016-08-06T09:05:11.290 に答える
0

ジョナサン、

LocationResult は、処理するデータを取得する簡単な方法です。これは、データを使用するためにサブクラスを実装できる抽象クラスです。抽象クラスの概念を参照してください:

于 2014-10-02T13:18:35.637 に答える