Java 如何从mFusedLocationProviderClient获取结果(任务<;位置>;未运行??)
我是Android开发的新手,我正在制作一个地图应用程序,你必须在其中获取用户的当前位置。我目前正在使用FusedLocationProviderClient,正如文档所说的那样。每次我添加一个完整的侦听器并运行代码时,任务永远不会完成!关于android或Java,有什么我还没有学过的吗 我想我想问的是,为什么它只是跳过addOnCompleteListener,就好像任务根本没有运行一样?我对任务不是很熟悉,所以我试着做了一些研究,但没有发现任何有用的东西 我试图通过添加以下内容来检查它是否成功:Java 如何从mFusedLocationProviderClient获取结果(任务<;位置>;未运行??),java,android,android-studio,fusedlocationproviderclient,Java,Android,Android Studio,Fusedlocationproviderclient,我是Android开发的新手,我正在制作一个地图应用程序,你必须在其中获取用户的当前位置。我目前正在使用FusedLocationProviderClient,正如文档所说的那样。每次我添加一个完整的侦听器并运行代码时,任务永远不会完成!关于android或Java,有什么我还没有学过的吗 我想我想问的是,为什么它只是跳过addOnCompleteListener,就好像任务根本没有运行一样?我对任务不是很熟悉,所以我试着做了一些研究,但没有发现任何有用的东西 我试图通过添加以下内容来检查它是否
//This loops Infinitely (I tested for 5 mins)
while(!tLocation.isSuccessful())
{
System.out.println(tLocation.isComplete()); //This returns false
System.out.println(tLocation.isCancelled()); //This also returns false
}
但它只是冻结了应用程序,而且永远也做不到
下面是我的项目中的一个代码示例(我调用此方法以获取位置):
私有位置模板定位//我要保存位置的位置
私有FusedLocationProviderClient mFusedLocationProviderClient;
public void getUserLocation(){
mFusedLocationProviderClient=LocationServices.getFusedLocationProviderClient(此);
如果(已授予位置许可)
{
试一试{
最终任务tLocation=mFusedLocationProviderClient.getLastLocation();
tLocation.addOnCompleteListener(这是新的OnCompleteListener(){
@凌驾
未完成的公共void(@NonNull任务){
if(task.issusccessful()){
Location=tLocation.getResult();
模板位置=位置;
}
}
});
}捕获(安全异常e){
Toast.makeText(OtechLocation.getContext(),“找不到位置”,Toast.LENGTH_SHORT.show();
}
}否则
{
Toast.makeText(OtechLocation.getContext(),“启用位置服务以激活功能”,Toast.LENGTH_LONG.show();
}
}
如果你需要澄清什么,请告诉我!提前谢谢
private Location tempLocation; //Where I want to save the Location
private FusedLocationProviderClient mFusedLocationProviderClient;
public void getUserLocation() {
mFusedLocationProviderClient = LocationServices.getFusedLocationProviderClient(this);
if(mLocationPermissionGranted)
{
try {
final Task<Location> tLocation = mFusedLocationProviderClient.getLastLocation();
tLocation.addOnCompleteListener(this, new OnCompleteListener<Location>() {
@Override
public void onComplete(@NonNull Task<Location> task) {
if(task.isSuccessful()) {
Location location = tLocation.getResult();
tempLocation = location;
}
}
});
}catch (SecurityException e) {
Toast.makeText(OtechLocation.getContext(), "Unable to find Location", Toast.LENGTH_SHORT).show();
}
} else
{
Toast.makeText(OtechLocation.getContext(), "Enable Location Services to activate feature", Toast.LENGTH_LONG).show();
}
}