package com.example.my study.com mont;
import android.Manifest;
import android.content.Context;
import android.content.Intent;
import Android.content.pm.package manager;
import android.location.Address;
import Android.location.criteria;
import Android.location.geocoder;
import Android.location.location;
import android.location.hpdhf;
import Android.location.location manager;
import android.os.Bundle;
import Android.provider.settings;
import android.util.Log;
importandroidx.core.app.activity compat;
import com.example.my study.main activity;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
public class GPS {
私有上下文上下文;
权限位置管理器;
privatestaticfinalstringtag=' GPS-info ';
公共GPS (上下文上下文) {
this.context=context;
initLocationManager (;
}
//*
privatevoidinitlocationmanager {
位置管理器=(位置管理器) context.getsystemservice (context.location _ service );
if (! location manager.isproviderenabled (Android.location.location manager.GPS _ provider ) }{
//进入手机设置画面,用户设定bzdzc/p
intent.add flags (intent.flag _ activity _ new _ task );
context.startactivity(intent );
}
getProviders (;
}
//*
private诚心诚意的甜瓜myhpdhf;
私有字符串最佳提供商;
私有语音获取提供程序(
//获取定位gddbq
list providers=location manager.get providers (true;
for (strings 3360提供程序) {
log.e(tag,s );
}
Criteria criteria=new Criteria (;
//查询精度:高,Criteria.ACCURACY_COARSE比较粗糙,Criteria.ACCURACY_FINE比较准确
criteria.set accuracy (criteria.accuracy _ fine );
//是否查询拨入:否
criteria.setaltituderequired (true;
//是否查询方位角:否
criteria.setbearingrequired (false;
//设定是否需要速度
criteria.set speed required (false;
//电力要求:低
criteria.setpowerrequirement (criteria.accuracy _ low;
myhpdhf=new诚心诚意的甜瓜(;
}
公共void开始位置(
if (context,manifest.permission.access _ fine _ location )!=package manager.permission _ grantedactivitycompat.checkselfpermission (context,manifest.permission.access _ coa
//todo :密码呼叫
//activity compat # request permissions
//heretorequestthemissingpermissions,and then overriding
//publicvoidonrequestpermissionsresult (intrequestcode,String[] permissions,
//int[] grantResults )
//tohandlethecasewheretheusergrantsthepermission.see the documentation
//foractivitycompat # requestpermissionsformoredetails。
返回;
}
log.e(tag,' startLocation: ' );
location manager.requestlocationupdates (best provider,0,0,myhpdhf );
}
公共语音停止位置(
log.e(tag,' stopLocation: ' );
location manager.remove updates (myhpdhf;
}
private class诚心诚意的甜瓜implements hpdhf {
@Override
publicvoidonlocationchanged (位置定位) {
//定位时调用
log.e(tag,' onLocationChanged ' );
列表
addresses=new ArrayList (; //用纬度和经度转动城市
地理空间地理空间=新地理空间(context;
try {
addresses=geocoder.getfromlocation (location.get latitude ),location.getLongitude ),10 );
}catch(ioexceptione ) {
e .打印任务跟踪(;
}
地址地址:地址(for )
//国家CN
log.e(tag,address.getCountryCode ) );
//国家
log.e(tag,address.getCountryName ) );
//省市、地址
log.e(tag,address.getAdminArea ) );
log.e(tag,address.getLocality ) );
log.e(tag,address.getFeatureName ) );
//纬度经度
log.e(tag,string.valueof ) address.getlatitude () );
log.e(tag,string.valueof ) address.getlongitude () );
//log.e(tag,address.getAddressLine ) );
}
}
@Override
publicvoidonstatuschanged (string provider,int status,Bundle extras ) {
//定位状态改变
log.e(tag,' onStatusChanged ' );
}
@Override
公共提供程序(string providerenabled ) {
//定位on
log.e(tag,' onProviderEnabled ' );
}
@Override
公共提供程序(string provider ) {
//定位关闭
log.e(tag,' onProviderDisabled ' );
}
}
}