السلام عليكم ورحمة الله وبركاتة, انا في الحقيقة لدي بعض المشاكل في أكواد الاشعارات بأستخدام لغة الكوتلن. في تطبيقي انا استخدم أداة "Time bicker" للمستخدم حتى يختار وقت معين وان اتى الوقت الذي قام بتحديدة يتم تفعيل الاشعار لتذكيرة بالصلاة, والحمدالله يعمل هذا النوع من الاشعار بشكل جيد. لكن أنا اريد اولا ان اضيف وقت افتراضي محدد قبل استخدام الـTime bicker ومفعل بشكل تلقائي حتى يرسل الاشعار الى المستخدم بنفس التوقيت الى ان يستخدم المستخدم اداة "Time bicker" لتغير موعد الاشعار.
فمشكلتي هي:
1- كيف أضيف وقت افتراضي "default time" حتى يتم ارسال الاشعار الى المستخدم قبل ما يستخدم أداة time bicker حتى يتم ارسال الاشعار بتوقيت اخر اليه؟
2- هل يجب علي استخدام shared preference حتى يعمل الاشعار بنفس التوقيت يوميا؟
أكون متشكر جدا الى اي شخص يعطيني اجابات اسئلتي او يلمح لي..
class fajrBroadcastReceiver :BroadcastReceiver(){
val CHANNEL_ID ="أذان الفجر"
override fun onReceive(context:Context?, intent:Intent?){
val intent =Intent(context,MainActivity::class.java).apply {
flags =Intent.FLAG_ACTIVITY_NEW_TASK or Intent.FLAG_ACTIVITY_CLEAR_TASK
}
val pendingIntent :PendingIntent=PendingIntent.getActivity(context,0,intent,0)
val builder =NotificationCompat.Builder(context!!, CHANNEL_ID).setSmallIcon(R.drawable.ic_fajr_icon).setContentTitle("صلاة الفجر قد حلت").setContentText("بسم الله الرحمن الرحيم").setPriority(NotificationCompat.PRIORITY_HIGH).setDefaults(NotificationCompat.DEFAULT_ALL).setContentIntent(pendingIntent).setAutoCancel(true)
with(NotificationManagerCompat.from(context)){
notify(123, builder.build())}}}
My Setting Activity
private lateinit var picker :MaterialTimePickerprivate lateinit var calender :Calendar
val CHANNEL_ID ="أذان الفجر"private lateinit var alarmManager:AlarmManagerprivate lateinit var pendingIntent:PendingIntent
fajrEditTxt.setOnClickListener {
showTimePicker()}
fajrSalah.setOnCheckedChangeListener { buttonView, isChecked ->if(isChecked){}else{}}private fun showTimePicker(){
val fajrtime = getSharedPreferences("saveSettingData",Context.MODE_PRIVATE)
picker =MaterialTimePicker.Builder().setTimeFormat(TimeFormat.CLOCK_12H).setHour(fajrtime.getInt("fajrTimeHour",0))// I took it from a library I use.setMinute(fajrtime.getInt("fajrTimeMinutes",0))// I took it from a library I use.setTitleText("حدد الموعد الذي تريدة").build()
picker.show(supportFragmentManager,"AdhanNotifacations")
picker.addOnPositiveButtonClickListener {if(picker.hour >12){
fajrEditTxt.setHint(String.format("%02d",picker.hour -12)+":"+String.format("%02d", picker.minute)+" PM")}else{
fajrEditTxt.setHint(String.format("%02d",picker.hour)+":"+String.format("%02d", picker.minute)+" AM")}
calender =Calendar.getInstance()
calender[Calendar.HOUR_OF_DAY]= picker.hour
calender[Calendar.MINUTE]= picker.minute
calender[Calendar.SECOND]=0
calender[Calendar.MILLISECOND]=0
alarmFajr()}}private fun createNotificationChannel(){
val channelName ="مؤذن الفجر"
val DESCRIPTION_TEXT ="أشعار لأذان الفجر"if(Build.VERSION.SDK_INT >=Build.VERSION_CODES.O){
val name = channelName
val description_text = DESCRIPTION_TEXT
val importance =NotificationManager.IMPORTANCE_HIGH
val channel =NotificationChannel(CHANNEL_ID, name, importance).apply {
description = description_text
}
val notificationManager:NotificationManager=
getSystemService(Context.NOTIFICATION_SERVICE) as NotificationManager
notificationManager.createNotificationChannel(channel)}}
fun alarmFajr(){
alarmManager = getSystemService(ALARM_SERVICE) as AlarmManager
val i =Intent(this, fajrBroadcastReceiver::class.java)
pendingIntent =PendingIntent.getBroadcast(this,0, i,0)
alarmManager.setInexactRepeating(AlarmManager.RTC_WAKEUP, calender.timeInMillis,AlarmManager.INTERVAL_DAY, pendingIntent
)}
السؤال
عبدالرحمن العنزي4
السلام عليكم ورحمة الله وبركاتة, انا في الحقيقة لدي بعض المشاكل في أكواد الاشعارات بأستخدام لغة الكوتلن. في تطبيقي انا استخدم أداة "Time bicker" للمستخدم حتى يختار وقت معين وان اتى الوقت الذي قام بتحديدة يتم تفعيل الاشعار لتذكيرة بالصلاة, والحمدالله يعمل هذا النوع من الاشعار بشكل جيد. لكن أنا اريد اولا ان اضيف وقت افتراضي محدد قبل استخدام الـTime bicker ومفعل بشكل تلقائي حتى يرسل الاشعار الى المستخدم بنفس التوقيت الى ان يستخدم المستخدم اداة "Time bicker" لتغير موعد الاشعار.
فمشكلتي هي:
1- كيف أضيف وقت افتراضي "default time" حتى يتم ارسال الاشعار الى المستخدم قبل ما يستخدم أداة time bicker حتى يتم ارسال الاشعار بتوقيت اخر اليه؟
2- هل يجب علي استخدام shared preference حتى يعمل الاشعار بنفس التوقيت يوميا؟
أكون متشكر جدا الى اي شخص يعطيني اجابات اسئلتي او يلمح لي..
Android Manifast.xml
My broadcast receiver
My Setting Activity
>> نسخه من السؤال موجود في موقع Stack overflow
استخدم جافا وكوتلن فقط
1 جواب على هذا السؤال
Recommended Posts
انضم إلى النقاش
يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.