You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在无需位置权限的Android设备上获取日出/日落时间

Android 直接获取本地日出/日落时间方案

可行,但Android系统没有提供直接读取已计算完成的日出日落时间的API,不过可以借助系统位置服务和官方工具类,无需手动实现时区、经纬度的计算逻辑,即可获取准确的本地日出日落时间。

具体操作步骤

  1. 申请位置权限
    日出日落时间依赖当前地理位置,需在AndroidManifest.xml中声明权限:
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<!-- Android 10+ 若需后台获取,需添加: -->
<uses-permission android:name="android.permission.ACCESS_BACKGROUND_LOCATION" />

同时需要在代码中动态申请权限(适配Android 6.0+的权限机制):

private const val REQUEST_LOCATION_PERMISSION = 1001

// 检查并申请权限
if (ContextCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) 
    != PackageManager.PERMISSION_GRANTED) {
    requestPermissions(
        arrayOf(Manifest.permission.ACCESS_FINE_LOCATION),
        REQUEST_LOCATION_PERMISSION
    )
}
  1. 获取当前设备地理位置
    使用Google推荐的FusedLocationProviderClient获取当前经纬度,系统会自动处理位置缓存、精度优化等逻辑:
val fusedLocationClient = LocationServices.getFusedLocationProviderClient(this)
fusedLocationClient.lastLocation.addOnSuccessListener { location ->
    location?.let {
        // 拿到经纬度后计算日出日落时间
        calculateSunriseSunset(it.latitude, it.longitude)
    }
}
  1. 利用系统工具类计算日出日落时间
    引入androidx.core:core-location依赖后,使用SunriseSunsetCalculator类完成计算,所有时区、天文计算逻辑均由系统实现:
private fun calculateSunriseSunset(lat: Double, lon: Double) {
    val timeZone = TimeZone.getDefault()
    val geoLocation = GeoLocation(lat, lon)
    val calculator = SunriseSunsetCalculator(geoLocation, timeZone.id)
    
    val currentDate = Calendar.getInstance()
    val officialSunrise = calculator.getOfficialSunriseForDate(currentDate)
    val officialSunset = calculator.getOfficialSunsetForDate(currentDate)
    
    // 输出结果,格式为HH:mm
    Log.d("SunTime", "日出时间:$officialSunrise")
    Log.d("SunTime", "日落时间:$officialSunset")
}

注意事项

  • 需确保设备开启位置服务,否则无法获取有效地理位置
  • SunriseSunsetCalculator支持多种日出日落类型(如民用、天文),可根据需求调用对应方法
  • 若设备无网络或位置信号较弱,lastLocation可能返回null,需添加位置更新监听作为 fallback 方案

内容的提问来源于stack exchange,提问作者Binyamin Pekar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.01 20:30:07