Alarm در کاتلین | آموزش پیاده سازی Alarm یا هشدار در کاتلین

سلام دوباره خدمت شما عزیزان ، با بخش دیگر از آموزش کاتلین  خدمت شما عزیزان هستم . این جلسه می خوام بهتون یاد بدم که چگونه از Alarm در کاتلین یا همون هشدار در کاتلین که به فارسی می گیم استفاده کنیم . اول از همه بزارید یکم توضیح بدم که 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 در کاتلین را در مباحث آینده خدمت شما عزیزان آموزش می دهیم .

 

 

برای امتیاز به این نوشته کلیک کنید!
[کل: 3 میانگین: 3.7]
اشتراک‌گذاری

فرشید حبیبی هستم . برنامه نویس موبایل، سئو و وردپرس همچنین علاقه مند به تولید محتوا در زمینه برنامه نویسی و تکنولوژی های روز دنیا.

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *