如何在Android上提供自己的LocationProvider?

前端之家收集整理的这篇文章主要介绍了如何在Android上提供自己的LocationProvider?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
有谁知道如何提供自己的LocationProvider并将其发布到系统,
所以其他应用程序可以从LocationManager获取对它的引用?

解决方法

出于开发和测试目的,您可以实现模拟位置提供程序.您需要在开发人员选项中启用“允许模拟位置”,以便应用程序查看该提供程序中的位置.

有关代码示例,请查看GPX播放:
https://github.com/johncarpenter/Android-GPX-Mock-Location-Provider

注册位置提供者的代码文件的第203行开始
安卓/ src目录/ COM / twolinessoftware /安卓/ PlaybackService.java.

如果你想要一个“真正的”位置提供者(例如,将你的功能部署为最终用户应用程序的一部分),一些消息来源说,除非该提供者在使用系统密钥签名的包中,否则无法完成,所以你必须拥有从源代码构建自己的ROM,使用密钥签名,使用相同的密钥为您的位置提供商签名,然后在手机上安装.

但是,Android在某些时候引入了“非捆绑”位置提供商.显然他们需要这样才能将他们自己的NetworkLocationProvider从Android核心移动到Google Apps包中.

我还没有看到一个非捆绑的位置提供商在实践中工作,我不知道任何使用它的开源代码,但看起来最近版本的Android支持“售后”位置提供商.

相应库的源代码位于
https://github.com/CyanogenMod/android_frameworks_base/tree/cm-10.1/location/lib

位置提供程序必须扩展com.android.location.provider.LocationProviderBase.

代码中记录了类和方法.

编辑:看着
https://github.com/android/platform_frameworks_base/blob/master/core/res/AndroidManifest.xml
从第607行开始,看起来INSTALL_LOCATION_PROVIDER权限的保护级别是signatureOrSystem.这意味着任何使用此功能的应用程序(即安装位置提供程序,不一定是位置提供程序本身)都需要使用与平台相同的密钥进行签名(这需要您从源代码构建整个Android系统)或者作为系统应用程序安装(可能在root设备上运行).

有一些代码
https://github.com/microg/NetworkLocation这似乎实现了LocationProvider.我还没有详细查看它(或者)或者构建它,所以我不能说它是否有效以及它是什么需要它.但也许它提供了一些指示.

原文链接:https://www.f2er.com/android/309042.html

猜你在找的Android相关文章