- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
乍一看获取 GPS 坐标的事情看起来很简单(伪代码):
private void onStart() {
res = ActivityCompat.checkSelfPermission(getApplicationContext(), Manifest.permission.ACCESS_FINE_LOCATION);
if (res != PackageManager.PERMISSION_GRANTED) {
requestPermissions();
} else {
startGps();
}
}
public void onRequestPermissionsResult(int requestCode, String permissions[], int[] grantResults) {
if (all_ok)
startGps();
}
private void startGps() {
LocationManager locationManager = (LocationManager) this.getSystemService(Context.LOCATION_SERVICE);
LocationListener locationListener = new LocationListener() {...};
locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, locationListener);
}
但是如何处理异步事件:
如果在 locationManager.requestLocationUpdates
之后用户暂停并恢复应用程序会怎样,
1.1 我是否应该再次调用 locationManager.requestLocationUpdates
接收 GPS 数据?
1.2 如果用户在我的应用程序暂停时禁用 GPS,在用户恢复我的应用程序后我会收到 onProviderDisabled
事件吗?
如果发生在 locationManager.requestLocationUpdates
调用之后,如何处理运行时撤销 ACCESS_FINE_LOCATION 权限?撤销后发生了什么,android 是否通过 onStatusChanged
或 onProviderDisabled
向我报告此情况?
我听说新的 android 允许在屏幕上显示多个窗口,如果一个窗口属于我的应用,另一个窗口属于“系统偏好设置”,并且用户在没有暂停/恢复我的应用的情况下撤销 ACCESS_FINE_LOCATION,会发生什么情况?
最佳答案
1.1:最好在您的应用程序暂停或停止(onPause() 和 onStop())时停止监听 GPS。这将节省电池生命周期。所以在onResume()方法中再次启动listener。
删除更新(位置监听器)
如果您不想删除更新,则无需再次调用 locationManager.requestLocationUpdates。
1.2:每当应用进入前台时,执行 isProviderEnabled(provider) 检查并向用户显示对话框。
回答你的问题:
https://developer.android.com/reference/android/location/LocationManager.html
如果提供者被用户禁用,更新将停止,并发送提供者可用性更新。一旦再次启用提供商,位置更新将立即恢复并发送提供商可用性更新。提供者还可以随时发送状态更新,并提供特定于提供者的额外信息。如果提供了回调,则通过 onProviderDisabled(String)、onProviderEnabled(String) 或 onStatusChanged(String, int, Bundle) 更新状态和可用性。
java.lang.SecurityException:提供商网络需要 ACCESS_FINE_LOCATION 或 ACCESS_COARSE_LOCATION 权限
如果从设置中关闭位置,则不会通知第 3 方应用。您需要使用 isProviderEnabled(provider) 方法来检查位置状态。
关于android - 具有运行时权限的基于 gps 的应用程序的体系结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38806689/
这个问题在这里已经有了答案: What is an undefined reference/unresolved external symbol error and how do I fix it?
我遇到了这两个文档(它们是用意大利语写的,尽管代码注释是英文的): http://home.deib.polimi.it/brandole/acsocr/L13%20-%20Generic%20Ass
我的主要目标是提供一个用 jquery 编写的基于 solr 的搜索应用程序。 (不熟悉solr的,就假设它是一个可以返回搜索结果的rest api。)为了这个目标,我编写了许多小型应用程序和 ser
这个问题是关于选择“正确”类型的NoSQL数据库的,我希望甚至可以根据我将在下面列出的一些需求/用例以及当前正在使用的传统RDBMS解决方案,讨论特定的数据库以及它们为什么适用。地点。时间长了一点,但
在 Java 中我运行: System.out.println(Math.log(249.0/251.0)); Output: -0.008000042667076265 在 C# 中我运行:<- 已
我目前正在考虑通过 Redux 将 Context 实现到我们的一个应用程序中,但是,我似乎找不到任何关于什么是大型应用程序的最佳结构的信息? Redux 有一个定义的方法来创建 reducer、ac
我正在使用 mailcore 框架,但收到错误消息“archtecture x86 的重复符号”以及“找不到选项的目录” 下面是错误日志。 Ld /Users/user/Library/Develop
关闭。这个问题是opinion-based .它目前不接受答案。 想改进这个问题?更新问题,以便 editing this post 可以用事实和引用来回答它. 11 个月前关闭。 Improve t
假设我正在从 C++ 移植代码并需要在 C# 中模拟相同的位移技术: 每当我执行位移时,我是否必须考虑架构的 Endain-ness? 最佳答案 没有。位移是一种纯粹的代数运算。它不比乘以二更依赖于平
关闭。这个问题需要debugging details .它目前不接受答案。 编辑问题以包含 desired behavior, a specific problem or error, and th
关于架构 XXX 的重复符号有很多问题,但我没有得到我的问题的答案。在我的场景中,我使用 Cocoapod,并导入 FMDB,但是当我集成另一个第三方 SDK 时,当我构建项目时,出现如下错误: 是否
我无法编译我的 Xcode 项目,它有重复的 ParseFacebookUtilsV4 问题 这是我的苹果 Mach-O 链接器错误: duplicate symbol _llvm.cmdline i
我对使用 MFC 的内置文档 View 体系结构的必要性有疑问。我得到了一个基于对话框的旧项目,我必须在其中用框架替换主对话框并添加功能区。它有一种文档 View 架构,创建时没有内置类,我更愿意在新
我正在构建一个协作创作工具,该工具允许用户共同编辑信息空间,该信息空间是节点和链接的可视化。一个客户端应用程序中所做的更改需要反映到所有其他客户端中。由于它是可视化的,因此可能需要经常更新潜在的大数据
如果我在 Windows(x86 和 x64)下的 .NET 上运行涉及 System.Double 的复杂计算,然后在 Mono(Linux、Unix 等)上运行,绝对有保证 以在所有情况下得到完全
当我使用 Xcode 4.6 编译我的 iPhone 应用程序时,我看到一个奇怪的错误代码: "duplicate symbols for architecture i386". 我知道这个关于文件名
我最近询问了 System.Double,并被告知计算可能因平台/架构而异。不幸的是,我找不到任何信息来告诉我这是否适用于 System.Decimal。 对于任何特定的 decimal 计算,无论平
我有一些实体,例如:Customers、Orders、Invoices。 对于它们中的每一个,我都将它们的CRUD 操作 和一些其他界面分组为:ISvcCustomerMgmt、ISvcOrderMg
这个问题有点像一个池。我们正在尝试在使用 LINQ to SQL 之类的 ORM 时确定最佳架构。我们正在定义的架构是用于其他应用程序将通过直接引用 DLL 或通过 Web 服务访问的框架。我们有 .
请就如何为 Java web 应用程序做“插件”架构提出建议。 目前我们在 Tomcat servlet 容器中使用非常简单和标准的 Spring+Hibernate+Struts 2。 (使用 ma
我是一名优秀的程序员,十分优秀!