2017-08-04 5 views
1

バックグラウンドサービスでFusedLocation APIを使用しようとしています。 (com.google.android.gms.location.LocationListenerへのキャスト)に3番目のパラメータをキャストするために私を求めバックグラウンドサービスのFusedLocationAPI

LocationServices.FusedLocationApi.requestLocationUpdates(mGoogleAPIClient, mLocationRequest, this); 

- :私は、上のエラーを取得しています。 私はそれをやろうとしましたが、Appがクラッシュしました。アイデアはありません。なぜこれが起こっているのか、キャストするように頼んでいます。

サービスクラスの完全なコードは以下の通りです: -

public class LocationBgService extends Service implements GoogleApiClient.ConnectionCallbacks, GoogleApiClient.OnConnectionFailedListener, LocationListener { 

private GoogleApiClient mGoogleAPIClient; 
private LocationRequest mLocationRequest; 
private FusedLocationProviderApi mLocationProvider; 

@Nullable 
@Override 
public IBinder onBind(Intent intent) { 
    return null; 
} 

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

    mGoogleAPIClient = new GoogleApiClient.Builder(this) 
      .addApi(LocationServices.API) 
      .addConnectionCallbacks(this) 
      .addOnConnectionFailedListener(this) 
      .build(); 

    mLocationProvider = LocationServices.FusedLocationApi; 

    mLocationRequest = new LocationRequest(); 
    mLocationRequest.setInterval(60000); 
    mLocationRequest.setFastestInterval(15000); 
    mLocationRequest.setPriority(LocationRequest.PRIORITY_BALANCED_POWER_ACCURACY); 
} 

@Override 
public int onStartCommand(Intent intent, int flags, int startId) { 
    mGoogleAPIClient.connect(); 
    return START_STICKY; 
} 

@Override 
public void onConnected(@Nullable Bundle bundle) { 
    RequestLocationUpdates(); 
} 

private void RequestLocationUpdates() { 
    if (ActivityCompat.checkSelfPermission(this, android.Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(this, android.Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) { 

    } 
     LocationServices.FusedLocationApi.requestLocationUpdates(mGoogleAPIClient, mLocationRequest, this); //getting error here..for casting..! 

} 

@Override 
public void onConnectionSuspended(int i) { 

} 

@Override 
public void onConnectionFailed(@NonNull ConnectionResult connectionResult) { 

} 

@Override 
public void onLocationChanged(Location location) { 
    Log.d("Background Location ", "::::***********Latitude: " + location.getLatitude() + " Longitude: " + location.getLongitude()); 
} 

@Override 
public void onStatusChanged(String provider, int status, Bundle extras) { 

} 

@Override 
public void onProviderEnabled(String provider) { 

} 

@Override 
public void onProviderDisabled(String provider) { 

} 
} 

私は多くの人々がこのコードの同じ行を使用しているので、なぜ私はこのエラーを取得しています検索し、見つかりました。 私は何かやがて何かを逃しましたか?これで私を助けてください。事前に感謝します。

答えて

2

古い形式のLocationListenerを使用している可能性があります。新しいLocationServices APIではなく、LocationManager用のものを使用しているようです。あなたのimport文で

、あなたが一番下にある3つの方法を削除する必要があります。この

import com.google.android.gms.location.LocationListener; 

import android.location.LocationListener; 

を変更。彼らは新しいLocationListenerで使用されていません。また、完全に再構築するには、&をクリーニングする必要があります。新しいimportステートメントを使用すると、あなたのコードは私のために働きます。

+0

Thankz man.Such a blunder。私はこの 'com.google.android.gms.location.LocationListener'を実装して正常に動作しています。もう1つthing.Can上のコードは、GPSがオフのときに、ネットワークプロバイダを使用しているユーザーの場所を取得できます。今のところ、私はGPSがオンのときにだけユーザーの位置を取得しています。マニフェストファイルにFINE&COARSEパーミッションを追加しました。他に何かを追加する必要がありますか? –

関連する問題