在虚拟盒中运行的Android假gps
|
我正在尝试在virtual-box中运行的android中虚拟化GPS设备。我想促进一个在android中运行的应用使用gps设备或以某种方式获得假gps位置。我已经开始研究android模拟器的源代码,但是与此同时,任何人都可以从任何好的地方开始。
[更新]
为了更清楚一点,整个应用程序堆栈如下所示:
Android app (with gps functionality) to be tested ----> (developed by end user)
Android virtual machine ----> (Guest OS)
virtual box ---->
Microsoft Windows ---> Host OS
现在,理想情况下,我想让我的应用程序(例如adb
或ddms
)在Windows中运行,用户可以从中为gps设备设置一些坐标值(在没有实际GPS的情况下,对现有GPS进行虚拟化)。这些坐标将可用于android应用。基本上,这与通过运行Android映像的ѭ3providing提供现有android仿真器的功能(使用ddms)相同。
我没有运行android模拟器,也没有使用eclipse。 :(
[更新结束]
谢谢,
维克拉姆
没有找到相关结果
已邀请:
4 个回复
骚瓤
中导出)向用户模式共享lib(通常为libgps.so或libhardware_legacy.so)的底层实现注册一些回调。 这些注册的回调负责向应用程序通知GPS修复(或GPS位置更改)。 这是一个简单的图像,显示了来自ѭ5的呼叫流程 现在完成此流程,需要执行以下步骤: 我创建了自己的
,导出了功能
(在
中声明),该功能由JNI接口使用。具有gps支持的应用会从此libgps.so返回最新的坐标,该坐标实际上是由GpsLocationProvider服务动态加载的。 使用Vbox标头创建另一个共享对象,并包含例程以连接,断开连接并将功能请求发送到在主机OS中运行的“ 9”。这些是具有预定义ioctl编号的简单ioctl调用(例如:VBOX_GUEST_IOCTL_HGCM_CONNECT等)。 创建一个主机服务(实际上是一个由
加载的DLL),它可以处理从HGCM调用传递的参数,并以步骤2中创建的共享库可以理解的格式返回所需的数据。 现在要将假的/假的位置发送回运行在
中的应用程序,您只需要通知
,其余的信息便传回
->
->
->,最后是to16ѭ。 希望这将有助于某人尝试类似的事情或帮助某人了解android stack的工作方式。 注意:编译hgcm代码并将其与android lib链接也有点复杂,因为android libc(以及其他一些lib)实现的功能数量有限。为了避免所有这些,您可以直接打开设备(/ dev / vboxguest)并以vbox和主机服务已知的格式在设备上发出ioctl调用。
贸会
使用模拟位置如何?
闯舱酮
末钉蹈泰唬