Android实现地理定位功能
程序员文章站
2023-12-13 18:25:22
最近试着写了一下android的定位,代码在下面,比较简单
首先需要的权限有
最近试着写了一下android的定位,代码在下面,比较简单
首先需要的权限有
<uses-permission android:name="android.permission.access_coarse_location" /> <uses-permission android:name="android.permission.access_fine_location"/> <uses-permission android:name="android.permission.internet"/>
然后是里面的代码
package com.example.a5.myapplication; import android.manifest; import android.content.context; import android.content.pm.packagemanager; import android.location.criteria; import android.location.location; import android.location.locationlistener; import android.location.locationmanager; import android.support.v4.app.activitycompat; import android.support.v7.app.alertdialog; import android.support.v7.app.appcompatactivity; import android.os.bundle; import android.view.view; import android.view.window; import android.view.windowmanager; import android.webkit.webview; import android.widget.button; import android.widget.textview; public class mainactivity extends appcompatactivity { @override protected void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); requestwindowfeature(window.feature_no_title); //全屏 getwindow().setflags(windowmanager.layoutparams.flag_fullscreen, windowmanager.layoutparams.flag_fullscreen); setcontentview(r.layout.activity_main); button button = (button) findviewbyid(r.id.button); button.setonclicklistener(new view.onclicklistener() { @override public void onclick(view v) { //获取位置服务 locationmanager locationmanager = (locationmanager) mainactivity.this.getsystemservice(context.location_service); criteria criteria = new criteria(); //accuracy_high/accuracy_low精度选择 criteria.setaccuracy(criteria.accuracy_fine); //高度 criteria.setaltituderequired(true); //方位信息 criteria.setbearingrequired(true); //是否允许付费 criteria.setcostallowed(true); //对电量的要求 criteria.setpowerrequirement(criteria.power_low); //速度 criteria.setspeedrequired(true); //获取最佳服务 string provider = locationmanager.getbestprovider(criteria, true); //权限检查 if (activitycompat.checkselfpermission(mainactivity.this, manifest.permission.access_fine_location) != packagemanager.permission_granted && activitycompat.checkselfpermission(mainactivity.this, manifest.permission.access_coarse_location) != packagemanager.permission_granted) { return; } //获取到了位置 location location = locationmanager.getlastknownlocation(provider); //开启地理位置监听定位类型、毫秒、米、监听时间 locationmanager.requestlocationupdates(provider,3000,1,new listener()); locateresult(location); } }); } public class listener implements locationlistener { @override public void onlocationchanged(location location) { //位置变化,获取最新的位置 locateresult(location); } @override public void onstatuschanged(string provider, int status, bundle extras) { } @override public void onproviderenabled(string provider) { } @override public void onproviderdisabled(string provider) { } } public void locateresult(location location){ new alertdialog.builder(mainactivity.this) .setmessage("纬度" + string.valueof(location.getlatitude()) + "\n经度" + string.valueof(location.getlongitude()) + "\n速度" + string.valueof(location.getspeed()) + "\n高度" + string.valueof(location.getaltitude()) + "\n朝向" + string.valueof(location.getbearing()) ) .setnegativebutton("取消",null) .show(); } }
最后上图:
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。