【转载】如何开启Android的虚拟GPS功能
2010-02-09 11:21
567 查看
本文转载自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指令重新输入指令。
• 如果你搞不清纬度和经度的话,我再重申一下: 纬度:东<>西走向 (你可以想象一下中国伟大的长城,它就是东西走向的^_^);经度:南<>北走向。
为了构建一个依靠程序的定位程序,或者来测试你程序对于方位的可操作性。使用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指令重新输入指令。
• 如果你搞不清纬度和经度的话,我再重申一下: 纬度:东<>西走向 (你可以想象一下中国伟大的长城,它就是东西走向的^_^);经度:南<>北走向。
相关文章推荐
- 【转载】如何开启Android的虚拟GPS功能
- Android用代码实现GPS的开启/关闭功能+网络开关
- Android中如何监听GPS开启和关闭
- android 在程序中开启GPS功能
- Mono For Android 如何控制程序在自动旋转功能开启下不进行横竖屏切换
- net的web系统如何在平板电脑的Android系统中开启摄像头拍照功能并把图片传到服务器上!!!
- 如何启用Win7自带的虚拟无线AP功能供Android等无线设备上网
- Android中如何开启悬浮窗的硬件加速绘制功能?
- android: 如何开启webview的LBS功能
- [转载]抛弃QII自带文本编辑器,换Notepad++,照样可以定位错误行;暨如何开启Notepad++的自动补全功能
- android GPS开启方法 代码(转载)
- android 在程序中开启GPS功能
- Android中如何监听GPS开启和关闭
- Android中如何监听GPS开启和关闭
- Android中如何监听GPS开启和关闭
- android:如何开启webview的LBS功能
- Android--监听GPS开启和关闭
- Android 如何用支付宝实现支付功能
- android如何实现实时在屏幕上找图或者找颜色块的功能
- 【discuz x3】如何开启discuz x3的debug调试功能