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移动开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Android开发知识点,真正体系化!
由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新
如果你觉得这些内容对你有帮助,可以添加V获取:vip204888 (备注Android)
文末
我总结了一些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)]