主要实验器材: Arduino UNO开发板 共阳三色雾状LED灯 面包板、普通LED灯、电阻、杜邦线若干 HC-05蓝牙模块 支持蓝牙功能的Android手机 ?...---- HC-05蓝牙模块与Arduino连接方式 HC-05 VCC ----- Arduino VIN HC-05 GND ----- Arduino GND HC-05 TXD ----- Arduino...RXD HC-05 RXD ----- Arduino TXD Android蓝牙模块 手机APP连接上HC-05后,在TextView中输入要发送的字符串,定义s、c、f、b分别为小LED灯开、关、...和三色彩灯的开、关;通过蓝牙串口将字符串发送出去。...在烧录代码的时候要把Arduino的TXD、RXD与HC-05的RXD、TXD断开连接,否则会有干扰,代码烧录不进去。 ----
以及屏幕点亮与关闭、应用卸载与安装等等。 这就讲到了Android四大组件之一:BroadcastReceiver,翻译是广播接收者。意思就是接收广播用的。...而在Android中的广播机制与现实中一样,发送广播的是Broadcast,接收广播的BroadcastReceiver及广播之间传递数据的Intent。...以监听屏幕点亮与关闭为例子。...IntentFilter对象中添加要接收的关屏广播 filter.addAction(Intent.ACTION_SCREEN_ON);//添加点亮屏幕广播 registerReceiver...对广播接收者同时使用静态与动态注册 上面例子中MyBroadcastReceiver使用静态注册监听用户打电话,使用动态注册监听用户屏幕点亮与关闭。
第二种:基于Binder通信实现Service完成跨进程数据的共享,能够保证单进程访问数据,不会有互斥问题,可是同步的事情仍然需要开发者手动处理。...ContentProvider为Android数据的存储和获取抽象了统一的接口,并支持在不同的应用程序之间共享数据,Android内置的许多数据都是使用ContentProvider形式供开发者调用的...,希望在进程B的UI中展现出来,这个时候就需要一个通知机制,Android也是提供了支持,不过它是一个通用的数据变更同步通知:基于ContentService服务: <!...总结 ContentProvider只是Android为了跨进程共享数据提供的一种机制, 本身基于Binder实现, 在操作数据上只是一种抽象,具体要自己实现 ContentProvider只能保证进程间的互斥...,无法保证进程内,需要自己实现 作者:看书的小蜗牛 Android ContentProvider支持跨进程数据共享与"互斥、同步" 仅供参考,欢迎指正
说到在代码中注册广播接收者,那Android系统中规定,屏幕锁屏和解锁,以及电量改变必须用代码注册,在清单文件中注册是不起作用的。那是因为,屏幕锁屏和解锁,以及电量改变事件太频繁发生了。...注册广播接收者 super.onCreate(); //创建一个广播接收者 sReceiver = new ScreenReceiver(); //指定接收那种类型的广播 IntentFilter...filter = new IntentFilter(); //指定关屏幕和开屏幕 filter.addAction(Intent.ACTION_SCREEN_OFF); filter.addAction...Log.i("ScreenReceiver", "屏幕关闭!")..."屏幕开启!")
一个进程空间分为用户空间和内和空间,进程间用户空间数据不可共享而内核空间是可以共享的,因为所有进程共用一个内核空间。用户空间可以和内核空间通过系统调用交互,从而实现内存共享。...copy_from_user():将用户空间的数据拷贝到内核空间 copy_to_user():将内核空间的数据拷贝到用户空间 12....ViewPager的原理 ViewPager实现视图左右滑动,原理在于创建了三个视图,屏幕中间展示的是中间的视图,而屏幕两侧隐藏着的则是预加载的视图,当左右滑动时,将预加载的视图显示出来,并且缓存当前视图...= new MyBroadcastReceiver(); IntentFilter intentFilter = new IntentFilter(); intentFilter.addAction(...该功能API在android.net.wifi.rtt下 2 刘海平的支持。能够通过windowInsets.getDisplayCutout()获取一些不应该绘制的部分屏幕。
没错,这就是Kotlin语言的Android项目,和Java还是有区别的,建议了解了Kotlin的语法再看文章会比较好,当然你也可以对照我写的Android 蓝牙开发(扫描设备、绑定、解绑)Java版来看...而Kotlin的语法可以让你把构造方法的参数作为类参数使用,这样解释不知道是不是对的,这里传了一个布局id和数据源。.../** * 初始化蓝牙 */ private fun initBlueTooth() { var intentFilter = IntentFilter()...= null) { //当适配器不为空时,这时就说明已经有数据了,所以清除列表数据,再进行扫描 list.clear()...与他的代码已经有了注释了,就不过多的解释了。 剩下的代码分为两部分,一部分是数据的处理,点击处理。
[在这里插入图片描述] 没错,这就是Kotlin语言的Android项目,和Java还是有区别的,建议了解了Kotlin的语法再看文章会比较好,当然你也可以对照我写的Android 蓝牙开发(扫描设备、...,这里传了一个布局id和数据源。.../\*\* \* 初始化蓝牙 \*/ private fun initBlueTooth() { var intentFilter = IntentFilter...= null) { //当适配器不为空时,这时就说明已经有数据了,所以清除列表数据,再进行扫描 list.clear()...与他的代码已经有了注释了,就不过多的解释了。 剩下的代码分为两部分,一部分是数据的处理,点击处理。
Activity退居后台,且系统内存不足, 系统会杀死这个后台状态的Activity,若再次回到这个Activity,则会走onCreate()–>onStart()—>onResume() 锁定屏与解锁屏幕...在 android 中,应用程序运行前,Zygote 进程通过共享已运行的虚拟机的代码与内存信息,缩短应用程序运行所耗费的时间。...intentFilter = new IntentFilter(); intentFilter.addAction("myBroadcast.action.call"); registerReceiver...super.onDestroy(); } 调用链 3.3 生命周期 BroadCastReceiver的生命周期 四、ContentProvider ---- 内容提供者,它是用在不同的应用程序之间共享数据时...内容提供程序是连接一个进程中的数据与另一个进程中运行的代码的标准界面。
是否与发送的intent匹配。...) 什么时候都可以接受到广播,只要应用程序安装了 就是注册了,如果有广播就能接受 但是规定有部分广播 静态注册无法接受 例如屏幕的关闭和点亮广播。...intentFilter = new IntentFilter("android.net.conn.CONNECTIVITY_CHANGE"); intentFilter.setPriority(600...:name="android.permission.RECEIVE_BOOT_COMPLETED"/> 接受的权限 android.intent.action.SCREEN_OFF 屏幕点亮 规定 只有动态注册才可以...android.intent.action.SCREEN_ON 屏幕关闭 规定 只有动态注册才可以 android.net.conn.CONNECTIVITY_CHANGE 网络状态改变 特别感谢:
零、前言 1.按电源键,屏幕锁屏,再按电源键屏幕打开。在Activity开启时注册广播用来监听屏幕的关闭,Activity关闭时移除广播。...(); // [2]创建intent-filter对象 IntentFilter filter = new IntentFilter(); // [3]添加要注册的...".equals(action)) { Log.i(TAG, "屏幕锁屏了"); } else if ("android.intent.action.SCREEN_ON...//注册短信广播接收者 IntentFilter smsFilter = new IntentFilter(); smsFilter.addAction("android.provider.Telephony.SMS_RECEIVED...更多安卓技术欢迎访问:https://www.jianshu.com/c/004f3fe34c94 张风捷特烈个人网站,编程笔记请访问:http://www.toly1994.com 你的喜欢与支持将是我最大的动力
系统权限与自定义权限。 使用权限需要在AndroidManifest.xml中声明。如果是自定义权限,需要先添加自定义权限。 <!...makeIF() { IntentFilter intentFilter = new IntentFilter(MSG_PHONE); intentFilter.addAction...监听屏幕亮灭 使用广播监听设备屏幕亮灭状态。这个是系统发出来的广播。...广播传输的数据是否有限制,是多少,为什么要限制?...广播是通过Intent携带需要传递的数据的 Intent是通过Binder机制实现的 Binder对数据大小有限制,不同room不一样,一般为1M 2. 广播的分类?
什么是广播 广播是Android SDK的四大组件中唯一需要别动接收数据的组件。也就是说对于Activity、ContentProvider和Service都可以主动调用,并获取返回数据。..." /> ---- 截获屏幕休眠与唤醒...按手机上的挂断按钮后,手机会进入休眠状态(屏幕变黑),当再此按下手机的任意键后,屏幕会唤醒(屏幕变量)。...intentFilter = new IntentFilter(); // 设置屏幕唤醒广播的动作 intentFilter.addAction(Intent.ACTION_SCREEN_ON...); // 设置屏幕休眠广播的动作 intentFilter.addAction(Intent.ACTION_SCREEN_OFF); // 注册
); //发送广播 sendBroadcast(intent); 若被注册了的广播接收者中注册时intentFilter的action与上述匹配,则会接收此广播(即进行回调onReceive())。...成功安装APK Intent.ACTION_PACKAGE_ADDED 成功删除APK Intent.ACTION_PACKAGE_REMOVED 重启设备 Intent.ACTION_REBOOT 屏幕被关闭...: 其他App针对性发出与当前App intent-filter相匹配的广播,由此导致当前App不断接收广播并处理; 其他App注册与当前App一致的intent-filter用于接收广播,获取广播具体信息...mBroadcastReceiver mBroadcastReceiver = new mBroadcastReceiver(); IntentFilter intentFilter = new...(this); //步骤3:设置接收广播的类型 intentFilter.addAction(android.net.conn.CONNECTIVITY_CHANGE); //步骤4:调用LocalBroadcastManager
而动作对应的数据则以URI 的形式进行表示。例如:要查看一个人的联系方式,你需要创建一个动作类型为VIEW 的intent,以及一个表示这个人的URI。 与之有关系的一个类叫IntentFilter。...IntentFilter 需要在AndroidManifest.xml 中定义。通过解析各种intent,从一个屏幕导航到另一个屏幕是很简单的。...onResume()内注册BroadcastReceiver IntentFilter intentFilter=new IntentFilter("android.provider.Telephony.SMS_RECEIVED...(相当于在应用外包了一层壳), 只有需要在多个应用程序间共享数据是才需要内容提供者。例如,通讯录数据被多个应用程序使用,且必须存储在一个内容提供者中 它的好处:统一数据访问方式。...Video CallLog:地址和接收到的电话信息 Contact.People.Phones:存储电话号码 Setting.System:系统设置和偏好设置 使用Content Provider对外共享数据的步骤
窗口通常会充满屏幕,但也可小于屏幕并浮动在其他窗口之上 创建Activity 要创建Activity 必须继承自Activity或者Activity的子类。... 如果有需要也可以为此Activity添加IntentFilter(IntentFilter稍后我会再做总结),以供外部程序来启动,一般同一应用中不会用到隐式启动。...来匹配 ;一般 在同一个应用中不必使用隐式Intent; 例如 我在为A Activity添加这样的IntentFilter: ...可视周期:在执行onStart()和onStop()之间 在这期间 你可以在屏幕上看到这个Activity但是 不能再前台跟用户交互 。...---- 关于这里提到的intent ,intentFilter 我会在之后总结。
学习 Java 方法 十、面向对象编程 十一、更多面向对象编程 十二、栈、堆和垃圾收集器 十三、匿名类——让安卓小部件活起来 十四、安卓对话框窗口 十五、数组、地图和随机数 十六、适配器和回收器 十七、数据持久化和共享化...构建简单的图片库应用 二十六、使用导航抽屉和片段的高级 UI 二十七、安卓数据库 二十八、临别赠言 Kotlin 安卓编程初学者手册 零、前言 一、安卓和 Kotlin 入门 二、Kotlin、XML...十六、适配器和回收器 十七、数据持久化和共享 十八、本地化 十九、动画和插值 二十、绘制图形 二十一、线程和启动实时绘图应用 二十二、粒子系统和处理屏幕触摸 二十三、安卓音效和旋转小部件 二十四、设计模式...精通 Kotlin 安卓开发 零、前言 一、从安卓开始 二、构建和运行 三、屏幕 四、连接屏幕流 五、外观和体验 六、权限 七、使用数据库 八、安卓偏好设置 九、安卓系统中的并发 十、安卓服务 十一、...Studio 秘籍 零、前言 一、欢迎来到 Android Studio 二、使用基于云的后端的应用 三、材质设计 四、安卓穿戴设备 五、尺寸很重要 六、捕获和共享 七、内容供应器和观察者 八、提高质量
3、为了能够共享系统用户的uid,你的app得采用系统签名打包,即先找到目标Android系统的platform.pk8和platform.x509.pem密钥文件,然后使用signapk.jar将apk...除了电量改变事件,还有几个事件与电池有关,如下所示 Intent.ACTION_BATTERY_LOW : 电池电量过低,静态注册时使用android.intent.action.BATTERY_LOW...; import android.content.Context; import android.content.Intent; import android.content.IntentFilter;...app开发与服务器程序开发不同,app所在的移动设备是很缺电的,几天就要充一次电,所以如果你的app特别耗电,一天甚至半天就把用户手机搞没电了,那么通常逃脱不了被卸载的悲惨命运。...; import android.content.Intent; import android.content.IntentFilter; public class MainApplication extends
广播将以与调用相同的方式序列化。sendOrderedBroadcast(Intent, String)....动态注册一般用于操作特别频繁的广播事件,比如屏幕的锁屏与解锁,电池电量的变化。...动态注册: 体验一下动态注册,屏幕的锁屏与解锁: ScreenReceiver.java import android.content.BroadcastReceiver; import android.content.Context...".equals(action)){ Log.d(TAG, "屏幕锁屏了"); } else if ("android.intent.action.SCREEN_ON...".equals(action)){ Log.d(TAG, "屏幕解锁了"); } } } MainActivity.java import android.content.IntentFilter
系统的锁屏广播事件 ; 屏幕锁定 : 启动只有 1像素的透明 Activity 界面 ; 屏幕解锁 : 退出上述 1 像素的透明 Activity 界面 ; 1、主界面 MainActivity 主界面...} } } 4、管理类 单例管理类 , 负责注册广播接收者 , 在广播接收者中启动 1 像素页面 , 同时也负责关闭该 1 像素页面 ; 该管理类负责 Activity 组件与...; import android.content.Context; import android.content.Intent; import android.content.IntentFilter;...intentFilter = new IntentFilter(); // 监听屏幕解除锁定广播 intentFilter.addAction(Intent.ACTION_SCREEN_ON...); // 监听[屏幕锁定广播 intentFilter.addAction(Intent.ACTION_SCREEN_OFF); // 创建广播接收者
领取专属 10元无门槛券
手把手带您无忧上云