• 0

كيف أعمل منبه و عداد تنازلي لمواقيت الصلاة في تطبيقي بلغة جافا أو كوتلين

السلام عليكم انا اعمل على تطبيق لمواقيت الصلاة وأنتهيت تقريبا من اغلب المشروع لكن علقت على شيئين لم اجد لهم حل الى الان في جميع المواقع وهو عمل منبة للصلاة عند اقتراب موعد الصلاة يبدا التطبيق بأصدار صوت ينبه المستخدم للصلاة وعمل وعداد تنازلي لموعد الصلاة اتمنى ان اجد هنا الحل

انا اسنخدم هذا الكلاس  هنا

تنبيه: أنا استخدم لغة الكوتلين في التطبيق لكن ان اردت كتابة الحل في لغة جافا فلا يوجد اي مانع استطيع ترجمة الكود لاحقا الى الكوتلين.

هذا كود الصلوات

  val TimeId = TimezoneMapper.latLngToTimezoneString(location.latitude, location.longitude)

                    val gmt = TimeZone.getTimeZone(TimeId).getDisplayName(false, TimeZone.SHORT)

                    val z1 = gmt.substring(4)
                    val z = z1.replace(":", ".")
                    val zo = z.toDouble()
                    val latitude: Double = location.latitude
                    val longitude: Double = location.longitude

                    val locationPref = getSharedPreferences("location", Context.MODE_PRIVATE)
                    val editor = locationPref.edit()
                    //    editor.putFloat("lat", lat1.toFloat())
                    //   editor.putFloat("lng", lng.toFloat())
                    locationPref.edit().putDouble("latt1", latitude).apply()
                    locationPref.edit().putDouble("lngg2", longitude).apply()

                    editor.apply()

                    lat.text = "LAT:$latitude"
                    Long.text = "LONG:$longitude"
                    timeZone2.text = "TimeZone:$zo"


                    val timeZoneId = TimeZone.getAvailableIDs()
                    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
                    // my codes
                    prayTime.timeZone = prayTime.timeZone1
                    prayTime.setFajrAngle(18.5)

                    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.toString()))
                    val now = Date()
                    cal.time = now



                    val times: ArrayList<String> =
                        prayTime.getPrayerTimes(
                            cal, latitude, longitude, zo
                        )
                    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)

 

جربت هذا الكود لكن لا يعطيني المطلوب

 val currentTime = Calendar.getInstance().time
                        val endDateDay = "6/09/2020 ${times[0]} "
                        val format1 = SimpleDateFormat("DD/MM/YY hh:mm",Locale.getDefault())
                        val endDate = format1.parse(endDateDay)

                        //milliseconds
                        var different = endDate.time - currentTime.time
                        countDownTimer = object : CountDownTimer(different, 1000) {

                            override fun onTick(millisUntilFinished: Long) {
                                var diff = millisUntilFinished
                                val secondsInMilli: Long = 1000
                                val minutesInMilli = secondsInMilli * 60
                                val hoursInMilli = minutesInMilli * 60
                                val daysInMilli = hoursInMilli * 24

                                val elapsedDays = diff / daysInMilli
                                diff %= daysInMilli

                                val elapsedHours = diff / hoursInMilli
                                diff %= hoursInMilli

                                val elapsedMinutes = diff / minutesInMilli
                                diff %= minutesInMilli

                                val elapsedSeconds = diff / secondsInMilli

                                SalahCount.text = "$elapsedDays days $elapsedHours hs $elapsedMinutes min $elapsedSeconds sec"
                            }

                            override fun onFinish() {
                                SalahCount.text = "done!"
                            }
                        }.start()

 

وشكرا لكم

انشر على الشّبكات الاجتماعية


رابط هذه المساهمة
  • -1

إن الكود الذي تكتبه مرتبط ب Activity معينة ولن ينفذ إلا في حال تشغيل التطبيق.

حتى يعمل المؤقت في حال كان التطبيق مغلق عليك تشفيل Background service و استخدام الصف Timer

وعمل جدولة بذلك..

انشر على الشّبكات الاجتماعية


رابط هذه المساهمة

يجب أن تكون عضوًا لدينا لتتمكّن من التعليق

انشاء حساب جديد

يستغرق التسجيل بضع ثوان فقط


سجّل حسابًا جديدًا

تسجيل الدخول

تملك حسابا مسجّلا بالفعل؟


سجّل دخولك الآن