所以我正在使用此类: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用于样本
要获取时区,您可以轻松使用此库:https://raw.githubusercontent.com/drtimcooper/LatLongToTimezone/master/src/main/java/com/skedgo/converter/TimezoneMapper.java之后,请使用TimeZone.getTimeZone