- 博客(13)
- 资源 (4)
- 收藏
- 关注
原创 Android 通知之RankingHelper
因为不同厂商不同设备(手机、TV、汽车等)对于通知的处理方式可能会各不相同,为了方便通知行为的灵活配置&分离解耦,Android平台定义了NotificationSignalExtractor接口,并通过xml文件配置添加相关的处理实现类。我们看到NMS从Resource中获取了一个字符串数组extractorNames并且给到了RankingHelper的构造方法中,该数组定义在frameworks/base/core/res下的config.xml文件中。在onStart中调用了init方法。
2023-09-12 16:55:36 197
原创 Android通知之NotificationManagerService 源码分析
NotificationManagerService 是在系统启动时在SystemService.startOtherServicess的时候通过mSystemServiceManager.startService(NotificationManagerService.class)方式启动的,并且加入到了系统服务的列表当中,在Android系统中可以通过ServiceManager.getService("notification")拿到这个服务,后面统称为NMS。这里只是说明一下,后面会展开详细介绍。
2023-09-12 16:44:29 874
原创 Android Touch事件InputManagerService源码解析(二)
我们的设备在显示的时候其实是有多个窗口叠在一起的,最常见的就是Activity,每一个Activity都有一个window,状态栏、下拉栏、一个透明的Activity悬浮在另一个页面上、通过WindowManger添加View等。InputReader不停的从底层读取事件发送给InputDispatcher,InputDispatcher内有一个线程,当有新的事件的时候会从休眠中唤醒调用dispatchOnce。但是这是触摸事件的消费处理过程,有没有想过touch事件是由谁产生,又是如何传递给View的。
2023-09-12 16:15:25 339
原创 Android Touch事件InputManagerService源码解析(一)
但是这是触摸事件的消费处理过程,有没有想过 touch 事件是由谁产生,又是如何传递给 View 的。可以看到 InputDispathcer 和 InputReader 启动了 2 个非常重要的线程,它们确保了 input 子系统能够源源不断的从底层获取输入事件,并将事件经过层层包装之后上报给当前的焦点窗口去处理。在 1.2 中 native 层创建了一个 NativeInputManager 实例,并将对应指针返回了 java 层,在 nativeStart 的时候又调用了 start 函数。
2023-09-12 16:09:57 351
原创 Android App Install源码解析
此时InstallInstalling就通过session将应用的安装信息发送给了PackageManagerService,前面页面也注册了一些安装过程的回调监听,当PackageManagerService安装完成后会回调InstallEventReceiver,安装成功和失败,都会启动一个新的 Activity(InstallSuccess、InstallFailed)将结果展示给用户,然后 finish 掉 InstallInstalling。先看下InstallStaging。
2023-09-12 14:06:09 677
原创 android 电源管理休眠唤醒浅析
最终是往指定的 path 的文件节点下写入一份 string 数据,新版本是“/sys/power/wake_lock”旧版本“/sys/android_power/acquire_partial_wake_lock”。在 Android 系统中我们常用 wake lock 锁来保持设备唤醒,使设备不进入休眠状态,本文从源码角度分析一下 wake_lock 的基本流程原理。PowerManagerService.WakeLock: PowerManager.WakeLock 在 PMS 中的表现形式;
2023-09-08 16:22:14 391
原创 android wake_lock 锁源码分析
最终是往指定的path的文件节点下写入一份string数据,新版本是“/sys/power/wake_lock”旧版本“/sys/android_power/acquire_partial_wake_lock”。在Android系统中我们常用wake lock锁来保持设备唤醒,使设备不进入休眠状态,本文从源码角度分析一下wake_lock的基本流程原理。PowerManagerService.WakeLock: PowerManager.WakeLock在PMS中的表现形式;1.WakeLock使用。
2023-09-08 16:07:18 495
原创 Android焦点requestFocus 源码分析一
首先会更新当前 View 的标记位 mPrivateFlags 记录自己的 isFocused 状态,PFLAG_FOCUSED表示当前View获取焦点,接着通过 rootView 查找到当前的焦点赋值给 oldFocus,以用于后续逐层清理旧的焦点View的焦点,然后调用 parent 的 requestChildFocus 方法告知 parent 自己当前获取到焦点。View的实现比较简单,就是查询一下自己的mPrivateFlags标记位,如果获取到了焦点就将自己返回,否则返回null。
2023-09-04 10:34:16 207
原创 小程序iOS端wx.startPullDownRefresh不触发onPullDownRefresh
在做小程序开发时经常会有下拉刷新上拉加载的需求,下拉刷新可以通过手动向下滑动屏幕触发,也可以通过小程序的官方api wx.startPullDownRefresh方式触发。对于编译器与Android手机来说两种触发方式没有区别,都会有一个下拉刷新的动态效果并且触发onPullDownRefresh刷新函数。而iOS端使用wx.startPullDownRefresh方式触发下拉刷新是,只有一个下拉刷
2017-10-24 10:19:08 7190 1
原创 Android仿微信朋友圈10s视频编辑
以前遇到一个需求就是要做一个类似微信朋友圈10s视频上传的功能,因此就需要视频裁剪与压缩,需要做一个类似微信朋友圈视频编辑的页面,就需要将视频按照时间一秒一秒解码成一幅幅的图片,让用户滑动选择。之前在网上找到了一个类似项目用的 MediaMetadataRetriever 来获取视频某一个时间的图片,但是该类在视频分辨率较高时效率低下,体验不好,于是我用NDK集成FFmpeg重新解码,发现
2017-10-20 14:50:41 5059 11
转载 将项目上传到github
转载自:http://www.cnblogs.com/cxk1995/p/5800196.html 使用git将项目上传到github(最简单方法) 首先你需要一个github账号,所有还没有的话先去注册吧!https://github.com/我们使用git需要先安
2017-10-03 14:58:36 326
原创 FFmpeg解码视频帧为jpg图片保存到本地
之前遇到一个需求是将视频一秒一秒解码成一帧一帧的图片,用户滑动选择时间节点(微信朋友圈发10秒视频的编辑界面)。开始我是用的MediaMetadataRetriever类来获取图片,但是对于分辨率比较大的视频(1920*1080)获取一个图片要0.7/0.8秒,太慢了。后来又用FFmpeg的命令来批量的解码视频成一帧一帧的图片,速度依然不快每张图片得耗费0.5秒左右的时间。最后还是用FFmpeg,不
2017-10-02 17:03:35 8756 7
原创 自定义圆形水波纹View
学了一段时间的自定义view了,现在总结一下关于贝塞尔曲线的用法。不说废话,直接撸代码。 首先在attrs中定义一个命名空间 declare-styleable name="CircleWaveView"> attr name="waveColor" format="color">attr> attr name="waveHight" format="dime
2017-05-09 14:00:49 1021
Android微信朋友圈10s视频编辑2
2018-01-12
Android微信朋友圈10s视频编辑
2017-10-20
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人