Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/355.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/performance/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 安卓7服务gpsupdate_Java_Android - Fatal编程技术网

Java 安卓7服务gpsupdate

Java 安卓7服务gpsupdate,java,android,Java,Android,我有一个android 7的java服务类,它应该提交设备的GPS位置。见下文 我遇到的问题是Android Studio抛出了一个类似“任务尚未完成”的例外 我还尝试将其作为单独的线程运行 如何解决这个问题 protected void getLocation() { // Create the location request to start receiving updates mLocationRequest = new LocationRequest(); mL

我有一个android 7的java服务类,它应该提交设备的GPS位置。见下文

我遇到的问题是Android Studio抛出了一个类似“任务尚未完成”的例外

我还尝试将其作为单独的线程运行

如何解决这个问题

protected void getLocation() {
    // Create the location request to start receiving updates
    mLocationRequest = new LocationRequest();
    mLocationRequest.setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY);
    mLocationRequest.setInterval(UPDATE_INTERVAL);
    mLocationRequest.setFastestInterval(FASTEST_INTERVAL);

    // Create LocationSettingsRequest object using location request
    LocationSettingsRequest.Builder builder = new LocationSettingsRequest.Builder();
    builder.addLocationRequest(mLocationRequest);
    LocationSettingsRequest locationSettingsRequest = builder.build();

    // Check whether location settings are satisfied
    // https://developers.google.com/android/reference/com/google/android/gms/location/SettingsClient
    SettingsClient settingsClient = LocationServices.getSettingsClient(this);
    settingsClient.checkLocationSettings(locationSettingsRequest);

    // new Google API SDK v11 uses getFusedLocationProviderClient(this)
    fusedLocationClient = getFusedLocationProviderClient(this);

    // Approach 1
    setGpsLocation(fusedLocationClient);

    // Approach 2
    new Thread(new Runnable() {
        @Override
        public void run() {
            try {
                setGpsLocation(fusedLocationClient);
            } catch (Exception ex) {
                ex.printStackTrace();
            }
        }
    }).start();
}

private void setGpsLocation(FusedLocationProviderClient f){
位置位置=f.getLastLocation().getResult();
StringBuilder sb=新的StringBuilder();
某人加上(“”);
sb.追加(“+userId+”);
某人附加(“GpsLocation”);
sb.append(“+location.getLongitude()+”);
sb.append(“+location.getLatitude()+”);
sb.append(“+sdf.format(newdate())+”);
某人加上(“”);
}
}

getLastLocation()方法返回任务对象。任务对象表示异步操作(通常是获取某个值的操作,在本例中是位置对象)。从location对象检索位置的纬度和经度。在极少数情况下,当位置不可用时,位置对象为空

任务类提供了添加成功和失败侦听器的方法。如果操作成功,成功侦听器将传递所需的对象。如果操作不成功,失败侦听器将传递异常

mFusedLocationClient.getLastLocation().addOnSuccessListener(
       new OnSuccessListener<Location>() {
           @Override
           public void onSuccess(Location location) {
               if (location != null) {
                   mLastLocation = location;
               } 
           }
       });

mFusedLocationClient.getLastLocation().addOnFailureListener(
       new OnFailureListener() {
           @Override
           public void onFailure(@NonNull Exception e) {
               Log.e(TAG, "onFailure: ", e.printStackTrace());

           }
       }
);
mFusedLocationClient.getLastLocation().addOnSuccessListener(
新OnSuccessListener(){
@凌驾
成功时的公共无效(位置){
如果(位置!=null){
mLastLocation=位置;
} 
}
});
mFusedLocationClient.getLastLocation().addOnFailureListener(
新的OnFailureListener(){
@凌驾
public void onFailure(@NonNull异常e){
Log.e(标记“onFailure:”,e.printStackTrace();
}
}
);

getLastLocation
这是一项异步任务。在调用结果之前,必须等待它完成。阅读文档
mFusedLocationClient.getLastLocation().addOnSuccessListener(
       new OnSuccessListener<Location>() {
           @Override
           public void onSuccess(Location location) {
               if (location != null) {
                   mLastLocation = location;
               } 
           }
       });

mFusedLocationClient.getLastLocation().addOnFailureListener(
       new OnFailureListener() {
           @Override
           public void onFailure(@NonNull Exception e) {
               Log.e(TAG, "onFailure: ", e.printStackTrace());

           }
       }
);