相关疑难解决方法(0)

如何在Android中以编程方式获取当前GPS位置?

我需要以编程方式使用GPS获取当前位置.我怎样才能实现它?

gps android location geolocation

694
推荐指数
17
解决办法
86万
查看次数

Android:LocationManager与Google Play服务

我想构建一个以获取用户当前位置为中心的应用程序,然后通过Google Places API找到与他/她关系密切的兴趣点(如酒吧,餐馆等).

在网上搜索一个可以开始的地方时,我遇到了一些使用该LocationManager课程的教程和其他一些使用Google Play服务的教程,以便找到用户所在的位置.

乍一看,他们两个都做同样的事情,但由于我是新手,我有点困惑,我不知道哪种方法最适合我的需要.所以,我想问你:

这两种查找位置的方法(如果有的话)有什么区别?

gps android geolocation

138
推荐指数
7
解决办法
6万
查看次数

Android 5.1.1及更高版本 - getRunningAppProcesses()仅返回我的应用程序包

谷歌似乎最终关闭了获取当前前台应用程序包的所有大门.

在Lollipop更新之后,getRunningTasks(int maxNum)由于这个答案,我使用此代码从Lollipop获取前台应用程序包:

final int PROCESS_STATE_TOP = 2;
RunningAppProcessInfo currentInfo = null;
Field field = null;
try {
    field = RunningAppProcessInfo.class.getDeclaredField("processState");
} catch (Exception ignored) { 
}
ActivityManager am = (ActivityManager) this.getSystemService(Context.ACTIVITY_SERVICE);
List<RunningAppProcessInfo> appList = am.getRunningAppProcesses();
for (RunningAppProcessInfo app : appList) {
    if (app.importance == RunningAppProcessInfo.IMPORTANCE_FOREGROUND &&
        app.importanceReasonCode == 0 ) {
        Integer state = null;
        try {
            state = field.getInt( app );
        } catch (Exception ignored) {
        }
        if (state != null && state == …
Run Code Online (Sandbox Code Playgroud)

android android-6.0-marshmallow

97
推荐指数
3
解决办法
8万
查看次数

禁用/检查模拟位置(防止gps欺骗)

希望找到防止/检测Android上的GPS欺骗的最佳方法.关于如何实现这一点的任何建议,以及可以做些什么来阻止它?我猜测用户必须打开模拟位置欺骗GPS,如果这样做,那么他们可以欺骗GPS吗?

我想我只需要检测是否启用了Mock Locations?还有其他建议吗?

gps android spoof

83
推荐指数
5
解决办法
13万
查看次数

如何使用Wifi或GSM或GPS获取粗略位置,以哪个可用?

我的应用程序启动时只需要一个粗略的位置服务.

详细地说,我需要应用程序的粗略位置,以便为用户提供附近的商店信息.

该位置不需要不断更新.此外,在这种情况下,粗略定位就足够了.

我希望应用程序自动选择GSM,wifi或GPS,无论哪个可用.

定位服务也应该是一次性的,以节省电话能量.

我该怎么办?

我曾尝试单独使用GPS.

我的问题是我不知道如何停止GPS的持续刷新位置功能.我不知道如何让手机从三种方法中选择一种.

非常感谢一些示例代码或想法.

android android-location android-wifi

14
推荐指数
2
解决办法
3万
查看次数

融合位置提供商:有没有办法检查位置更新是否失败?

介绍

在我的应用程序中,我希望获得用户当前所在位置的一次性准确位置.当我FusedLocationProviderApi.getLastLocation有时使用时,这将是null或过时的位置,因为我发现这只是一个缓存的位置,并没有请求新的位置更新.

解决方案是仅请求位置更新一次,如下所示.

 LocationRequest locationRequest  = LocationRequest.create()
                .setNumUpdates(1)
                .setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY)
                .setInterval(0);

        LocationServices.FusedLocationApi.requestLocationUpdates(mGoogleApiClient,locationRequest,this)
Run Code Online (Sandbox Code Playgroud)

现在我总是得到一个更准确的位置.

我的问题

如何确定位置更新是否失败?因为我只要求1.

获取位置更新时,将调用此回调

 @Override
 public void onLocationChanged(Location location) {

 }
Run Code Online (Sandbox Code Playgroud)

但是,如果位置更新失败,则不会调用此方法.

我试过了什么

我看到有一个ResultCallback.但是,即使一次性位置更新失败,也始终会调用onSuccess.

LocationServices.FusedLocationApi.requestLocationUpdates(mGoogleApiClient,locationRequest,this).setResultCallback(new ResultCallbacks<Status>() {
            @Override
            public void onSuccess(@NonNull Status status) {
                DebugUtils.log("requestLocationUpdates ResultCallback onSuccess + " + status.toString(),true,true);
            }

            @Override
            public void onFailure(@NonNull Status status) {
                DebugUtils.log("requestLocationUpdates ResultCallback onFailure + " + status.toString(),true,true);
            }
        });
Run Code Online (Sandbox Code Playgroud)

其他

运用 com.google.android.gms:play-services-location:8.4.0

感谢您的阅读,请帮帮我.

java android google-maps fusedlocationproviderapi

14
推荐指数
1
解决办法
8440
查看次数

无论用户位置设置如何,如何确定Android设备的当前国家/地区位置?

即使用户的设备已关闭GPS并且不允许应用访问其位置,我也需要确定设备所在的国家/地区(iso3).

我还需要考虑没有SIM卡的平板电脑,因此不能使用telephonyManager.

出于这个原因,我不相信我可以使用位置管理器(也是因为这些原因:LocationManager requestLocationUpdates不起作用)

我认为我需要的方法是向第三方ip位置api发出简单的HTTP请求:例如 http://www.ipinfodb.com/ip_location_api.phphttps://freegeoip.net

这是最好的方法吗?什么是最好的开放api使用?

android geolocation w3c-geolocation

7
推荐指数
1
解决办法
4653
查看次数

为什么locationmanager使用新的gettime-timestamp返回旧的位置修复?

我们有一个应用程序,在用户操作尝试获取位置修复.它可以监听GPS和网络,并且具有基于时间/准确度的决策矩阵,以确定何时停止收听以及返回什么修复.

我们偶尔会注意到一种非常奇怪的行为.我们使用经典的方式来查看修复程序的年龄,如下所示:

long age = now - newLocation.getTime();
if(age >= prefs.getLocationMaxAge()){
    Log.d(TAG, "location too old.");
    return;
}
Run Code Online (Sandbox Code Playgroud)

但有时候,根据返回的时间戳,从操作系统返回的location.getTime的年龄可能是15-20秒,尽管我们可以肯定它已经很老了.例如,如果经度/纬度修正来自手机30分钟前的位置!

它似乎既发生在Wi-Fi和网络上,也不发生在GPS上.对我来说,这完全是疯了.有没有其他人看过这个,有什么办法吗?

我们已经在几款不同的手机上使用它,最近的一款是三星Galaxy S II.

非常欢迎帮助.

编辑:要非常清楚,问题是操作系统调用"onlocationchanged"回调,其时间戳可能是几秒钟,当我确定"新"中的经度/纬度时修复是手机至少没有使用30分钟的地方.

这使得很难准确地确定手机的位置......

android locationmanager android-location

6
推荐指数
1
解决办法
2513
查看次数