当前位置: 首页 > news >正文

南昌网站建设索q.479185700微信营销案例100例

南昌网站建设索q.479185700,微信营销案例100例,网站开发思维导图内容,网站服务公司排名文章目录 前言一、实现步骤二、使用步骤1.服务启动工具类2.实现LocationService 总结 前言 在android开发中地图和定位是很多软件不可或缺的内容,这些特色功能也给人们带来了很多方便。定位一般分为三种发方案:即GPS定位、Google网络定位以及基站定位。…

文章目录

  • 前言
  • 一、实现步骤
  • 二、使用步骤
    • 1.服务启动工具类
    • 2.实现LocationService
  • 总结


前言

在android开发中地图和定位是很多软件不可或缺的内容,这些特色功能也给人们带来了很多方便。定位一般分为三种发方案:即GPS定位、Google网络定位以及基站定位。


本文分别介绍GPS定位、以及基于Google的网络Wifi定位的详细步骤,(小米手机获取位置信息locationManager.getLastKnownLocation(provider)的Location一直为空,查了资料换了种获取手机getProviders的方式就可以了)

一、实现步骤

一般来说我们实现原生定位的流程大概是:先判断有无权限》有权限启动一个LocationSrevice去获取定位》最后携带所需的定位信息返回,进行开发。

二、使用步骤

1.服务启动工具类

代码如下(示例):大概步骤如下,权限请求可自定义开发关键的是LocationService

/*** 获取定位*/
public class MyLocationManager implements LocationService.LocationCallBack {private Activity context;private OnLocationListener onLocationListener;private String[] stringsLocation = new String[]{Permission.ACCESS_FINE_LOCATION, Permission.ACCESS_COARSE_LOCATION};@Overridepublic void Location_Return(double Location_latitude, double Location_longitude, String province, String city, String area, String featureName) {onLocationListener.OnLocation(Location_latitude, Location_longitude, province, city, area, featureName);}public interface OnLocationListener {void OnLocation(double Location_latitude, double Location_longitude, String province, String city, String area, String featureName);}public void setOnLocationListener(OnLocationListener onLocationListener) {this.onLocationListener = onLocationListener;}public MyLocationManager(@NonNull Activity context) {this.context = context;if (!XXPermissions.isGranted(context, stringsLocation)) {MessageDialog codeDialog = new MessageDialog(context, "位置信息权限使用说明", "为确保你能在******内使用位置信息******,******需要获取你的位置信息权限。允许后,你可以随时通过手机系统设置对授权进行管理。", "取消", "去授权");codeDialog.setCancelable(false);codeDialog.show();codeDialog.setOnSumbitTextCodeListener(() -> {doMainPermission();codeDialog.dismiss();});codeDialog.setOnCancelListener(() -> {codeDialog.dismiss();});} else {initData();}}private void doMainPermission() {XXPermissions.with(context).permission(stringsLocation).request(new OnPermissionCallback() {@Overridepublic void onGranted(@NonNull List<String> permissions, boolean allGranted) {if (allGranted) {initData();}}@Overridepublic void onDenied(@NonNull List<String> permissions, boolean doNotAskAgain) {if (doNotAskAgain) {}}});}@SuppressLint("MissingPermission")private void initData() {// 创建 Service 实例LocationService myService = new LocationService();// 设置回调接口myService.setCallback(this);// 启动 Service 并执行操作Intent serviceIntent = new Intent(context, LocationService.class);context.startService(serviceIntent);}
}
/**-------------------------/
不要忘了注册<serviceandroid:name=".utils.LocationService"android:enabled="true"android:exported="false" />

2.实现LocationService

代码如下(示例):

/*** 获取定位服务*/
public class LocationService extends Service {private LocationManager locationManager;private MyLocationListener myLocationListener;public static LocationCallBack mCallBack = null;public interface LocationCallBack {void Location_Return(double Location_latitude, double Location_longitude, String province, String city, String area, String featureName);}public void setCallback(LocationCallBack callback) {this.mCallBack = callback;}@Overridepublic IBinder onBind(Intent intent) {return null;}@SuppressLint("MissingPermission")@Overridepublic void onCreate() {super.onCreate();myLocationListener = new MyLocationListener();locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);try {GPSLocation();} catch (Exception e) {if (ObjectUtils.isNotEmpty(locationManager) && ObjectUtils.isNotEmpty(myLocationListener))locationManager.removeUpdates(myLocationListener); // 停止所有的定位服务stopSelf();  // 获取到经纬度以后,停止该service}}class MyLocationListener implements LocationListener {// 位置改变时获取经纬度@Overridepublic void onLocationChanged(Location location) {if (ObjectUtils.isNotEmpty(location)) {toGeocoder(location);}}// 状态改变时@Overridepublic void onStatusChanged(String provider, int status, Bundle extras) {}// 提供者可以使用时@Overridepublic void onProviderEnabled(String provider) {}// 提供者不可以使用时@Overridepublic void onProviderDisabled(String provider) {}}@SuppressLint("MissingPermission")private Location getLastKnownLocation(LocationManager locationManager) {List<String> providers = locationManager.getProviders(true);Location bestLocation = null;for (String provider : providers) {Location l = locationManager.getLastKnownLocation(provider);if (l == null) {continue;}if (bestLocation == null || l.getAccuracy() < bestLocation.getAccuracy()) {bestLocation = l;}}return bestLocation;}@SuppressLint("MissingPermission")private void GPSLocation() {Location location = getLastKnownLocation(locationManager);if (location != null) {//不为空,显示地理位置经纬度String longitude = "Longitude:" + location.getLongitude();String latitude = "Latitude:" + location.getLatitude();LogUtils.e("Location:" + longitude + latitude);toGeocoder(location);} else {LogUtils.e("Location:" + "Location为空");if (ObjectUtils.isNotEmpty(locationManager) && ObjectUtils.isNotEmpty(myLocationListener))locationManager.removeUpdates(myLocationListener); // 停止所有的定位服务stopSelf();  // 获取到经纬度以后,停止该service}}@SuppressLint("MissingPermission")private void toGeocoder(Location location) {String province = "";String city = "";String area = "";String featureName = "";try {Geocoder geocoder = new Geocoder(getApplicationContext(), Locale.getDefault());List<Address> addresses = geocoder.getFromLocation(location.getLatitude(), location.getLongitude(), 1);if (ObjectUtils.isNotEmpty(addresses) && 0 < addresses.size()) {Address address = addresses.get(0);if (ObjectUtils.isNotEmpty(address)) {// 获取省份(province)province = address.getAdminArea();// 获取城市(City)city = address.getLocality();// 获取区县(area)area = address.getSubLocality();//  获取详细地址featureName = address.getFeatureName();// 获取街道地址String addressLine = address.getAddressLine(0);// 打印详细地址信息LogUtils.e("AddressInfo", "province: " + province);LogUtils.e("AddressInfo", "City: " + city);LogUtils.e("AddressInfo", "area: " + area);LogUtils.e("AddressInfo", "FeatureName: " + featureName);LogUtils.e("AddressInfo", "Address Line: " + addressLine);}mCallBack.Location_Return(location.getLatitude(), location.getLongitude(), province, city, area, featureName);}if (ObjectUtils.isNotEmpty(locationManager) && ObjectUtils.isNotEmpty(myLocationListener))locationManager.removeUpdates(myLocationListener); // 停止所有的定位服务stopSelf();  // 获取到经纬度以后,停止该service} catch (Exception e) {if (ObjectUtils.isNotEmpty(locationManager) && ObjectUtils.isNotEmpty(myLocationListener))locationManager.removeUpdates(myLocationListener); // 停止所有的定位服务stopSelf();  // 获取到经纬度以后,停止该servicee.printStackTrace();}}@SuppressLint("MissingPermission")@Overridepublic void onDestroy() {super.onDestroy();if (ObjectUtils.isNotEmpty(locationManager) && ObjectUtils.isNotEmpty(myLocationListener))locationManager.removeUpdates(myLocationListener); // 停止所有的定位服务stopSelf();}}

该处使用原生定位获取经纬度、省市县等数据的详细步骤。


总结

以上就是今天要讲的使用Android原生获取定位内容,本文详细展现了完整流程,希望对大家会有帮助,公司如果有实力大可不必如此,直接给第三方地图交钱就好了,毕竟人家又快又准(本文仅仅适用于只需经纬度或者地址信息的同学,有地图展现需求的只能想别的方法了哈哈)。

http://www.yayakq.cn/news/332079/

相关文章:

