- Get link
- X
- Other Apps
- Get link
- X
- Other Apps
In XML,
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"> <RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"> <TextView
android:id="@+id/tv_title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Set Alarm"
android:textSize="24sp" /> <TimePicker
android:id="@+id/timepicker"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@+id/tv_title" > </TimePicker> <Button
android:id="@+id/btn_continue"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/timepicker"
android:background="@color/colorAccent"
android:text="Set"
android:layout_alignParentRight="true" /> </RelativeLayout> </LinearLayout>
SetAlarmManager.KT, complete code
import android.app.AlarmManager import android.app.PendingIntent import android.content.ComponentName import android.content.Context import android.content.Intent import android.content.pm.PackageManager import android.os.Bundle import android.util.Log import androidx.appcompat.app.AppCompatActivity import kotlinx.android.synthetic.main.activity_alarm.* import java.util.* public class SetAlarmManager: AppCompatActivity() { /** * Initialize variable */lateinit var alarmMgr:AlarmManager lateinit var alarmIntent:PendingIntent var hours:String?= nullvar min:String?= nulloverride fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_alarm) /*** set alarm with selected time on timepicker* and enable receiver on button click */this.btn_continue.setOnClickListener{ alarmMgr = getSystemService(Context.ALARM_SERVICE) as AlarmManager val intent = Intent(this, AlarmReceiverKotlin::class.java) alarmIntent = PendingIntent.getBroadcast(this, 0, intent, 0) val calendar = Calendar.getInstance() calendar.timeInMillis = System.currentTimeMillis() calendar.set(Calendar.HOUR_OF_DAY, "$hours".toInt()) calendar.set(Calendar.MINUTE, "$min".toInt()) alarmMgr.setRepeating(AlarmManager.RTC_WAKEUP, calendar.timeInMillis, (1000 * 60 * 2).toLong(), alarmIntent) val c_receiver = ComponentName(this, AlarmReceiverKotlin::class.java) val pm = packageManager pm.setComponentEnabledSetting(c_receiver, PackageManager.COMPONENT_ENABLED_STATE_ENABLED, PackageManager.DONT_KILL_APP) Log.d("alarm_done", "alarm_set") }this.timepicker.setIs24HourView(true) this.timepicker.setOnTimeChangedListener { view, hourOfDay, minute -> var selected_hours = hourOfDay.toString() min = if(minute<10)"0"+minute else minute.toString() hours = if(hourOfDay<10)"0"+hourOfDay else selected_hours } } }Create BroadcastReceiver,import android.app.NotificationManager import android.app.PendingIntent import android.content.BroadcastReceiver import android.content.Context import android.content.Intent import android.media.RingtoneManager import android.util.Log import androidx.core.app.NotificationCompat /** * Receiver */class AlarmReceiverKotlin : BroadcastReceiver() { override fun onReceive(context: Context, intent: Intent) { Log.d("alarm_done", "alarm_call") val intents = Intent(context, MainActivity::class.java) intents.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP)val pendingIntent = PendingIntent.getActivity(context, 0 /* Request code */, intents, PendingIntent.FLAG_ONE_SHOT)val defaultSoundUri = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION)val notificationBuilder = NotificationCompat.Builder(context) .setSmallIcon(R.mipmap.ic_launcher) .setContentTitle("Wake up") .setContentText("Wake up text") .setAutoCancel(true) .setSound(defaultSoundUri) .setContentIntent(pendingIntent) val notificationManager = context.getSystemService(Context.NOTIFICATION_SERVICE) as NotificationManager notificationManager.notify(0 /* ID of notification */, notificationBuilder.build()) } }set receiver in AndroidManifest,<receiver android:name=".AlarmReceiverKotlin"android:enabled="false"/>Now to stop alarmManager,/** * disable AlarmManager and receiver */ComponentName c_receiver=new ComponentName(this, AlarmReceiverKotlin.class); PackageManager pm=getPackageManager(); pm.setComponentEnabledSetting(c_receiver, PackageManager.COMPONENT_ENABLED_STATE_DISABLED, PackageManager.DONT_KILL_APP);
Comments
Post a Comment