gpt4 book ai didi

android - Awareness.SnapshotApi.getLocation 中的 onResult() 未从服务调用

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:11:06 26 4
gpt4 key购买 nike

我正在尝试从后台获取位置 Service .问题是 onResult() Awareness.SnapshotApi.getLocation(mGoogleApiClient).setResultCallback(new ResultCallback<LocationResult>() 中的函数没有被调用。这里可能出了什么问题?

函数onConnected()onConnectionSuspended()也没有接到电话,但是当我打印出来时 mGoogleApiClient.isConnected() = true被退回。

所以我试图理解为什么 onConnected()也没有被调用。

public class BlockingService extends Service implements GoogleApiClient.ConnectionCallbacks {
private GoogleApiClient mGoogleApiClient;

@Override
public int onStartCommand(Intent intent, int flags, int startId) {

initAwarenessAPI();
amIClosetoLocation(<LatLng I get from my database>);

return START_NOT_STICKY;
}

@Override
public void onDestroy() {

if (mGoogleApiClient.isConnected()) {
mGoogleApiClient.disconnect();
}
super.onDestroy();
}

private void initAwarenessAPI() {
Context context = getApplicationContext();
mGoogleApiClient = new GoogleApiClient.Builder(context)
.addApi(Awareness.API)
.build();
mGoogleApiClient.connect();
}

private Boolean amIClosetoLocation(final LatLng savedLoc) {
final String TAG = "Awareness";
mLog.printToLog(className + Constants.funcStart + MethodName.methodName() + ": Entered Function");
amIClosetoLocation = false;

if (ContextCompat.checkSelfPermission(
getApplicationContext(),
android.Manifest.permission.ACCESS_FINE_LOCATION) !=
PackageManager.PERMISSION_GRANTED) {
mLog.printToLog(className + MethodName.methodName() + ": ***DONT HAVE LOCATION PERMISSION***");
} else {
mLog.printToLog(className + MethodName.methodName()
+ ": Permission Exists -- so now going to get location");

Awareness.SnapshotApi.getLocation(mGoogleApiClient)
.setResultCallback(new ResultCallback<LocationResult>() {
@Override
public void onResult(@NonNull LocationResult locationResult) {
//THIS FUNCTION IS NOT GETTING CALLED
if (!locationResult.getStatus().isSuccess()) {
Log.e(TAG, "Could not get location.");

mLog.printToLog(className + MethodName.methodName() + ": Could NOT get location");

return false;
} else {
mLog.printToLog(className + MethodName.methodName()
+ ": Success: Able to send location");
}
Location currLocation = locationResult.getLocation();

mLog.printToLog(className + MethodName.methodName()
+ ": Success, Received location = " + currLocation.toString());

mLog.printToLog(className + Constants.funcStart + MethodName.methodName() +
": Got Location = Lat: " +
currLocation.getLatitude() +
", Lon: " + currLocation.getLongitude());
}
});
}


mLog.printToLog(className + Constants.funcEnd + MethodName.methodName()
+ ": Exiting Function, returning amIClosetoLocation = " + amIClosetoLocation);


return amIClosetoLocation;
}


@Override
public void onConnected(@Nullable Bundle bundle) {

mLog.printToLog(className + Constants.funcStart + MethodName.methodName() + ": Entered Function");


@Override
public void onConnectionSuspended(int i) {

}
}

最佳答案

new GoogleApiClient.Builder(context) 第二个参数是回调监听器,您错过了它。

我的意思是:new GoogleApiClient.Builder(context, this)

关于android - Awareness.SnapshotApi.getLocation 中的 onResult() 未从服务调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40144912/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com