سلام دوباره خدمت شما عزیزان ، با بخش دیگر از آموزش کاتلین خدمت شما عزیزان هستم . این جلسه می خوام بهتون یاد بدم که چگونه از Alarm در کاتلین یا همون هشدار در کاتلین که به فارسی می گیم استفاده کنیم . اول از همه بزارید یکم توضیح بدم که Alarm در کاتلین یا همون به زبان فارسی هشدار در کاتلین یعنی چی اصلا ؟ بعد آن را برای شما با یه پروژه کوچیک پیاده سازی می کنیم . تا نحوی پیاده سازی ، و کار با Alarm در کاتلین رو یاد بگیرید و تو پروژه هاتون به صورت حرفه ای تر ازش استفاده کنین .
Alarm در کاتلین چه کاربردی دارد؟
همه ی ما تو زندگی روزمره خود کار هایی رو انجام می دهیم و جدا از این برای کار هایی هم که قرار است در روزهای آینده انجام بدیم برنامه ریزی می کنیم . تا اینکه فلان کار را در فلان روز ، و یا یکم دقیق تر اینکه فلان ساعت از روز انجام بدهیم . بعضی مواقع شما نیاز دارید که حتما یک کاری را در یک ساعت مشخص انجام دهید و آن کار دارای اهمیت زیادی است . در اینجاست که اهمیت Alarm در کاتلین زیاد می شود . یعنی ما به برنامه ایی نیاز داریم که این امور ضروری را به یاد ما بیاندازد تا در همان ساعت مشخص به کار های خود برسیم . و همچنین استفاده های زیادی که از این هشدار در کاتلین می توان کرد و همه ی اینها اهمیت بالای این را نشان می دهد .

آموزش پیاده سازی Alarm در کاتلین
چگونه هشدار در کاتلین را پیاده سازی کنیم
ما به کمک یک برنامه ساده نحوی پیاده سازی Alarm در کاتلین را خدمت شما عزیزان یاد می دهیم . در ابتدا شما باید ملزومات این برنامه رو به پروژه خودتون اضافه کنید .
ابتدا کتابخانه زیر را در مسیر app/build.gradle اضافه کنید .
implementation 'com.google.android.material:material:1.3.0'
بعد یک اکتیویتی به اسم Alarm ایجاد کنید . در لایه xml آن کد های زیر را وارد سازید .
<?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 .
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 به آن هدایت می شوید .
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 خود شوید و کد زیر را در آن وارد سازید .
<receiver android:name=".AlarmReceiver"/>
در این جا پروژه به پایان رسید و شما تونستید یک Alarm ساده پیاده سازی کنید ما مباحث پیشرفته تر در مورد Alarm در کاتلین را در مباحث آینده خدمت شما عزیزان آموزش می دهیم .
دیدگاهتان را بنویسید