Android 通过AlarmClock设置系统闹钟 您所在的位置:网站首页 安卓闹钟源码在哪 Android 通过AlarmClock设置系统闹钟

Android 通过AlarmClock设置系统闹钟

2023-10-19 16:31| 来源: 网络整理| 查看: 265

android系统中,要用闹钟的形式及时地提醒用户,要怎么做呢?

背景

如果通过android系统中的AlarmManager设置闹钟。因为通过AlarmManager设置闹钟,需要考虑到国内厂商对于android系统的定制化,应用进程很难常驻,加上当进程被kill的时候,或是手机关机的时候,用户在应用中设置的闹钟往往无法及时触达用户,影响功能的正常使用。 如果是往手机自带的系统闹钟应用中设置闹钟,是一个不错的选择,这样就能够保证提醒的及时性。 在这里插入图片描述

接口内容

android系统提供了一个provider——AlarmClock,可以通过startActivity的形式。设置闹钟的 1)文本内容 2)具体提醒时间 3)是否震动 4)媒体声音 5)是否跳过页面 详见API http://www.android-doc.com/reference/android/provider/AlarmClock.html

兼容性

由于系统闹钟是系统应用,只能设置闹钟的小时和分钟,铃声以及是否震动;需要通过系统提供的接口进行闹钟设置、取消、闹钟列表。预研之后发现这几个接口都有版本的兼容性问题:

1)设置闹钟的接口在android系统4.4以上才支持,对于这种系统兼容性问题,只能通过版本的判断去规避异常;

2)闹钟取消的接口在android系统6.0以上才支持,而且尝试过几台6.0以上的机型,都触发ActivityNotFound的异常。除了系统提供的接口之外,当出现异常的时候,我们可以通过跳转到闹钟应用的方式让用户手动取消闹钟,这个时候厂商兼容问题又出现了,需要结合包名跳转和action跳转的方式,来避免找不到的问题;

3)通过覆盖测试发现oppo机型对于同内容的设置闹钟接口的重复调用,会生成重复的闹钟。针对oppo的问题,每当触发设置一场比赛的闹钟的时候,则通过设置sp标识,防止闹钟的重复设置,解决重复设置的问题;提醒项开关状态变化的时候进行sp标识的重置;

4)在设置闹钟时机触发后,调用设置接口设置系统闹钟的时候,经常会遇到连续设置失败的问题,这个时候每设置一个闹钟,就延迟一段时间,再去设置下一个,可以完美解决问题。

设置闹钟 public static boolean setSystemAlarmClock(Context context, String message, int hour, int minute) { if (Build.VERSION.SDK_INT < 9) { return false; } Intent intent = new Intent(AlarmClock.ACTION_SET_ALARM); intent.putExtra(AlarmClock.EXTRA_MESSAGE, message); intent.putExtra(AlarmClock.EXTRA_HOUR, hour); intent.putExtra(AlarmClock.EXTRA_MINUTES, minute); if (Build.VERSION.SDK_INT >= 11) { intent.putExtra(AlarmClock.EXTRA_SKIP_UI, true); } if (Build.VERSION.SDK_INT >= 19) { intent.putExtra(AlarmClock.EXTRA_VIBRATE, true); } try { context.startActivity(intent); return true; } catch (Exception e) { e.printStackTrace(); return false; } } 跳转到闹钟页面

1)通过系统闹钟包名(com.android.deskclock)跳转,如果厂商修改了包名,则需要另外去适配; 2)通过action为AlarmClock.ACTION_SHOW_ALARMS进行跳转;

取消闹钟

尝试在国内厂商的多个机型上调用系统取消闹钟的接口,但是一直无法成功,存在适配问题,所以只能通过跳转到闹钟页面,提示用户手动取消。

小结

1)使用系统接口的时候,需要多看API; 2)开发的时候需要多考虑系统版本、机型的适配问题; 3)一个方法行不通,可以从其他角度切入;



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有