سلام دوباره خدمت شما عزیزان ، با بخش دیگر از آموزش کاتلین خدمت شما عزیزان هستم . این جلسه می خوام بهتون یاد بدم که چگونه از Alarm در کاتلین یا همون هشدار در کاتلین که به فارسی می گیم استفاده کنیم . اول از همه بزارید یکم توضیح بدم که Alarm در کاتلین یا همون به زبان فارسی هشدار در کاتلین یعنی چی اصلا ؟ بعد آن را برای شما با یه پروژه کوچیک پیاده سازی می کنیم . تا نحوی پیاده سازی ، و کار با Alarm در کاتلین رو یاد بگیرید و تو پروژه هاتون به صورت حرفه ای تر ازش استفاده کنین .
Alarm در کاتلین چه کاربردی دارد؟
همه ی ما تو زندگی روزمره خود کار هایی رو انجام می دهیم و جدا از این برای کار هایی هم که قرار است در روزهای آینده انجام بدیم برنامه ریزی می کنیم . تا اینکه فلان کار را در فلان روز ، و یا یکم دقیق تر اینکه فلان ساعت از روز انجام بدهیم . بعضی مواقع شما نیاز دارید که حتما یک کاری را در یک ساعت مشخص انجام دهید و آن کار دارای اهمیت زیادی است . در اینجاست که اهمیت Alarm در کاتلین زیاد می شود . یعنی ما به برنامه ایی نیاز داریم که این امور ضروری را به یاد ما بیاندازد تا در همان ساعت مشخص به کار های خود برسیم . و همچنین استفاده های زیادی که از این هشدار در کاتلین می توان کرد و همه ی اینها اهمیت بالای این را نشان می دهد .
چگونه هشدار در کاتلین را پیاده سازی کنیم
ما به کمک یک برنامه ساده نحوی پیاده سازی Alarm در کاتلین را خدمت شما عزیزان یاد می دهیم . در ابتدا شما باید ملزومات این برنامه رو به پروژه خودتون اضافه کنید .
ابتدا کتابخانه زیر را در مسیر app/build.gradle اضافه کنید .
1 |
implementation 'com.google.android.material:material:1.3.0' |
بعد یک اکتیویتی به اسم Alarm ایجاد کنید . در لایه xml آن کد های زیر را وارد سازید .
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 |
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:gravity="center" android:orientation="vertical" tools:context=".Alarm"> <TextView android:id="@+id/Text_alarm" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="21:15 PM" android:textColor="@color/black" android:textSize="30dp" android:textStyle="bold" /> <Button android:id="@+id/Id_Time" android:layout_width="150dp" android:layout_height="wrap_content" android:text="تنظیم ساعت" android:textColor="@color/black" android:textSize="20sp" android:textStyle="italic" /> <Button android:id="@+id/Id_SetAlarm" android:layout_width="150dp" android:layout_height="wrap_content" android:text="فعال سازی هشدار" android:textColor="@color/black" android:textSize="20sp" android:textStyle="italic" /> <Button android:id="@+id/Id_CancelAlarm" android:layout_width="150dp" android:layout_height="wrap_content" android:text="غیره فعال سازی هشدار" android:textColor="@color/black" android:textSize="20sp" android:textStyle="italic" /> </LinearLayout> |
و در کدنویسی قسمت بالا ما آمدیم و یکسری button و TextView برای کار با Alarm طراحی کردیم . در قسمت اکتیویتی خود کد های زیر را وارد سازید .
ما در قسمت اکتیویتی خود برای Button های خود رویداد های مورد نظرمون رو تعریف کردیم و همچنین از MaterialTimePicker برای تنظیم فرمت ساعت خودمون استفاده کردیم .در رویداد ShowTime نحوی تنظیم ساعت هشدار را نشان میدهد و بعد از آن با کلیک به روی ثبت، هشدار برای شما فعال می گرددو همچنین با کلیلک کردن روی دکمه لغو این هشدار برای ما لغو می گردد.
Alarm.kt .
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 |
package com.example.retrofit import android.app.AlarmManager import android.app.NotificationChannel import android.app.NotificationManager import android.app.PendingIntent import android.content.Context import android.content.Intent import android.os.Build import androidx.appcompat.app.AppCompatActivity import android.os.Bundle import android.view.View import android.widget.Button import android.widget.TextView import android.widget.Toast import com.google.android.material.timepicker.MaterialTimePicker import com.google.android.material.timepicker.TimeFormat import java.util.* class Alarm : AppCompatActivity() { lateinit var text: TextView lateinit var btnTime: Button lateinit var btnSet_Alarm: Button lateinit var btnCancel_Alarm: Button private lateinit var picker: MaterialTimePicker lateinit var calender: Calendar lateinit var alarmManager: AlarmManager lateinit var pendingIntent: PendingIntent override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_alarm) text = findViewById(R.id.Text_alarm) btnTime = findViewById(R.id.Id_Time) btnSet_Alarm = findViewById(R.id.Id_SetAlarm) btnCancel_Alarm = findViewById(R.id.Id_CancelAlarm) createNotificationChannel() btnTime.setOnClickListener(View.OnClickListener { ShowTime() }) btnSet_Alarm.setOnClickListener(View.OnClickListener { SetAlarm() }) } private fun SetAlarm() { alarmManager=getSystemService(Context.ALARM_SERVICE) as AlarmManager val intent = Intent(this,AlarmReceiver::class.java) pendingIntent= PendingIntent.getBroadcast(this,0,intent,0) alarmManager.setRepeating( AlarmManager.RTC_WAKEUP,calender.timeInMillis,AlarmManager.INTERVAL_DAY,pendingIntent ) Toast.makeText(this,"Alarm is set ",Toast.LENGTH_LONG).show() } private fun createNotificationChannel() { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { val name: CharSequence = "foxandroidReminderChannel" val descreption = "لغو کردن هشدار" val inportion = NotificationManager.IMPORTANCE_HIGH val channel = NotificationChannel("Vezhan", name, inportion) val notificationmanager = getSystemService( NotificationManager::class.java ) notificationmanager.createNotificationChannel(channel) } } private fun ShowTime() { picker = MaterialTimePicker.Builder().setTimeFormat(TimeFormat.CLOCK_12H) .setHour(12) .setMinute(0) .setTitleText("Select Alarm time") .build() picker.show(supportFragmentManager, "foxandroid") picker.addOnPositiveButtonClickListener { if (picker.hour > 12) { text.text = String.format("%02d", picker.hour) + ":" + String.format( "%02d", picker.minute ) + "PM" } else { if (picker.hour > 12) { text.text = String.format("%02d", picker.hour) + ":" + String.format( "%02d", picker.minute ) + "AH" } } calender= Calendar.getInstance() calender[Calendar.HOUR_OF_DAY]=picker.hour calender[Calendar.MINUTE]=picker.minute calender[Calendar.SECOND]=0 calender[Calendar.MILLISECOND]=0 } } } |
بعد از آن یک کلاس به اسم AlarmReciver .kt بسازید و کد های این بخش نیز به شکل زیر می باشد . اکثر کد های این قسمت قبلا در مبحث نوتیفیکیشن در کاتلین برای شما توضیح دادیم . که برای چه کاری از PendingIntent استفاده می کنیم و چجوری یک نوتیفیکیشن رو فعال کنیم . فقط این را هم بدانید که DestenationActivity اون صفحه ای هست که موقع کلیک به روی نوتیفیکیشن Alarm به آن هدایت می شوید .
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
package com.example.retrofit import android.app.PendingIntent import android.content.BroadcastReceiver import android.content.Context import android.content.Intent import androidx.core.app.NotificationCompat import androidx.core.app.NotificationManagerCompat class AlarmReceiver : BroadcastReceiver() { override fun onReceive(context: Context?, intent: Intent?) { val i =Intent(context,DestenationActivity::class.java) intent!!.flags=Intent.FLAG_ACTIVITY_NEW_TASK or Intent.FLAG_ACTIVITY_CLEAR_TASK val pendingIntent =PendingIntent.getActivity(context,0,i,0) val builder =NotificationCompat.Builder(context!!,"Vezhan") .setSmallIcon(R.drawable.splash) .setContentTitle("هشدار") .setContentText("کار های دانشگاه را انجام بده !") .setAutoCancel(true) .setDefaults(NotificationCompat.DEFAULT_ALL) .setPriority(NotificationCompat.PRIORITY_HIGH) .setContentIntent(pendingIntent) val notificationManager=NotificationManagerCompat.from(context) notificationManager.notify(123,builder.build()) } } |
حال که کار های بالا را انجام دادید وارد Android Manifest خود شوید و کد زیر را در آن وارد سازید .
1 |
<receiver android:name=".AlarmReceiver"/> |
در این جا پروژه به پایان رسید و شما تونستید یک Alarm ساده پیاده سازی کنید ما مباحث پیشرفته تر در مورد Alarm در کاتلین را در مباحث آینده خدمت شما عزیزان آموزش می دهیم .
دیدگاهتان را بنویسید