  • 博州建设局网站wordpress wp option
  • 整站排名服务it服务商
  • 昆山网站建设工作室wordpress+魅族
  • jsp网站建设作业主流电商平台有哪些
  • 公司建一个网站多少钱广告设计与制作用什么软件
  • 专业的设计网站有哪些媒介
  • 做的好看的统一登录网站手机网站快速建设
  • 珠海做网站专业公司平台公司市场化转型
  • 医保局网站建设中标公告wordpress 换主题
  • 网站开发本科论文站长之家工具查询
  • 做网站最主要南通网站制作外包
  • 女生做网站推广广州服装网站建设
  • 类似猪八戒的网站建设互助网站制作公司
  • 个人官方网站怎么建设2018网站如何做seo
  • 无人机东莞网站建设怎么做网站广告位
  • 广东建设监理协会网站个人账号专门做饮食加盟的网站
  • 网站制作公司运作方案wordpress minify
  • 湖北聚四方建设有限公司网站萧江网站建设
  • 巨蟹座适合网站建设吗网站开发流程及详解
  • 广州天美展览公司网站wordpress百家号采集
  • 网站建设行业赚钱么seo搜索引擎优化人才
  • 网站建设课程设计格式成品短视频app源码的下载方法
  • 怎样建网站?ui设计那个培训班好
  • 网站做301根目录在哪网站搭建运营
  • 做网站所具备的的条件邢台网站推广
  • 电子商务网站建设目的和意义台州网站制作建设
  • 做任务得佣金的网站搜索wordpress博客
  • 本地做的网站如何映射出去网站建设对图片有哪些要求
  • 定西网站建设公司网页设计软件html
  • 网站开发有哪些方向做网站亏本