android – 基于地理位置测试应用程序?

我有一种情况需要测试智能手机应用程序.目标是根据地理位置禁用我的应用程序.例如,假设我通过我的应用程序“直播”流式传输某些视频,并且如果用户进入某个受限制的位置并且当用户移动到可接受的地理区域时将其打开,则会禁用流式传输.

现在测试的部分是,所有的手机都可以说5个手机就在我面前,我想测试运行在他们身上的应用程序,当应用程序进入限制区域时应用程序将被关闭.怎么能实现这一目标?

编辑: –
实际场景 – 在Android应用程序的体育场附近区域不应显示的比赛直播.因此,如果用户在应用上点击“播放”按钮并且电话在该特定持续时间内物理上处于视频限制区域中,则不应将视频流式传输到该移动电话.

任何想法…意见..?

谢谢

最佳答案
在Android上,您有多个选项可以为您的应用程序提供模拟位置:
通过DDMS,telnet或通过LocationManager:

DDMS

从AndroidSDK / tools /文件夹启动DDMS.选择要欺骗其位置的设备,然后转到“仿真器控制”.在选项卡的底部,您应找到手动设置位置的选项以及要欺骗的位置.

ADB /远程登录

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

List of devices attached
emulator-5554 device

然后telnet到指示的端口:

telnet localhost 5554

这应该打开Android控制台.在那里,您可以使用geo fix命令设置位置

geo fix $lon $lat

LocationProvider

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

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);

这个方法我从here开始

此外,不要忘记设置权限

<uses-permission android:name="android.permission.ACCESS_MOCK_LOCATION">

转载注明原文:android – 基于地理位置测试应用程序? - 代码日志