Как рассчитать время молитвы в kotlin или java? - PullRequest
1 голос
/ 25 апреля 2020

поэтому я использую этот класс: http://praytimes.org/code/git/?a=viewblob&p=PrayTimes&h=093f77d6cc83b53fb12e9900803d5fa75dacd110&hb=HEAD&f=v1 / java / PrayTime. java для получения времени молитвы, и я хочу использовать его с широтой и долготой, которые я сделал с разрешениями местоположения, но когда я меняю значение часового пояса, я не даю точное время молитвы за город. Есть ли какой-нибудь способ заставить часовой пояс работать автоматически? так что, если парень в Марокко использует мое приложение, часовой пояс автоматически изменит часовой пояс Марокко, чтобы время молитвы давало точное время? Точно так же, если парень живет в Саудовской Аравии, Ираке, Испании .. et c

, спасибо заранее.

** Мой код, с которым у меня проблема **

@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 Для образцов

1 Ответ

1 голос
/ 01 мая 2020

Для получения часового пояса вы можете легко использовать эту библиотеку: https://raw.githubusercontent.com/drtimcooper/LatLongToTimezone/master/src/main/java/com/skedgo/converter/TimezoneMapper.java После этого используйте TimeZone.getTimeZone Также для расчета времени молитвы полезны коды этого сайта http://praytimes.org/code/

...