Android 调用原生API获取地理位置和经纬度,判断所在国家

先自我介绍一下,小编浙江大学毕业,去过华为、字节跳动等大厂,目前阿里P7

深知大多数程序员,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年最新Android移动开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。
img
img
img
img
img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上Android开发知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

如果你需要这些资料,可以添加V获取:vip204888 (备注Android)
img

正文

TelephonyManager tm = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE);

String countryIso = tm.getSimCountryIso();

boolean isCN = false;//判断是不是大陆

if (!TextUtils.isEmpty(countryIso)) {

countryIso = countryIso.toUpperCase(Locale.US);

if (countryIso.contains(“CN”)) {

isCN = true;

}

}

return isCN;

}

/** 判断是否是国内的 SIM 卡,优先判断注册时的mcc */

public static boolean isChinaSimCard(Context c) {

String mcc = getSimOperator©;

if (isOperatorEmpty(mcc)) {

return false;

} else {

return mcc.startsWith(“460”);

}

}

Locale locale = Locale.getDefault();

String country = locale.getCountry();

CN   就是中国

1、添加位置权限

2、activity实现获取经纬度,地理位置代码

public class MainActivity extends AppCompatActivity {

private TextView textView;

private static final String[] authBaseArr = {//申请类型

Manifest.permission.ACCESS_FINE_LOCATION,

Manifest.permission.ACCESS_COARSE_LOCATION

};

private static final int authBaseRequestCode = 1;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

textView = findViewById(R.id.textView);

LocationManager locationManager = (LocationManager) getSystemService(LOCATION_SERVICE);

initNavi();

//权限检查的代码

if (ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) {

// TODO: Consider calling

return;

}

locationManager.requestLocationUpdates(

LocationManager.GPS_PROVIDER,//指定GPS定位提供者

1000,//指定数据更新的间隔时间

1,//位置间隔的距离为1m

new LocationListener() {//监听GPS信息是否改变

@Override

public void onLocationChanged(Location location) {//GPS信息发送改变时回调

Log.i(“lgq”,“onLocationChanged====”+location.getProvider());

}

@Override

public void onStatusChanged(String provider, int status, Bundle extras) {//GPS状态发送改变时回调

}

@Override

public void onProviderEnabled(String provider) { //定位提供者启动时回调

}

@Override

public void onProviderDisabled(String provider) { //定位提供者关闭时回调

}

}

);

Location location = locationManager.getLastKnownLocation(LocationManager.GPS_PROVIDER);//获取最新的定位信息

locationUpdates(location);

}

private boolean hasBasePhoneAuth() {

PackageManager pm = getPackageManager();

for (String auth : authBaseArr) {

if (pm.checkPermission(auth, getPackageName()) != PackageManager.PERMISSION_GRANTED) {

return false;

}

}

return true;

}

private void initNavi() {

// 申请权限

if (android.os.Build.VERSION.SDK_INT >= 23) {

if (!hasBasePhoneAuth()) {

this.requestPermissions(authBaseArr, authBaseRequestCode);

return;

}

}

}

public void locationUpdates(Location location){

自学编程路线、面试题集合/面经、及系列技术文章等,资源持续更新中…

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以添加V获取:vip204888 (备注Android)
img

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

8280856)]

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以添加V获取:vip204888 (备注Android)
[外链图片转存中…(img-w7eLOC5m-1713688280857)]

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

  • 19
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
您可以使用百度地图API的地理编码服务实现该功能,具体步骤如下: 1. 创建百度开发者账号并申请地图API权限。 2. 在Java项目中引入百度地图API的Java SDK。 3. 调用地理编码服务的API,传入地址参数即可获取对应的经纬度信息。 以下是Java代码示例: ``` import com.baidu.mapapi.SDKInitializer; import com.baidu.mapapi.model.LatLng; import com.baidu.mapapi.utils.CoordinateConverter; import com.baidu.mapapi.utils.CoordinateConverter.CoordType; import com.baidu.mapapi.utils.HttpUtil; public class GeoCoder { private static final String GEOCODER_URL = "http://api.map.baidu.com/geocoder/v2/"; private static final String AK = "your_ak"; // 替换成申请的AK public static LatLng getLatLng(String address) { String url = GEOCODER_URL + "?address=" + address + "&output=json&ak=" + AK; String response = HttpUtil.get(url, "utf-8"); JSONObject jsonObject = JSONObject.parseObject(response); int status = jsonObject.getInteger("status"); if (status == 0) { JSONObject result = jsonObject.getJSONObject("result"); JSONObject location = result.getJSONObject("location"); double lat = location.getDouble("lat"); double lng = location.getDouble("lng"); // 将百度地图坐标转换为GPS坐标 LatLng baiduLatLng = new LatLng(lat, lng); CoordinateConverter converter = new CoordinateConverter(); converter.from(CoordType.COMMON); converter.coord(baiduLatLng); LatLng gpsLatLng = converter.convert(); return gpsLatLng; } else { return null; } } } ``` 其中,AK是百度地图API的密钥,需要替换成您自己申请的密钥。该代码实现了将百度地图坐标转换为GPS坐标,如果不需要转换可以去掉相应的代码。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值