You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
163 lines
5.2 KiB
163 lines
5.2 KiB
import {
|
|
UTSAndroid
|
|
} from "io.dcloud.uts";
|
|
|
|
import { AddParams, AddOptions, DeleteParams, DeleteOptions, Results } from "../interface.uts"
|
|
import Intent from 'android.content.Intent';
|
|
import AlarmClock from 'android.provider.AlarmClock';
|
|
import Uri from 'android.net.Uri';
|
|
import Activity from 'android.app.Activity';
|
|
import ActivityCompat from "androidx.core.app.ActivityCompat";
|
|
import Manifest from "android.Manifest";
|
|
|
|
import Context from 'android.content.Context';
|
|
import ContentUris from 'android.content.ContentUris';
|
|
import ContentValues from 'android.content.ContentValues';
|
|
import Color from 'android.graphics.Color';
|
|
import Cursor from 'android.database.Cursor';
|
|
|
|
import CalendarContract from 'android.provider.CalendarContract';
|
|
import Calendar from 'java.util.Calendar';
|
|
import TimeZone from 'java.util.TimeZone';
|
|
import PackageManager from "android.content.pm.PackageManager";
|
|
import TextUtils from 'android.text.TextUtils';
|
|
|
|
import ArrayList from 'java.util.ArrayList';
|
|
import Int from 'kotlin.Int';
|
|
class AlarmUtils {
|
|
|
|
/**
|
|
* 添加闹钟事件
|
|
*/
|
|
addEvent(params : AddParams) {
|
|
console.log("addEvent");
|
|
let clock_name : string = params.name;
|
|
let clock_hour : number = params.hour;
|
|
let clock_minutes : number = params.minutes;
|
|
let clock_ringtone : string = params.ringtone;
|
|
let clock_weekdays : string = params.weekday
|
|
let intent : Intent = new Intent(AlarmClock.ACTION_SET_ALARM);
|
|
|
|
intent.putExtra(AlarmClock.EXTRA_HOUR, clock_hour);
|
|
intent.putExtra(AlarmClock.EXTRA_MINUTES, clock_minutes);
|
|
intent.putExtra(AlarmClock.EXTRA_MESSAGE, clock_name);
|
|
intent.putExtra(AlarmClock.EXTRA_VIBRATE, true);
|
|
intent.putExtra(AlarmClock.EXTRA_SKIP_UI, true);
|
|
|
|
if (TextUtils.isEmpty(clock_ringtone)) {
|
|
intent.putExtra(AlarmClock.VALUE_RINGTONE_SILENT, true);
|
|
} else {
|
|
intent.putExtra(AlarmClock.EXTRA_RINGTONE, clock_ringtone);
|
|
}
|
|
|
|
if (!TextUtils.isEmpty(clock_weekdays)) {
|
|
let clock_days : ArrayList<Int> = new ArrayList<Int>();
|
|
if (TextUtils.indexOf(clock_weekdays, '1') !== -1) {
|
|
clock_days.add(Calendar.MONDAY);//周一
|
|
}
|
|
if (TextUtils.indexOf(clock_weekdays, '2') !== -1) {
|
|
clock_days.add(Calendar.TUESDAY);//周二
|
|
}
|
|
if (TextUtils.indexOf(clock_weekdays, '3') !== -1) {
|
|
clock_days.add(Calendar.WEDNESDAY);//周三
|
|
}
|
|
if (TextUtils.indexOf(clock_weekdays, '4') !== -1) {
|
|
clock_days.add(Calendar.THURSDAY);//周四
|
|
}
|
|
if (TextUtils.indexOf(clock_weekdays, '5') !== -1) {
|
|
clock_days.add(Calendar.FRIDAY);//周五
|
|
}
|
|
if (TextUtils.indexOf(clock_weekdays, '6') !== -1) {
|
|
clock_days.add(Calendar.SATURDAY);//周六
|
|
}
|
|
if (TextUtils.indexOf(clock_weekdays, '7') !== -1) {
|
|
clock_days.add(Calendar.SUNDAY);//周日
|
|
}
|
|
intent.putExtra(AlarmClock.EXTRA_DAYS, clock_days);
|
|
}
|
|
|
|
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
|
|
|
|
let packageManager = UTSAndroid.getUniActivity()!.getPackageManager();
|
|
var component = intent.resolveActivity(packageManager);
|
|
if (component != null) {
|
|
UTSAndroid.getUniActivity()!.startActivity(intent);
|
|
}
|
|
}
|
|
/**
|
|
* 删除事件
|
|
*/
|
|
deleteEvent() {
|
|
let clock_name : string = 'dida';
|
|
var hour = '05';
|
|
var minutes = '40';
|
|
let intent : Intent = new Intent(AlarmClock.ACTION_DISMISS_ALARM);
|
|
console.log('clock_name', clock_name)
|
|
if (!TextUtils.isEmpty(clock_name)) { //通过标签取消
|
|
|
|
intent.putExtra(AlarmClock.EXTRA_ALARM_SEARCH_MODE, AlarmClock.ALARM_SEARCH_MODE_LABEL);
|
|
intent.putExtra(AlarmClock.ALARM_SEARCH_MODE_LABEL, clock_name);
|
|
//intent.putExtra(AlarmClock.EXTRA_MESSAGE, clock_name);
|
|
console.log('通过标签取消')
|
|
} else { //通过小时分钟取消
|
|
console.log('通过小时分钟取消')
|
|
let is_pm = true
|
|
intent.putExtra(AlarmClock.ALARM_SEARCH_MODE_TIME, 1);
|
|
intent.putExtra(AlarmClock.EXTRA_IS_PM, is_pm); //其中false = AM且true = PM
|
|
intent.putExtra(AlarmClock.EXTRA_HOUR, hour);
|
|
intent.putExtra(AlarmClock.EXTRA_MINUTES, minutes);
|
|
}
|
|
intent.putExtra(AlarmClock.EXTRA_SKIP_UI, true);
|
|
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
|
|
|
|
let packageManager = UTSAndroid.getUniActivity()!.getPackageManager();
|
|
var component = intent.resolveActivity(packageManager);
|
|
if (component != null) {
|
|
UTSAndroid.getUniActivity()!.startActivity(intent);
|
|
}
|
|
}
|
|
|
|
}
|
|
|
|
/**
|
|
* 添加闹钟
|
|
*/
|
|
export function alarmAdd(opts : AddOptions) {
|
|
console.log('alarmAdd', UTSAndroid, UTSAndroid.getUniActivity())
|
|
// 检查相关权限是否已经具备
|
|
if (ActivityCompat.checkSelfPermission(UTSAndroid.getUniActivity()!, Manifest.permission.SET_ALARM) != PackageManager.PERMISSION_GRANTED) {
|
|
// 不具备权限,申请权限,并且告知用户监听失败
|
|
ActivityCompat.requestPermissions(UTSAndroid.getUniActivity()!, arrayOf(Manifest.permission.SET_ALARM), 1001)
|
|
// 因权限缺失导致监听失败
|
|
const ret : Results = {
|
|
code: -1,
|
|
data: "权限",
|
|
msg: "不具备权限,请申请权限"
|
|
}
|
|
opts.fail(ret);
|
|
|
|
} else {
|
|
let alarm_utils = new AlarmUtils();
|
|
let params : AddParams = opts.params
|
|
|
|
alarm_utils.addEvent(params);
|
|
const ret : Results = {
|
|
code: 1,
|
|
data: "成功",
|
|
msg: "添加闹铃成功"
|
|
}
|
|
opts.success(ret);
|
|
}
|
|
|
|
opts.complete();
|
|
}
|
|
|
|
|
|
/**
|
|
* 删除闹钟
|
|
*/
|
|
export function alarmDelete() {
|
|
let alarm_utils = new AlarmUtils();
|
|
console.log("======alarmDelete");
|
|
alarm_utils.deleteEvent();
|
|
} |