3

我有需要测试智能手机应用程序的情况。目标是根据地理位置禁用我的应用程序。因此,例如,假设我正在通过我的应用程序“直播”一些视频,并且希望在用户前往某个受限位置时禁用流媒体,并在用户移动到可接受的地质区域时将其打开。

现在测试部分是,所有手机都可以说我面前有 5 部手机,我想测试在它们上运行的应用程序,当它们进入限制区域时,应用程序将被关闭。如何做到这一点?

编辑:- 实际场景 - 不应该在 android 应用程序上的体育场附近区域显示的比赛直播。因此,如果用户在应用程序上点击“播放”按钮并且手机在特定比赛期间处于视频禁区,则视频不应流式传输到该手机。

有什么想法……意见……?

谢谢

4

5 回答 5

3

在 android 上,您有多种选择可以为您的应用程序提供模拟位置:通过 DDMS、telnet 或 LocationManager:

数据管理系统

从 AndroidSDK/tools/ 文件夹启动 DDMS。选择要为其欺骗位置的设备,然后转到Emulator Control。在选项卡的底部,您应该找到手动设置位置的选项,以及要欺骗的位置。

亚行/Telnet

通过 列出您的所有设备adb devices。从这里你应该得到这样的输出:

List of devices attached
emulator-5554 device

然后 telnet 到指定的端口:

telnet localhost 5554

这应该会打开 android 控制台。在那里你可以使用geo fix命令来设置位置

geo fix $lon $lat

位置提供者

您可以使用以下setTestProviderLocation方法提供测试位置LocationProvider

LocationManager lm = (LocationManager)this.getContext().getSystemService(Context.LOCATION_SERVICE);
String mocLocationProvider = "Test";
locationManager.addTestProvider(mocLocationProvider, false, false,
                    false, false, true, true, true, 0, 5);
locationManager.setTestProviderEnabled(mocLocationProvider, true);

Location mockLocation = new Location(mocLocationProvider);
mockLocation.setLatitude(location.getLatitude());
mockLocation.setLongitude(location.getLongitude()); 
mockLocation.setAltitude(location.getAltitude()); 
mockLocation.setTime(System.currentTimeMillis()); 
locationManager.setTestProviderLocation( mocLocationProvider, mockLocation);

我从这里得到的这个方法

另外,不要忘记设置权限

<uses-permission android:name="android.permission.ACCESS_MOCK_LOCATION">
于 2012-11-07T01:37:41.503 回答
2

在连接 XCode 的设备上调试 iOS 应用程序时,您可以通过单击 XCode 界面下端的小箭头来覆盖设备的 gps 位置:

在此处输入图像描述

有几个默认位置,您可以使用 File.. New.. iOS/Resource,“GPX File”添加自己的位置:

在此处输入图像描述

这是一个GPX文件:

<?xml version="1.0"?>
<gpx version="1.1" creator="Xcode"> 

    <wpt lat="45.463965" lon="9.180247">
         <name>Milan, Italy</name>
    </wpt>

</gpx>

您可以指定多个位置(一个轨道),但显然您将无法控制时间:

<?xml version="1.0" encoding="UTF-8"?>
<gpx>
    <wpt lat="52.373" lon="4.871"></wpt>
    <wpt lat="52.374" lon="4.872"></wpt>
    <wpt lat="52.375" lon="4.871"></wpt>
</gpx>

但是,也许您有兴趣通过以编程方式将位置序列发送到设备来自动化该过程。在您的应用程序的某处,您正在接收来自 CLLocationManager 实例的消息,这些消息将发送给您的委托。测试时,不要订阅 CLLocationManager - 而是构建一个虚假的位置管理器实例,它将虚假的位置发送给您的委托:

[delegate locationManager:nil didUpdateToLocation:newLocation fromLocation:oldLocation];

看:

在 iPhone 模拟器上模拟位置更新

模拟`startMonitoringSignificantLocationChanges`的位置变化

和:

https://github.com/futuretap/FTLocationSimulator

https://github.com/johnmckerrell/LocationManagerSimulator

于 2012-11-07T02:36:27.413 回答
0

我不知道我是否理解得很好,但是如果您想通过更改位置来测试应用程序的禁用部分是否有效,iPhone 模拟器可能会有所帮助。

模拟器的地理位置可以设置到多个预定的重要位置,例如香港和伦敦。限制其中之一并对其进行测试。

要模拟一个位置,您必须在 xcode 中设置它。单击靠近调试控制按钮的箭头状按钮。

于 2012-11-07T01:27:02.853 回答
0

如果您使用的是有根设备,尤其是在开发人员菜单中允许模拟位置的方法。还可以查看Fake GPS App (Android)之类的应用

于 2012-11-07T01:36:12.570 回答
0

使用 Chrome DevTools 更容易:

  • 打开 Chrome/ium DevTool
  • 按 Command+Shift+P (Mac) 或 Control+Shift+P(Windows、Linux、Chrome 操作系统)打开命令菜单。
  • 打开传感器选项卡
  • 选择您的位置(位置列表是自定义的:)

在此处输入图像描述

于 2019-06-13T06:58:12.170 回答