Android调用系统闹钟AlarmClock

目录

一、效果展示

二、代码实现

1、设置权限

2、UI (简单的按钮)

三、Activity


一、效果展示

二、代码实现

https://developer.android.com/reference/android/provider/AlarmClock?hl=enhttps://developer.android.com/reference/android/provider/AlarmClock?hl=en

1、设置权限

<uses-permission android:name="com.android.alarm.permission.SET_ALARM" />

2、UI (简单的按钮)

<?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"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="#ffffff"
    android:fitsSystemWindows="true"
    android:orientation="vertical">

    <Button
        android:id="@+id/btAlarm"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center_horizontal"
        android:layout_marginTop="130dp"
        android:background="#E3DFDF"
        android:padding="10dp"
        android:text="设置闹钟"
        android:textColor="#000000"
        android:textIsSelectable="true"
        android:textSize="22dp" />


</LinearLayout>

三、Activity

package com.example.myapplication.activity;

import android.Manifest;
import android.app.TimePickerDialog;
import android.content.Intent;
import android.os.Bundle;
import android.provider.AlarmClock;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.TimePicker;

import androidx.annotation.Nullable;
import androidx.appcompat.app.AppCompatActivity;

import com.example.myapplication.R;
import com.example.myapplication.utils.PermissionUtil;

import java.util.ArrayList;
import java.util.Calendar;

/**
 * Created by tzbc
 */
public class AlarmActivity extends AppCompatActivity implements View.OnClickListener {

    private static final String TAG = "AlarmActivity";

    private Button btAlarm;
    private TimePickerDialog timePickerDialog;
    private Calendar calendar;

    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.alarm_activity);

        calendar = Calendar.getInstance();

        btAlarm = findViewById(R.id.btAlarm);
        btAlarm.setOnClickListener(this);
    }

    @Override
    public void onClick(View v) {
        if (v == null) {
            return;
        }
        if (v.getId() == R.id.btAlarm) {
            Log.v(TAG, "click btAlarm");
            boolean hasAlarmPermission = PermissionUtil.judgeHasPermissions(this, Manifest.permission.SET_ALARM);
            Log.v(TAG, "hasAlarmPermission = " + hasAlarmPermission);
            if (!hasAlarmPermission) {
                Log.e(TAG, "alarm permission not granted");
                return;
            }
            showTimeDialog();
        }
    }

    private void showTimeDialog() {
        timePickerDialog = new TimePickerDialog(this, new TimePickerDialog.OnTimeSetListener() {
            @Override
            public void onTimeSet(TimePicker view, int hourOfDay, int minute) {
                Log.e(TAG, "onTimeSet hourOfDay: " + hourOfDay + ", minute: " + minute);
                setAlarm(hourOfDay, minute);
            }
        }, calendar.get(Calendar.HOUR_OF_DAY), calendar.get(Calendar.MINUTE), true);
        timePickerDialog.show();
    }

    private void setAlarm(int hour, int minute) {
        Intent intent = new Intent(AlarmClock.ACTION_SET_ALARM);
        intent.putExtra(AlarmClock.EXTRA_HOUR, hour);
        intent.putExtra(AlarmClock.EXTRA_MINUTES, minute);
        intent.putExtra(AlarmClock.EXTRA_MESSAGE, "tzbc");
        intent.putExtra(AlarmClock.EXTRA_VIBRATE, true);
        intent.putExtra(AlarmClock.EXTRA_SKIP_UI, true);
        ArrayList<Integer> days = new ArrayList<>();
        days.add(Calendar.SUNDAY);
        days.add(Calendar.MONDAY);
        days.add(Calendar.TUESDAY);
        days.add(Calendar.WEDNESDAY);
        days.add(Calendar.THURSDAY);
        days.add(Calendar.FRIDAY);
        days.add(Calendar.SATURDAY);
        intent.putExtra(AlarmClock.EXTRA_DAYS, days);
        boolean resolvedActivity = intent.resolveActivity(getPackageManager()) != null;
        Log.v(TAG, "resolvedActivity = " + resolvedActivity);
        try {
            startActivity(intent);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

}

评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值