我正在尝试像以下代码一样获取智能手机的 GPS:
在 中Activity.java,我使用以下代码获取GPS。
private GPSClass gps;
gps.getGPSLocation();
Run Code Online (Sandbox Code Playgroud)
在 GPSClass.java
public void getGPSLocation(){
FusedLocationProviderClient mLocationClient = LocationServices.getFusedLocationProviderClient(mContext);
mLocationClient.getLastLocation().addOnCompleteListener(mContext, new OnCompleteListener<Location>() {
@Override
public void onComplete(@NonNull Task<Location> task) {
if(task.isSuccessful()){
mLocation = task.getResult();
Log.i("getLocation---LOCATION", mLocation.getLatitude() + "/"
+ mLocation.getLongitude());
}
}
});
}
Run Code Online (Sandbox Code Playgroud)
但是如何返回值GPSClass.java?
我已经尝试更换
public void onComplete
Run Code Online (Sandbox Code Playgroud)
代替
public Location onComplete
Run Code Online (Sandbox Code Playgroud)
但它显示错误
'onComplete(Task<Location>)' in 'Anonymous class derived from com.google.android.gms.tasks.OnCompleteListener' clashes with 'onComplete(Task<TResult>)' in 'com.google.android.gms.tasks.OnCompleteListener'; attempting to use incompatible return type
我错过了什么?如何返回值OnCompleteListener?提前致谢。
您可以使用回调,例如
public void getGPSLocation(GPSCallback callback){
FusedLocationProviderClient mLocationClient = LocationServices.getFusedLocationProviderClient(mContext);
mLocationClient.getLastLocation().addOnCompleteListener(mContext, new OnCompleteListener<Location>() {
@Override
public void onComplete(@NonNull Task<Location> task) {
if(task.isSuccessful()){
mLocation = task.getResult();
Log.i("getLocation---LOCATION", mLocation.getLatitude() + "/"
+ mLocation.getLongitude());
callback.onLocation(mLocation);
}
}
});
}
Run Code Online (Sandbox Code Playgroud)
创建一个名为GPSCallbackeg的接口
interface GPSCallback{
void onLocation(Location location);
}
Run Code Online (Sandbox Code Playgroud)
并使用回调调用该方法
gps.getGPSLocation(new GPSCallback() {
void onLocation(Location location) {
// do what you need to do with the location
}
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4516 次 |
| 最近记录: |