- 博客(14)
- 资源 (3)
- 收藏
- 关注
原创 SELinux 权限添加
通过adb shell getenforce 可以获取SELinux的工作模式,Enforcing表示打开,Permissive表示关闭。当有权限未被允许时,kernel log 会提示,比如我遇到的是:type=1400 audit(1590114336.309:8): avc: denied { search } for pid=1582 comm="ip" name="net" dev="mmcblk1p16" ino=16 scontext=u:r:sysCfg:s0 tcontext=u:ob
2020-05-22 18:01:43
636
原创 Android FileObserver 用法
项目中有个需要,需要根据接收后台推送的文件,然后拷贝到指定目录。这个功能用FileObserver 可以实现,当监测目录有新文件时,会触发FileObserver.onEvent(),在onEvent 里拷贝文件就可以了。 private void startFileObserverThread(){ Runnable structexce = new Runnable() { public void run() { int flags = FileObse
2020-05-21 18:21:09
436
原创 Android 取消蓝牙消息通知流程分析(二)
蓝牙发送通知上一篇介绍了设置通知取消提示的流程,本篇来介绍蓝牙有文件需要接收时,如何发送通知的。Android 中蓝牙的应用是在packages\apps\Bluetooth中(我本来以为在frameworks中),当通过蓝牙配对后,接收到文件传输的广播时,packages/apps/Bluetooth/src/com/android/bluetooth/opp/BluetoothOppHandoverReceiver.java对广播进行处理:BluetoothOppManager.getInstan
2020-05-19 18:04:09
937
原创 Android 取消蓝牙消息通知流程分析(一)
设置通知在“设置->通知”中 选择“显示系统进程” 的话,会在应用列表中看到“蓝牙共享”应用,点击进入,打开“显示时不发出提示音”。这样,当有蓝牙设备发送文件过来时,就不再有提示了。接下来分析一下代码,当打开这个开关时,都做了什么。首先我们可以根据这个preferece的title,找到这个preference。是在packages/apps/Settings/src/com/android/settings/notification/AppNotificationSettings.java中的
2020-05-14 14:14:25
1847
原创 Android 7.1 触摸屏方向以及双屏异触设置
EventHub获取设备注册信息EventHub在创建时,创建了mEpollFd 和 mINotifyFd,mEpollFd 对象用于监听是否有可读事件(标记1);mINotifyFd 对象用于监听设备节点DEVICE_PATH,即“/dev/input” 是否有设备节点的增删(标记2)。然后将mINotifyFd 注册到mEpollFd 中监听是否有新的可读的设备增删事件(标记3)。接下来创建...
2020-04-28 17:57:25
1343
原创 C++ 指针占位符
unsigned char* 类型的变量需要打印时,占位符用 “%p”。如:struct usb_descriptor_iter { unsigned char* config; unsigned char* config_end; unsigned char* curr_desc;};struct usb_descriptor_iter iter;......
2020-04-09 11:50:14
388
原创 Android 打印调用堆栈
内核添加头文件:#include <linux/kprobes.h>#include <asm/traps.h>添加打印函数:dump_stack();C++添加头文件:#include <utils/CallStack.h>添加打印函数:android:CallStack stack;stack.update();stack...
2020-04-02 16:20:16
244
原创 Preference:点击没反应?
Preference:点击没反应?最近在某应用中加了一个Preference:private Preference mSelect;@Override public void onResume() { ... if(mSelect==null) { mSelect=(Preference)findPreference(KEY_...
2020-03-31 18:09:09
750
原创 Android 7.1 亮度调节完整流程分析(三)
Android 7.1 亮度调节完整流程分析(三)上一篇说到DisplayManagerService.LocalService中blanker的requestDisplayState调用了requestGlobalDisplayStateInternal,即下图中第19步:那么我们继续分析requestGlobalDisplayStateInternal:private void req...
2019-12-12 17:31:19
739
原创 Android 7.1 亮度调节完整流程分析(二)
Android 7.1 亮度调节完整流程分析(二)上一篇追踪到DisplayPowerController.updatePowerState,本篇就从updatePowerState继续分析。这个函数非常地长,我们主要追踪一下亮度值的传递:synchronized (mLock) { mPendingUpdatePowerStateLocked = false; ...
2019-12-12 17:30:33
543
原创 Android 7.1 亮度调节完整流程分析(一)
Android 7.1 亮度调节完整流程分析(一):上一篇说到BrightnessController中设置屏幕亮度是通过调用PowerManagerServicer的setTemporaryScreenBrightnessSettingOverride,那么本篇就从这继续往下分析。为了对下面的分析有一个总体的认识,我画了一个时序图,以帮助理解。首先还是从PowerManagerServic...
2019-12-12 17:29:46
1412
原创 Android 7.1 亮度调节之BrightnessController
Android 7.1 亮度调节详解(一): BrightnessController通过“设置->显示->亮度”可以调节屏幕亮度,当点击“亮度”这个选项时,会弹出如下菜单:实际上这是一个系统Activity,下面就先来分析一下是如何启动这个Activity的。启动亮度调节Activity“设置->显示”的布局文件是"display_settings.xml":<...
2019-12-05 17:02:30
1564
原创 定时开关机(二):AlarmManager的使用及对定时不准问题的修改
使用AlarmManager实现定时关机及对定时不准问题的修改 AlarmManager是系统提供的定时服务,通过AlarmManager发送一个定时广播,接收方收到广播后,启动关机活动,这样就实现了定时关机功能。 首先看一下如何发送定时广播。AlarmManager发送定时广播public void setShutDownAlarm(){ //定时关机时间--hour:...
2019-12-02 17:26:36
851
原创 定时开关机(一):添加设置界面
定时开关机(一):设置界面添加定时开关机功能,首先添加设置界面。在设置->日期和时间中,有个“设置时间”选项,点进去如图:这个界面还挺好看的,所以决定使用这个界面作为设定开/关机时间的界面。“设置时间”源码分析调用设置时间dialog的源码位置为:packages\apps\Settings\src\com\android\settings\DateTimeSettings.jav...
2019-12-02 17:25:33
790
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人