如何用Kotlin或Java计算祷告时间?

问题描述 投票:0回答:1

所以我正在使用此类:http://praytimes.org/code/git/?a=viewblob&p=PrayTimes&h=093f77d6cc83b53fb12e9900803d5fa75dacd110&hb=HEAD&f=v1/java/PrayTime.java以获得祈祷时间,我想将其与经位置许可的纬度和经度一起使用,但是无论何时我更改时区的值,我都不会为我提供城市的准确祈祷时间。有什么办法可以使时区自动工作?因此,如果摩洛哥的某个人使用我的应用程序,则时区会自动更改为摩洛哥时区,以便祈祷时间给出准确的时间?同样,如果一个人住在沙特,伊拉克,西班牙等。等

预先感谢。

**我对**有问题的代码

@SuppressLint("MissingPermission")
private fun getLastLocation() {
    if (checkPermission()) {
        if (isLocationEnabled()) {

            mFusedLocationClient.lastLocation.addOnCompleteListener(this) { task ->
                var location: Location? = task.result
                if (location == null) {
                    requestNewLocationData()
                } else {

                    val resultimeZone = TimezoneMapper.latLngToTimezoneString(
                        location.latitude,
                        location.longitude
                    )
                    findViewById<TextView>(R.id.cityName).text = resultimeZone
                    val latitude: Double = location.latitude
                    val longitude: Double = location.longitude
                    var timeZone = 3.00
                    val timeZoneId = timeZone.toString()
                    val prayTime = praytime()
                    prayTime.timeFormat = prayTime.time12 // getTime12 is protected
                    prayTime.calcMethod = prayTime.makkah // Makkah
                    prayTime.asrJuristic = prayTime.shafii // Shafii (standard)
                    prayTime.adjustHighLats = prayTime.angleBased
                    prayTime.timeZone = prayTime.timeZone
                    prayTime.computeMidDay(prayTime.dhuhrMinutes.toDouble())
                    val offsets = intArrayOf(
                        0,
                        0,
                        0,
                        0,
                        0,
                        0,
                        0
                    ) // {Fajr,Sunrise,Dhuhr,Asr,Sunset,Maghrib,Isha}

                    prayTime.tune(offsets)
                    val cal = Calendar.getInstance(TimeZone.getTimeZone(timeZoneId))
                    cal.time = Date()


                    val times: ArrayList<String> =
                        prayTime.getPrayerTimes(
                            cal,
                            latitude,
                            longitude,
                            timeZone
                        )
                    findViewById<TextView>(R.id.Fajr).text = times.get(0)
                    findViewById<TextView>(R.id.sabah).text = times.get(1)
                    findViewById<TextView>(R.id.dhuhr).text = times.get(2)
                    findViewById<TextView>(R.id.AzanTime).text = times.get(3)
                    findViewById<TextView>(R.id.maghreb).text = times.get(4)
                    findViewById<TextView>(R.id.Esha).text = times.get(6)

                }
            }
        } else {
            Toast.makeText(this, "Turn on location", Toast.LENGTH_LONG).show()
            val intent = Intent(Settings.ACTION_LOCATION_SOURCE_SETTINGS)
            startActivity(intent)
        }
    } else {
        requestPermission()
    }

您可以将Java用于样本

java android-studio kotlin timezone
1个回答
0
投票

要获取时区,您可以轻松使用此库:https://raw.githubusercontent.com/drtimcooper/LatLongToTimezone/master/src/main/java/com/skedgo/converter/TimezoneMapper.java之后,请使用TimeZone.getTimeZone

© www.soinside.com 2019 - 2024. All rights reserved.