繁体   English   中英

Android - 在没有应用程序上下文的情况下获取用户 GPS 位置

[英]Android - Fetching user GPS location without application context

我试图在 Android 应用程序中按下按钮时简单地获取用户的位置。 我的应用程序使用数据绑定意味着我们有:

  • 单一的主要活动
  • 片段(视图)
  • 与我的存储库交互的视图模型

问题是我的按钮按下是在Viewmodel中处理的,但我只能在View 中获取 GPS 位置。 这就是我使用此类https://github.com/Miserlou/Cop-Recorder-2/blob/master/src/org/ale/coprecord/MyLocation.java在 Fragment 中获取 GPS 位置的方式:

LocationResult locationResult = new LocationResult(){
    @Override
    public void gotLocation(Location location){
        newSessionViewModel.getPositionObtained().postValue(location);
            }
        };

MyLocation myLocation = new MyLocation();
gotLocation = myLocation.getLocation(this.getContext(), locationResult);

问题是this.getContext() 片段可以访问上下文,但我的 Viewmodels 不能。

因此,要在我的 Viewmodel 中获取位置,我必须从我的 Viewmodel 转到我的 View,然后再回到我的 Viewmodel,正如您在上面看到的那样,这既烦人又难看。

我发现的其他解决方案也需要传递上下文:

LocationManager locationManager = (LocationManager)
getSystemService(Context.LOCATION_SERVICE);
LocationListener locationListener = new MyLocationListener();
locationManager.requestLocationUpdates(
LocationManager.GPS_PROVIDER, 5000, 10, locationListener);

所以我的问题是,在 Viewmodel 中获取当前用户位置的最简单、最快的方法是什么? 或者我应该将上下文传递给静态类中的全局变量并在我的 Viewmodels 中重用它? 这可能更快更容易。

获取位置更新的最快和最简单的方法是通过Google Play 服务获取位置更新

希望这可以帮助!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM