اذهب إلى المحتوى
  • 0

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

عبدالرحمن العنزي4

السؤال

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

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

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

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

  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()

 

وشكرا لكم

رابط هذا التعليق
شارك على الشبكات الإجتماعية

Recommended Posts

  • -1

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

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

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

رابط هذا التعليق
شارك على الشبكات الإجتماعية

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...