【转载】如何开启Android的虚拟GPS功能

本文转载自www.madhome.org开发论坛

 

为了构建一个依靠程序的定位程序,或者来测试你程序对于方位的可操作性。使用Android模拟器将会使你很方便的来进行当前定位并手动设置你的位置。

这篇文章将教你如何在Google Android模拟器上设置虚拟的GPS的一些步骤。

在AndroidManifest.xml中设置许可:

1    <USES-PERMISSION android:name="android.permission.ACCESS_MOCK_LOCATION"></USES-PERMISSION>

为你的Android模拟器找到正确的本机端口:
$ adb devices
List of devices attached
emulator-5554 device

在这个案例中我们,我们搜寻的端口为5554。现在通过telnet(用于远程联接服务的标准协议或者实现次协议的软件)来进行远程登陆。
$ telnet localhost 5554
Trying ::1...
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
Android Console: type 'help' for a list of commands

手动设置你首选的地址:用geo fix指令来设置定位:
geo fix $longitude $latitude

例如巴塞罗那的市中心
geo fix 2.169919 41.387917
OK

为了获取你所需的经度和纬度,你只需转到http://maps.google.com/,把期望地址移动到你屏幕的中央位置,并在地址栏中输入JavaScript指令:

1    <JAVASCRIPT:VOID(PROMPT('',GAPPLICATION.GETMAP().GETCENTER()));></JAVASCRIPT:VOID(PROMPT('',GAPPLICATION.GETMAP().GETCENTER()));>

需要注意的是:你从Google Maps上获取的坐标格式是($纬度,$经度)——但你进入Android geo fix时,却是经度和纬度变换过的位置。

确保一切正常运行:
在你的模拟器上打开Google Maps程序。它应该会把你直接引到你输入的位置并显示一个蓝色闪烁光。
在你的程序中,访问Android 定位服务

01    LocationManager mLocationManager = (LocationManager)getSystemService(Context.LOCATION_SERVICE);
02    Location myLocation = mLocationManager.getLastKnownLocation(LocationManager.GPS_PROVIDER);
03    Double myLatitude = myLocation.getLatitude();
04    Double myLongitude = myLocation.getLongitude();
05    Log.i(TAG, "My location INIT: " + myLatitude + " | " + myLongitude);
06    Geocoder geocoder = new Geocoder(this);
07    java.util.List<address>
08     addressList;
09    try {
10     addressList = geocoder.getFromLocation(myLatitude, myLongitude, 5);
11     if(addressList!=null && addressList.size()>0) {
12      String address = new String();
13      Log.i(TAG,addressList.get(0).toString());
14      address = addressList.get(0).getAddressLine(0) + ", "
15        + System.getProperty("line.separator")
16        + addressList.get(0).getAddressLine(1)  + ", "
17        + addressList.get(0).getAddressLine(2);
18      ((TextView)findViewById(R.id.CurrentLocation)).setText(address);
19     }
20     
21    } catch (IOException e) {
22     e.printStackTrace();
23    }


温馨提醒:
•    我个人注意到有时候手动进入定位无效。目前我还不知道这个原因,但现在的某个工作区就是只是通过geo fix指令重新输入指令。
•    如果你搞不清纬度和经度的话,我再重申一下: 纬度:东<>西走向 (你可以想象一下中国伟大的长城,它就是东西走向的^_^);经度:南<>北走向。

 

转载于:https://www.cnblogs.com/androiddevelopment/archive/2010/02/09/1666299.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值