Android仿QQ锁屏状态下消息提醒(震动+提示音,深入解析android核心组件和应用框架

wakeLock.release();

}

KeyguardManager km = (KeyguardManager) context.getSystemService(Context.KEYGUARD_SERVICE);

//这里参数”unLock”作为调试时LogCat中的Tag

KeyguardManager.KeyguardLock kl = km.newKeyguardLock(“unLock”);

//解锁

kl.disableKeyguard();

} catch (Exception ex) {

}

}

/**

  • 手机震动

  • @param context

  • @param isRepeat 是否重复震动

*/

public static void playVibrate(Context context, boolean isRepeat) {

/*

  • 设置震动,用一个long的数组来表示震动状态(以毫秒为单位)

  • 如果要设置先震动1秒,然后停止0.5秒,再震动2秒则可设置数组为:long[]{1000, 500, 2000}。

  • 别忘了在AndroidManifest配置文件中申请震动的权限

*/

try {

vibrator = (Vibrator) context.getSystemService(Context.VIBRATOR_SERVICE);

long[] patern = new long[]{1000, 500, 2000};

AudioAttributes audioAttributes = null;

/**

  • 适配android7.0以上版本的震动

  • 说明:如果发现5.0或6.0版本在app退到后台之后也无法震动,那么只需要改下方的Build.VERSION_CODES.N版本号即可

*/

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {

audioAttributes = new AudioAttributes.Builder()

.setContentType(AudioAttributes.CONTENT_TYPE_SONIFICATION)

.setUsage(AudioAttributes.USAGE_ALARM) //key

.build();

vibrator.vibrate(patern, isRepeat ? 1 : -1, audioAttributes);

}else {

vibrator.vibrate(patern, isRepeat ? 1 : -1);

}

} catch (Exception ex) {

}

}

/**

  • 关闭震动

*/

public static void closeVibrate() {

if (vibrator != null) {

vibrator.cancel();

vibrator = null;

}

}

/**

  • 播放系统默认提示音

  • @return MediaPlayer对象

  • @throws Exception

*/

public static void defaultMediaPlayer(Context mContext) {

try {

Uri notification = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION);

Ringtone r = RingtoneManager.getRingtone(mContext, notification);

r.play();

} catch (Exception ex) {

}

}

/**

  • 播放系统默认来电铃声

  • @return MediaPlayer对象

  • @throws Exception

*/

public static void defaultCallMediaPlayer(Context mContext) {

try {

Uri notification = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_RINGTONE);

Ringtone r = RingtoneManager.getRingtone(mContext, notification);

r.play();

} catch (Exception ex) {

}

}

/**

  • 播放系统默认闹钟铃声

  • @return MediaPlayer对象

  • @throws Exception

*/

public static void defaultAlarmMediaPlayer(Context mContext) {

try {

Uri notification = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_ALARM);

Ringtone r = RingtoneManager.getRingtone(mContext, notification);

r.play();

} catch (Exception ex) {

}

}

}

三、在MainActivity.class活动的onCreate()方法里注册广播实例,代码如下:

public class MainActivity extends AppCompatActivity {

//声明一个操作常量字符串

public static final String ACTION_SERVICE_NEED = “action.ServiceNeed”;

//声明一个内部广播实例

public ServiceNeedBroadcastReceiver broadcastReceiver;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

/**

  • 添加标志位,允许锁屏状态下显示消息,四个标志位分别是:

  • 1.锁屏状态下显示

  • 2.解锁

  • 3.保持屏幕长亮(可选)

  • 4.打开屏幕

  • 当Activity启动的时候,它会解锁并亮屏显示

*/

getWindow().addFlags(WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED //锁屏状态下显示

| WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD //解锁

| WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON //保持屏幕长亮

| WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON); //打开屏幕

/**

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数Android工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Android移动开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
img
img
img
img
img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Android开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新

如果你觉得这些内容对你有帮助,可以添加V获取:vip204888 (备注Android)
img

文末

我总结了一些Android核心知识点,以及一些最新的大厂面试题、知识脑图和视频资料解析。

以后的路也希望我们能一起走下去。(谢谢大家一直以来的支持)

部分资料一览:

  • 330页PDF Android学习核心笔记(内含8大板块)

  • Android学习的系统对应视频

  • Android进阶的系统对应学习资料

  • Android BAT大厂面试题(有解析)

330页PDF Android学习核心笔记(内含8大板块)

[外链图片转存中…(img-UtDJHaXK-1711734507688)]

[外链图片转存中…(img-IYMgBKPK-1711734507688)]

  • Android学习的系统对应视频

  • Android进阶的系统对应学习资料

[外链图片转存中…(img-BS31Y14D-1711734507688)]

  • Android BAT大厂面试题(有解析)

[外链图片转存中…(img-EYEpk0Rx-1711734507689)]

本文已被CODING开源项目:《Android学习笔记总结+移动架构视频+大厂面试真题+项目实战源码》收录

  • 30
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值