当前位置: 首页 > 知识库问答 >
问题:

如何使用FusedLocationProviderClient获取电话设备位置

陈畅
2023-03-14

当接近传感器被激活时,我使用FusedLocationProviderClient来获取设备位置。当用户接近接近传感器时,程序应该得到设备的位置,但是它没有得到必要的代码,因为我认为它卡在. isSucessful()if语句上。

private FusedLocationProviderClient mFusedLocationProviderClient;    
private void getDeviceLocation() {
    mFusedLocationProviderClient = 
LocationServices.getFusedLocationProviderClient(this);
    try {
        if ( ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED ) {
            return;
        }
    } catch (Exception e) {
        e.printStackTrace();
    }
        final Task location = mFusedLocationProviderClient.getLastLocation();
        Log.d("Works to here:","here");
        location.addOnCompleteListener(new OnCompleteListener() {
            @Override
            public void onComplete(@NonNull Task task) {
                if ( task.isSuccessful() ) {
                    Location currentLocation = (Location) task.getResult();

                    double lat = currentLocation.getLatitude();
                    double lon = currentLocation.getLongitude();
                    Log.d("workes to here:",String.valueOf(lat));

                    addMarker(lat, lon);
                    final LatLng sydney = new LatLng(lat, lon);
                    mapFragment.mapView.getMapAsync(new OnMapReadyCallback() {
                        @Override
                        public void onMapReady(GoogleMap googleMap) {
                            googleMap.addMarker(new MarkerOptions().position(sydney));
                        }
                    });
                }

            }

        });
}

共有1个答案

双弘益
2023-03-14

不要使用getLastLocation。它几乎总是返回null,因为它找不到该位置,它只在该位置已缓存时返回一个。相反,在回调可用时,使用RequestLocationUpdate获取回调上的位置。

 类似资料:
  • 随着被弃用,我很难使用在单击按钮后仅一次获得用户的位置。

  • 我遵循这个示例检索联系人列表,从android设备检索联系人。它提供所有联系人,包括电子邮件联系人和一些空联系人。 我尝试修改Conrects合同,如在投影和选择,以获得移动联系人,但没有工作。 String SELECTION=Conrects合同。联系人。DISPLAY_NAME" 有没有办法只获得有手机号码的联系人?

  • 我是一名android开发人员,已经使用它开发上下文感知应用程序有一段时间了。位置是上下文感知的重要内容之一,而位置的准确性是非常重要的。 我知道怎么用LocationManager从GPS上得到位置...我知道如何在Android上使用谷歌地图开发应用程序...以及如何在地图上显示用户…但是我的朋友们发现,当他们去外国参加会议时,他们在LocationManager上的位置与谷歌地图相比非常不准

  • 我目前正在开发一个项目,我需要为应用程序录制VOIP通话,例如(Whatsapp和其他使用VOIP通话的应用程序) 我已经尝试了下面的代码来触发事件,当whatsapp调用时,所以我同时启动了录音机,但这是问题所在 当录音开始时,同时WhatsApp通话,然后接收器无法收听我的声音,但我可以听到他的声音,音频只录制了我的声音-基本上,录音开始时,它使用与WhatsApp相同的音频源,所以Whats

  • 问题内容: 众所周知,Android设备具有将手机变成接入点/热点的功能。 是否可以通过编程方式获取连接到手机wifi接入点的设备数量? 问题答案: 您可以在接入点上计数已连接的设备,并且可以在android的以下链接上获取硬件mac地址:http : //www.flattermann.net/2011/02/android-howto-find-the-hardware-mac-address