Android GPS获取当前经纬度坐标
程序员文章站
2023-12-02 08:56:16
app中可能会遇到一种需求,就是将当前所在位置的坐标传到服务器上,今天我提供三种途径去获取经纬度坐标信息,第一种是通过android api来实现,第二种通过百度地图api...
app中可能会遇到一种需求,就是将当前所在位置的坐标传到服务器上,今天我提供三种途径去获取经纬度坐标信息,第一种是通过android api来实现,第二种通过百度地图api来实现,第三种通过天地图api来实现。
第一种方法(android api实现),废话不多说,上代码。
mainactivity代码如下:
public class mainactivity extends activity { private static final string tag = mainactivity.class.getsimplename(); private double latitude = 0.0; private double longitude = 0.0; private textview info; private locationmanager locationmanager; @override protected void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.main); info = (textview) findviewbyid(r.id.tv); locationmanager = (locationmanager) getsystemservice(context.location_service); if (locationmanager.isproviderenabled(locationmanager.gps_provider)) { getlocation(); //gps已打开 } else { togglegps(); new handler() { }.postdelayed(new runnable() { @override public void run() { getlocation(); } }, 2000); } } private void togglegps() { intent gpsintent = new intent(); gpsintent.setclassname("com.android.settings", "com.android.settings.widget.settingsappwidgetprovider"); gpsintent.addcategory("android.intent.category.alternative"); gpsintent.setdata(uri.parse("custom:3")); try { pendingintent.getbroadcast(this, 0, gpsintent, 0).send(); } catch (canceledexception e) { e.printstacktrace(); locationmanager.requestlocationupdates(locationmanager.network_provider, 1000, 0, locationlistener); location location1 = locationmanager.getlastknownlocation(locationmanager.network_provider); if (location1 != null) { latitude = location1.getlatitude(); // 经度 longitude = location1.getlongitude(); // 纬度 } } } private void getlocation() { location location = locationmanager.getlastknownlocation(locationmanager.gps_provider); if (location != null) { latitude = location.getlatitude(); longitude = location.getlongitude(); } else { locationmanager.requestlocationupdates(locationmanager.gps_provider, 1000, 0, locationlistener); } info.settext("纬度:" + latitude + "\n" + "经度:" + longitude); } locationlistener locationlistener = new locationlistener() { // provider的状态在可用、暂时不可用和无服务三个状态直接切换时触发此函数 @override public void onstatuschanged(string provider, int status, bundle extras) { } // provider被enable时触发此函数,比如gps被打开 @override public void onproviderenabled(string provider) { log.e(tag, provider); } // provider被disable时触发此函数,比如gps被关闭 @override public void onproviderdisabled(string provider) { log.e(tag, provider); } // 当坐标改变时触发此函数,如果provider传进相同的坐标,它就不会被触发 @override public void onlocationchanged(location location) { if (location != null) { log.e("map", "location changed : lat: " + location.getlatitude() + " lng: " + location.getlongitude()); latitude = location.getlatitude(); // 经度 longitude = location.getlongitude(); // 纬度 } } }; /* * * 打开和关闭gps第二种方法 * private void opengpssettings() { //获取gps现在的状态(打开或是关闭状态) boolean gpsenabled = settings.secure.islocationproviderenabled(getcontentresolver(), locationmanager.gps_provider); if (gpsenabled) { //关闭gps settings.secure.setlocationproviderenabled(getcontentresolver(), locationmanager.gps_provider, false); } else { //打开gps settings.secure.setlocationproviderenabled(getcontentresolver(), locationmanager.gps_provider, true); } }*/ }
main.xml布局如下
<linearlayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/layout" android:layout_width="match_parent" android:layout_height="match_parent" android:background="@android:color/white" android:orientation="vertical" > <textview android:id="@+id/tv" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="经纬度信息:" android:textcolor="#660000" android:textsize="20sp" /> </linearlayout>
清单文件如下:
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.tqmapdemo" android:versioncode="1" android:versionname="1.0" > <uses-sdk android:minsdkversion="8" android:targetsdkversion="18" /> <!-- 连接互联网internet权限 --> <uses-permission android:name="android.permission.internet" /> <!-- gps定位权限 --> <uses-permission android:name="android.permission.access_coarse_location" /> <uses-permission android:name="android.permission.access_fine_location" /> <application android:allowbackup="true" android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:theme="@android:style/theme.black" > <activity android:name="com.example.tqmapdemo.mainactivity" android:label="@string/app_name" > <intent-filter> <action android:name="android.intent.action.main" /> <category android:name="android.intent.category.launcher" /> </intent-filter> </activity> </application> </manifest>
运行结果如下
第二种方法(百度地图api实现,注:需要自己申请apikey)
第三种方法(天地图api实现)
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
上一篇: vue-cli监听组件加载完成的方法
下一篇: PS制作一个超炫急速行驶的火球