作者热门文章
- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我正在尝试从后台获取位置 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/
我正在尝试从后台获取位置 Service .问题是 onResult() Awareness.SnapshotApi.getLocation(mGoogleApiClient).setResultCa
我是一名优秀的程序员,十分优秀!