Day 24:检查GPS状态

本篇文章同步发表在 HKT 线上教室 部落格,线上影音教学课程已上架至 UdemyYoutube 频道。另外,想追踪更多相关技术资讯,欢迎到 脸书粉丝专页 按赞追踪喔~

程序码范例

范例名称:检查GPS状态
开发人员:HKT (侯光灿)
程序语言:Kotlin
开发环境:Android Studio 4.1.2 & Android 11 & Kotlin 1.4.30
授权范围:使用时必须注明出处且不得为商业目的之使用
范例下载点:点我下载

昨天跟大家介绍,如何获取到定位权限之後,今天要来跟大家介绍,如何检查 GPS 是否开启,在装置未开启 GPS 的状态下,我们可以引导使用者前去装置设定页开启。若已经是开启装态,则可以开始获取经纬度。而如何获取经纬度的部分,会留在明天再继续跟大家介绍。今天主要会关注在,如何检查 GPS 是否开启。

检查GPS是否开启

透过 LocationManager 其中的 isProviderEnabled 方法来检查GPS是否开启,若未开启,则弹跳出询问视窗,引导使用者前往设定开启。若已经开启,则可以开始获取经纬度。

private fun checkGPSState() {
    val locationManager = mContext.getSystemService(Context.LOCATION_SERVICE) as LocationManager
    if (!locationManager.isProviderEnabled(LocationManager.GPS_PROVIDER)) {
        AlertDialog.Builder(mContext)
            .setTitle("GPS 尚未开启")
            .setMessage("使用此功能需要开启 GSP 定位功能")
            .setPositiveButton("前往开启",
                DialogInterface.OnClickListener { _, _ ->
                    startActivityForResult(
                        Intent(Settings.ACTION_LOCATION_SOURCE_SETTINGS), REQUEST_ENABLE_GPS
                    )
                })
            .setNegativeButton("取消", null)
            .show()
    } else {
        //todo getDeviceLocation()
        Toast.makeText(this, "已获取到位置权限且GPS已开启,可以准备开始获取经纬度", Toast.LENGTH_SHORT).show()
    }
}

输出结果

引导前往GPS设定开启

GPS 设定的 callBcak 事件

在前往设定页上,我们有加入 REQUEST_ENABLE_GPS ,所以在设定返回时会收到 callBcak 事件。这个时候我们再去检查 GPS 状态是否开启。

override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
    super.onActivityResult(requestCode, resultCode, data)
    when (requestCode) {
      ...
        REQUEST_ENABLE_GPS -> {
            checkGPSState()
        }
    }
}

参考资料

HKT 线上教室
https://tw-hkt.blogspot.com/

Freepik
https://www.freepik.com/


那今天【iThome 铁人赛】就介绍到这边罗~

顺带一提,KT 线上教室,脸书粉丝团,会不定期发布相关资讯,不想错过最新资讯,不要忘记来按赞,追踪喔!也欢迎大家将这篇文章分享给更多人喔。

我们明天再见罗!!!掰掰~


<<:  Day 24 Azure machine learning: deploy service and inference- 模型训练完就是要拿来用啊

>>:  @Day24 | C# WixToolset + WPF 帅到不行的安装包 [87分帅的设定页面]

管理API 变化之API version

REST API Versioning 本来对API分版号有个大概的印象,不外乎是逻辑、res 有了...

什麽是痛点?

痛点用在很多应用场景,在叙述使用者经验时,就是在替代用户在使用上不满,或是离开产品服务的关键要点。现...

样本指纹与模型库中的模板匹配(The sample fingerprint matches the template in the model repository)

-零假设和替代假设(来源:PrepNuggets) 原假设和替代假设(Null and Alter...

捉鳖神技 - 让USB传输见光死的方法

在程序中可以使用traceback 或try ... exception 的方式去做各种例外事件的拦...

Day 26:旅行推销员问题(TSP)

之前在贪婪演算法的文章中有提到,现实生活中并不是所有问题都能用演算法快狠准地解决,有些困难的问题只有...