通话录音为什么可以在闹钟mac 自定义闹钟里看到 别的地方都

关于Android中设置闹钟的相对完善的解决方案 - CSDN博客
关于Android中设置闹钟的相对完善的解决方案
来看分析和讲解之前,先看看效果吧,效果图如下:
闹钟提醒界面&
AlarmManager
对于AlarmManager里的方法我就不逐一介绍了,如果都介绍讲完估计就天黑了。AlarmManager这个类提供对系统闹钟服务的访问接口。&
在API 19 以前,AlarmManager的常用方法有三个:&
* set(int type,long startTime,PendingIntent pi);&
该方法用于设置一次性闹钟,第一个参数表示闹钟类型,第二个参数表示闹钟执行时间,第三个参数表示闹钟响应动作。&
* setRepeating(int type,long startTime,long intervalTime,PendingIntent pi);&
该方法用于设置重复闹钟,第一个参数表示闹钟类型,第二个参数表示闹钟首次执行时间,第三个参数表示闹钟两次执行的间隔时间,第三个参数表示闹钟响应动作。&
* setInexactRepeating(int type,long startTime,long intervalTime,PendingIntent pi);&
该方法也用于设置重复闹钟,与第二个方法相似,不过其两个闹钟执行的间隔时间不是固定的而已。
从API 19开始,AlarmManager的机制都是非准确传递,操作系统将会转换闹钟,来最小化唤醒和电池使用。targetSdkVersion在API 19之前应用仍将继续使用以前的行为,所有的闹钟在要求准确传递的情况下都会准确传递。
从API 19以后,则采用了如下方法:&
* setWindow(int, long, long, PendingIntent)&
* setExact(int, long, PendingIntent)&
从上面的两个方法我们可以看出,没有了repeat,就是设置了闹钟只能响一次了,而且这两种方法都可以设置精确的,第一个相对于第二种方法来说,应该是比较省电的。因为setWindow这个方法允许应用程序利用电池优化来自交货批处理即使它适度的及时性要求警报。
API 19以后没有了重复设置,那如果设置一个闹钟每天都准确提醒呢?手机重启之后,设置的闹钟是否还有效?应用程序被杀死之后,闹钟是否还有效?
说实话,这些问题我相信大家肯定都遇到过,而且解决起来相当费劲,确实是。来看我们如何一一解决吧。
解决遇到的坑
API 19以后如何设置重复闹钟
我们知道,我们在使用AlarmManager设置了提醒之后,是通过广播接收的,设置的提醒时间一到,系统发送我们自定义的广播,我们接收到,应用程序提醒。那提醒的时候,我们可以再重新设置一次嘛,这就解决了API 19设置重复闹钟的问题。
&code class=&hljs avrasm has-numbering& style=&display: padding: 0 color: box-sizing: border- font-family: 'Source Code Pro',font-size: white-space: border-radius: 0 word-wrap: background:&&PendingIntent sender = PendingIntent&span class=&hljs-preprocessor& style=&color: rgb(68, 68, 68); box-sizing: border-&&.getBroadcast&/span&(context, id, intent, PendingIntent
&span class=&hljs-preprocessor& style=&color: rgb(68, 68, 68); box-sizing: border-&&.FLAG&/span&_CANCEL_CURRENT)&span class=&hljs-comment& style=&color: rgb(136, 0, 0); box-sizing: border-&&;&/span&
if (Build&span class=&hljs-preprocessor& style=&color: rgb(68, 68, 68); box-sizing: border-&&.VERSION&/span&&span class=&hljs-preprocessor& style=&color: rgb(68, 68, 68); box-sizing: border-&&.SDK&/span&_INT &= Build&span class=&hljs-preprocessor& style=&color: rgb(68, 68, 68); box-sizing: border-&&.VERSION&/span&_CODES&span class=&hljs-preprocessor& style=&color: rgb(68, 68, 68); box-sizing: border-&&.KITKAT&/span&) {
am&span class=&hljs-preprocessor& style=&color: rgb(68, 68, 68); box-sizing: border-&&.setWindow&/span&(AlarmManager&span class=&hljs-preprocessor& style=&color: rgb(68, 68, 68); box-sizing: border-&&.RTC&/span&_WAKEUP, calMethod(week, calendar&span class=&hljs-preprocessor& style=&color: rgb(68, 68, 68); box-sizing: border-&&.getTimeInMillis&/span&()),
intervalMillis, sender)&span class=&hljs-comment& style=&color: rgb(136, 0, 0); box-sizing: border-&&;&/span&
if (flag == &span class=&hljs-number& style=&color: rgb(0, 102, 102); box-sizing: border-&&0&/span&) {
am&span class=&hljs-preprocessor& style=&color: rgb(68, 68, 68); box-sizing: border-&&.set&/span&(AlarmManager&span class=&hljs-preprocessor& style=&color: rgb(68, 68, 68); box-sizing: border-&&.RTC&/span&_WAKEUP, calendar&span class=&hljs-preprocessor& style=&color: rgb(68, 68, 68); box-sizing: border-&&.getTimeInMillis&/span&(), sender)&span class=&hljs-comment& style=&color: rgb(136, 0, 0); box-sizing: border-&&;&/span&
am&span class=&hljs-preprocessor& style=&color: rgb(68, 68, 68); box-sizing: border-&&.setRepeating&/span&(AlarmManager&span class=&hljs-preprocessor& style=&color: rgb(68, 68, 68); box-sizing: border-&&.RTC&/span&_WAKEUP, calMethod(week, calendar&span class=&hljs-preprocessor& style=&color: rgb(68, 68, 68); box-sizing: border-&&.getTimeInMillis&/span&
()), intervalMillis, sender)&span class=&hljs-comment& style=&color: rgb(136, 0, 0); box-sizing: border-&&;&/span&
}&/code&&ul class=&pre-numbering& style=&box-sizing: border- position: width: 50 top: 0 left: 0 margin: 0 padding: 6px 0px 40 border-right-width: 1 border-right-style: border-right-color: rgb(221, 221, 221); list-style: text-align: background-color: rgb(238, 238, 238);&&&li style=&box-sizing: border- padding: 0px 5&&1&/li&&li style=&box-sizing: border- padding: 0px 5&&2&/li&&li style=&box-sizing: border- padding: 0px 5&&3&/li&&li style=&box-sizing: border- padding: 0px 5&&4&/li&&li style=&box-sizing: border- padding: 0px 5&&5&/li&&li style=&box-sizing: border- padding: 0px 5&&6&/li&&li style=&box-sizing: border- padding: 0px 5&&7&/li&&li style=&box-sizing: border- padding: 0px 5&&8&/li&&li style=&box-sizing: border- padding: 0px 5&&9&/li&&li style=&box-sizing: border- padding: 0px 5&&10&/li&&li style=&box-sizing: border- padding: 0px 5&&11&/li&&li style=&box-sizing: border- padding: 0px 5&&12&/li&&li style=&box-sizing: border- padding: 0px 5&&13&/li&&/ul&&ul class=&pre-numbering& style=&box-sizing: border- position: width: 50 top: 0 left: 0 margin: 0 padding: 6px 0px 40 border-right-width: 1 border-right-style: border-right-color: rgb(221, 221, 221); list-style: text-align: background-color: rgb(238, 238, 238);&&&li style=&box-sizing: border- padding: 0px 5&&1&/li&&li style=&box-sizing: border- padding: 0px 5&&2&/li&&li style=&box-sizing: border- padding: 0px 5&&3&/li&&li style=&box-sizing: border- padding: 0px 5&&4&/li&&li style=&box-sizing: border- padding: 0px 5&&5&/li&&li style=&box-sizing: border- padding: 0px 5&&6&/li&&li style=&box-sizing: border- padding: 0px 5&&7&/li&&li style=&box-sizing: border- padding: 0px 5&&8&/li&&li style=&box-sizing: border- padding: 0px 5&&9&/li&&li style=&box-sizing: border- padding: 0px 5&&10&/li&&li style=&box-sizing: border- padding: 0px 5&&11&/li&&li style=&box-sizing: border- padding: 0px 5&&12&/li&&li style=&box-sizing: border- padding: 0px 5&&13&/li&&/ul&
根据判断系统版本,使用不同的设置闹钟的方法,进行设置。接下来我们通过广播接收系统发来的通知,进行闹钟提醒。
&code class=&hljs java has-numbering& style=&display: padding: 0 color: box-sizing: border- font-family: 'Source Code Pro',font-size: white-space: border-radius: 0 word-wrap: background:&&&span class=&hljs-keyword& style=&color: rgb(0, 0, 136); box-sizing: border-&&public&/span& &span class=&hljs-class& style=&box-sizing: border-&&&span class=&hljs-keyword& style=&color: rgb(0, 0, 136); box-sizing: border-&&class&/span& &span class=&hljs-title& style=&box-sizing: border- color: rgb(102, 0, 102);&&LoongggAlarmReceiver&/span& &span class=&hljs-keyword& style=&color: rgb(0, 0, 136); box-sizing: border-&&extends&/span& &span class=&hljs-title& style=&box-sizing: border- color: rgb(102, 0, 102);&&BroadcastReceiver&/span& {&/span&
&span class=&hljs-annotation& style=&color: rgb(155, 133, 157); box-sizing: border-&&@Override&/span&
&span class=&hljs-keyword& style=&color: rgb(0, 0, 136); box-sizing: border-&&public&/span& &span class=&hljs-keyword& style=&color: rgb(0, 0, 136); box-sizing: border-&&void&/span& &span class=&hljs-title& style=&box-sizing: border-&&onReceive&/span&(Context context, Intent intent) {
&span class=&hljs-comment& style=&color: rgb(136, 0, 0); box-sizing: border-&&// TODO Auto-generated method stub&/span&
String msg = intent.getStringExtra(&span class=&hljs-string& style=&color: rgb(0, 136, 0); box-sizing: border-&&&msg&&/span&);
&span class=&hljs-keyword& style=&color: rgb(0, 0, 136); box-sizing: border-&&long&/span& intervalMillis = intent.getLongExtra(&span class=&hljs-string& style=&color: rgb(0, 136, 0); box-sizing: border-&&&intervalMillis&&/span&, &span class=&hljs-number& style=&color: rgb(0, 102, 102); box-sizing: border-&&0&/span&);
&span class=&hljs-keyword& style=&color: rgb(0, 0, 136); box-sizing: border-&&if&/span& (intervalMillis != &span class=&hljs-number& style=&color: rgb(0, 102, 102); box-sizing: border-&&0&/span&) {
AlarmManagerUtil.setAlarmTime(context, System.currentTimeMillis() + intervalMillis,
&span class=&hljs-keyword& style=&color: rgb(0, 0, 136); box-sizing: border-&&int&/span& flag = intent.getIntExtra(&span class=&hljs-string& style=&color: rgb(0, 136, 0); box-sizing: border-&&&soundOrVibrator&&/span&, &span class=&hljs-number& style=&color: rgb(0, 102, 102); box-sizing: border-&&0&/span&);
Intent clockIntent = &span class=&hljs-keyword& style=&color: rgb(0, 0, 136); box-sizing: border-&&new&/span& Intent(context, ClockAlarmActivity.class);
clockIntent.putExtra(&span class=&hljs-string& style=&color: rgb(0, 136, 0); box-sizing: border-&&&msg&&/span&, msg);
clockIntent.putExtra(&span class=&hljs-string& style=&color: rgb(0, 136, 0); box-sizing: border-&&&flag&&/span&, flag);
clockIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(clockIntent);
}&/code&&ul class=&pre-numbering& style=&box-sizing: border- position: width: 50 top: 0 left: 0 margin: 0 padding: 6px 0px 40 border-right-width: 1 border-right-style: border-right-color: rgb(221, 221, 221); list-style: text-align: background-color: rgb(238, 238, 238);&&&li style=&box-sizing: border- padding: 0px 5&&1&/li&&li style=&box-sizing: border- padding: 0px 5&&2&/li&&li style=&box-sizing: border- padding: 0px 5&&3&/li&&li style=&box-sizing: border- padding: 0px 5&&4&/li&&li style=&box-sizing: border- padding: 0px 5&&5&/li&&li style=&box-sizing: border- padding: 0px 5&&6&/li&&li style=&box-sizing: border- padding: 0px 5&&7&/li&&li style=&box-sizing: border- padding: 0px 5&&8&/li&&li style=&box-sizing: border- padding: 0px 5&&9&/li&&li style=&box-sizing: border- padding: 0px 5&&10&/li&&li style=&box-sizing: border- padding: 0px 5&&11&/li&&li style=&box-sizing: border- padding: 0px 5&&12&/li&&li style=&box-sizing: border- padding: 0px 5&&13&/li&&li style=&box-sizing: border- padding: 0px 5&&14&/li&&li style=&box-sizing: border- padding: 0px 5&&15&/li&&li style=&box-sizing: border- padding: 0px 5&&16&/li&&li style=&box-sizing: border- padding: 0px 5&&17&/li&&li style=&box-sizing: border- padding: 0px 5&&18&/li&&/ul&&ul class=&pre-numbering& style=&box-sizing: border- position: width: 50 top: 0 left: 0 margin: 0 padding: 6px 0px 40 border-right-width: 1 border-right-style: border-right-color: rgb(221, 221, 221); list-style: text-align: background-color: rgb(238, 238, 238);&&&li style=&box-sizing: border- padding: 0px 5&&1&/li&&li style=&box-sizing: border- padding: 0px 5&&2&/li&&li style=&box-sizing: border- padding: 0px 5&&3&/li&&li style=&box-sizing: border- padding: 0px 5&&4&/li&&li style=&box-sizing: border- padding: 0px 5&&5&/li&&li style=&box-sizing: border- padding: 0px 5&&6&/li&&li style=&box-sizing: border- padding: 0px 5&&7&/li&&li style=&box-sizing: border- padding: 0px 5&&8&/li&&li style=&box-sizing: border- padding: 0px 5&&9&/li&&li style=&box-sizing: border- padding: 0px 5&&10&/li&&li style=&box-sizing: border- padding: 0px 5&&11&/li&&li style=&box-sizing: border- padding: 0px 5&&12&/li&&li style=&box-sizing: border- padding: 0px 5&&13&/li&&li style=&box-sizing: border- padding: 0px 5&&14&/li&&li style=&box-sizing: border- padding: 0px 5&&15&/li&&li style=&box-sizing: border- padding: 0px 5&&16&/li&&li style=&box-sizing: border- padding: 0px 5&&17&/li&&li style=&box-sizing: border- padding: 0px 5&&18&/li&&/ul&
通过上面的广播,我们可以看到,我是通过那个时间间隔是否为零来判断API 19之后是否是重复闹钟,不为0,就再重新设置一遍。我们来一起看看setAlarmTime()这个方法。如下:
&code class=&hljs java has-numbering& style=&display: padding: 0 color: box-sizing: border- font-family: 'Source Code Pro',font-size: white-space: border-radius: 0 word-wrap: background:&& &span class=&hljs-keyword& style=&color: rgb(0, 0, 136); box-sizing: border-&&public&/span& &span class=&hljs-keyword& style=&color: rgb(0, 0, 136); box-sizing: border-&&static&/span& &span class=&hljs-keyword& style=&color: rgb(0, 0, 136); box-sizing: border-&&final&/span& String ALARM_ACTION = &span class=&hljs-string& style=&color: rgb(0, 136, 0); box-sizing: border-&&&com.loonggg.alarm.clock&&/span&;
&span class=&hljs-keyword& style=&color: rgb(0, 0, 136); box-sizing: border-&&public&/span& &span class=&hljs-keyword& style=&color: rgb(0, 0, 136); box-sizing: border-&&static&/span& &span class=&hljs-keyword& style=&color: rgb(0, 0, 136); box-sizing: border-&&void&/span& &span class=&hljs-title& style=&box-sizing: border-&&setAlarmTime&/span&(Context context, &span class=&hljs-keyword& style=&color: rgb(0, 0, 136); box-sizing: border-&&long&/span& timeInMillis, Intent intent) {
AlarmManager am = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
PendingIntent sender = PendingIntent.getBroadcast(context, intent.getIntExtra(&span class=&hljs-string& style=&color: rgb(0, 136, 0); box-sizing: border-&&&id&&/span&, &span class=&hljs-number& style=&color: rgb(0, 102, 102); box-sizing: border-&&0&/span&),
intent, PendingIntent.FLAG_CANCEL_CURRENT);
&span class=&hljs-keyword& style=&color: rgb(0, 0, 136); box-sizing: border-&&int&/span& interval = (&span class=&hljs-keyword& style=&color: rgb(0, 0, 136); box-sizing: border-&&int&/span&) intent.getLongExtra(&span class=&hljs-string& style=&color: rgb(0, 136, 0); box-sizing: border-&&&intervalMillis&&/span&, &span class=&hljs-number& style=&color: rgb(0, 102, 102); box-sizing: border-&&0&/span&);
&span class=&hljs-keyword& style=&color: rgb(0, 0, 136); box-sizing: border-&&if&/span& (Build.VERSION.SDK_INT &= Build.VERSION_CODES.KITKAT) {
am.setWindow(AlarmManager.RTC_WAKEUP, timeInMillis, interval, sender);
}&/code&&ul class=&pre-numbering& style=&box-sizing: border- position: width: 50 top: 0 left: 0 margin: 0 padding: 6px 0px 40 border-right-width: 1 border-right-style: border-right-color: rgb(221, 221, 221); list-style: text-align: background-color: rgb(238, 238, 238);&&&li style=&box-sizing: border- padding: 0px 5&&1&/li&&li style=&box-sizing: border- padding: 0px 5&&2&/li&&li style=&box-sizing: border- padding: 0px 5&&3&/li&&li style=&box-sizing: border- padding: 0px 5&&4&/li&&li style=&box-sizing: border- padding: 0px 5&&5&/li&&li style=&box-sizing: border- padding: 0px 5&&6&/li&&li style=&box-sizing: border- padding: 0px 5&&7&/li&&li style=&box-sizing: border- padding: 0px 5&&8&/li&&li style=&box-sizing: border- padding: 0px 5&&9&/li&&li style=&box-sizing: border- padding: 0px 5&&10&/li&&li style=&box-sizing: border- padding: 0px 5&&11&/li&&/ul&&ul class=&pre-numbering& style=&box-sizing: border- position: width: 50 top: 0 left: 0 margin: 0 padding: 6px 0px 40 border-right-width: 1 border-right-style: border-right-color: rgb(221, 221, 221); list-style: text-align: background-color: rgb(238, 238, 238);&&&li style=&box-sizing: border- padding: 0px 5&&1&/li&&li style=&box-sizing: border- padding: 0px 5&&2&/li&&li style=&box-sizing: border- padding: 0px 5&&3&/li&&li style=&box-sizing: border- padding: 0px 5&&4&/li&&li style=&box-sizing: border- padding: 0px 5&&5&/li&&li style=&box-sizing: border- padding: 0px 5&&6&/li&&li style=&box-sizing: border- padding: 0px 5&&7&/li&&li style=&box-sizing: border- padding: 0px 5&&8&/li&&li style=&box-sizing: border- padding: 0px 5&&9&/li&&li style=&box-sizing: border- padding: 0px 5&&10&/li&&li style=&box-sizing: border- padding: 0px 5&&11&/li&&/ul&
就这样,重复的问题就解决了。
手机重启之后,闹钟失效怎么解决
对,手机重启之后,闹钟确实是失效了,要想解决这个问题,那就再设置一个监听手机重启的广播,等手机重启的时候,再重新设置一遍,即可解决上面的问题。
看看我在手机重启广播里调用了我封装的重新设置闹钟的方法。这样就解决了手机重启之后,闹钟失效的问题。&
注意:广播需要在清单文件注册,小伙伴们别忘记了哈。我在这里就不贴出代码来了。
应用程序被杀死,闹钟失效
可以告诉你们的是,这个还真的没有什么好的解决方案,如果你们程序里写了服务,可以在服务重启的时候,判断重新再把闹钟注册一次,或者在打开应用的时候重新注册一次,反正就是能有利于闹钟注册的地方,进行重新设置。如果闹钟设置的id是一样的,后边设置的会自动覆盖先前设置的闹钟。如果谁有比较好的解决应用程序被杀死后,闹钟失效的问题,欢迎大家提供出来分享。
这个封装的类库的好处
好处就是我把方法都给你们封装好了,直接就可以调用。&
* 直接传入时分的值就可以了。比如:直接传入某个时间点:12:30,然后传入是否是每天提醒,还是周几提醒等&
* 闹钟提醒的界面我也已经封装到里面了,还算好看,懒的同学不需要再写了,不满意的同学可以直接下载类库修改。&
* 取消闹钟的方法,我也已经进行了封装。
总之,就是非常方便,到底有多方便大家直接看demo就知道了,不满意的同学可以直接下载类库进行修改。
demo和类库地址:
欢迎关注微信公众号:非著名程序员(smart_android),每天每周定时推送原创技术文章。
本文已收录于以下专栏:
相关文章推荐
导读:Android的闹钟实现机制很简单, 只需要调用AlarmManager.set()将闹铃时间记录到系统中,当闹铃时间到后,系统会给应用程序发送广播,我们只需要去注册广播接收器就可以了。
本节主要介绍的是Android系统服务中的---AlarmManager(闹钟服务),
除了开发手机闹钟外,更多的时候是作为一个全局的定时器,通常与Service
结合,在特定时间启...
前些时候,有人在我「非著名程序员」微信公众号的后台问我有没有设置闹钟的demo,我当时说承诺为大家写一个,一直没空,直到最近又有人跟我要,我决定抽时间写一个吧。确实设置闹钟是一个比较麻烦的东西。我在这...
最近公司要求要做一个提醒功能,一说到提醒,那肯定就和闹钟差不多的意思,那么肯定就要用到AlarmManager。
但是,我们知道,android系统很坑爹,不同的厂商对rom的定制,导致对进程的管理都...
由于不同Android手机厂商提供的系统闹钟包名都不一致,所以只能通过过滤当前手机所有的应用,以确定闹钟应用的包名,进而启动它。
这里采用的过滤规则是:系统应用 && 应用的PackageName包...
实现简单的闹钟功能,具有添加闹钟,删除闹钟和修改闹钟的功能,具有不难看的ui
Android设置闹钟并不像IOS那样这么简单,做过Android设置闹钟的开发者都知道里面的坑有多深。下面记录一下,我解决Android闹钟设置的解决方案。
如果在开发当中需要做push接入,而产品又要求不允许用第三方sdk(百度push,友盟push),而且又没有网络编程的经验,这个时候怎么办?这里就给大家分享下用http请求解决这个问题。...
一 背景概述:ScrollView里嵌套ListView,一直是Android开发者(反正至少是我们组)最讨厌的设计之一,完美打破ListView(RecyclerView)的复用机制,成功的将Nat...
他的最新文章
讲师:吴岸城
您举报文章:
举报原因:
原文地址:
原因补充:
(最多只允许输入30个字)后使用快捷导航没有帐号?
请完成以下验证码
你不知道的微信使用10个技巧:微信自定义闹钟,语言输入,字体放大等
发布时间:
今天 .cn 给大家分享的是你不知道的微信使用10个技巧,说到微信很多人都认为自己非常会用,这个还需要帮助么。其实微信有哪些不易被发现的小功能?除了已经广为大家所知的微信游戏和扫一扫等功能,还有哪些可能被忽视,但却也挺有意思的小功能呢?小编为你列举了一些实用好用的小功能:
<font color="#.&&双击聊天信息,文字放大全屏阅读微信聊天时,看到别人发来一段比较长的文字时,双击一下这条信息,就能全屏放大阅读,再也不用将视线局限在那个小小的绿框中。
17:19 上传
<font color="#、收藏自己的语音、图片,点缀自己的小空间。你可能已经很熟练收藏聊天窗口和朋友圈的内容,但你知道其实还可以收藏你自己的东西吗?进入我的收藏界面,点击上面的“+”号,可以收藏自己的语音、图片和地理位置等。比如你突然有个灵感,可来不及文字输入,那就选择“语音”把想法录下来,收藏在微信里!
17:19 上传
<font color="#、不想打字,说说话一秒变文字!在聊天界面中,点击右下角的“+”号,再点击“语音输入”,对着麦克风说话,就能自动进行语音识别,你想要输入的文字就会显示在输入框中。小编测试后,觉得识别准确率超高哦!太方便了!
17:19 上传
<font color="#、微信字体,没有最大,只有更大!
微信的字体大小只有小、中、大三个选项。但最新版又添加了“超大”号。大家可以设置体验下,真的非常大,非常霸气!
17:20 上传
<font color="#、惊喜:特定文字变超萌表情从天而降!比如,输入“生日快乐”后,屏幕上会掉下来蛋糕的表情输入“么么哒”,则会掉下来“送飞吻”的表情;输入“miss u”、“想你了”则会掉下来“小星星”,惊喜吧?
17:20 上传
<font color="#、关闭群消息提醒,享受安静假期。进入你想关闭提醒的群,进入“详细设置”,关闭“新消息通知“。让你不仅可以正常收到群聊天内容,也能够不被毫无节操、一刻不停的诸多消息所骚扰。
17:20 上传
<font color="#、同步聊天记录,保存难忘瞬间。操作起来很简单,在底部栏选择“设置”,进入“通用”中,选择“聊天记录迁移”,就可以轻松上传和下载聊天记录啦!值得注意的是,目前上传的聊天记录只能保存七天哦!
17:20 上传
<font color="#、语音设置提醒,吼吼也能设闹钟!在好友搜索框中输入“语音提醒“,选择带认证的那一个,添加关注成功。向“语音提醒”(voicereminder)发送语音,如“三分钟后提醒我打个电话”,它就会在三分钟后提醒你,是不是超级方便呢?
17:20 上传
<font color="#、没有数据线?微信文件传输助手帮你搞定!打开网页版微信(&&),再用手机“扫一扫”网页上的版二维码即可登录自己的微信,然后就可以在手机与电脑间随心所欲地互发消息,传送图片、音频、视频等文件啦~
17:20 上传
<font color="#、轻松搞定群发消息,图文并茂送祝福!点击右下角“我”,进入“通用”中的“功能”里的群发助手。选择要群发的对象,编辑要发送的文字、图片、视频等内容,一键发送。会议通知、节日祝福等就能轻松发给你的各个联系人!
17:21 上传
怎么样,小编推介的这10大秘笈相当有用吧!掌握了它们,会给你的工作、生活、学习带来诸多欢乐和便利。当然啦~神器微信远不止这些功能彩蛋,你知道哪些冷门但实用的好功能吗?一起分享吧!
width:100%">
2017年9月,值得推荐的25份报告2017年8月,值得收藏的25份报告
||||||||||

我要回帖

更多关于 ipad自定义闹钟铃声 的文章

 

随机推荐