- 博客(30)
- 收藏
- 关注
原创 Android --- SystemUI 导入Android Studio及debug
可以替换所有import com.android.systemui.res.R 为 import com.android.systemui.R 这仅仅是为了AndroidStudio调试方便。这里为 了不破坏systemui结构就不合并了,主要的java跳转及部分的res跳转已经完成,这样能 大大提高SystemUI的开发以及调试效率。SystemUI/src/com.android.keyguard/ 下的文件仍无法进行资源跳转,原因是在配置Android的时候。点击apply应用这些设置。
2025-09-07 15:57:15
1658
原创 Android studio的adb和终端的adb互相抢占端口
因为这是两个不同的adb,所以在使用时就是会抢占端口,为了方便可以把Android Studio使用的adb给终端的adb进行覆盖,这样都使用同一个adb就不会抢占了~② Android Studio使用的adb来源于Android SDK,adb版本是:1.0.41。路径 是:/home/tsdl/Android/Sdk/platform-tools/adb。路径是:/usr/lib/android-sdk/platform-tools/adb。① 终端adb的版本是:1.0.39。
2025-09-07 15:28:00
372
2
原创 Android --- AOSP源码导入Android Studio
AOSP代码量庞大,为了开发的方便,我们需要导入到android studio中,其中关键的一 项就是配置跳转。尤其是对于Framework开发来说。① orderEntry标签仅保留sourceFolder,这能防止源码跳转到各种jar包中。然后使用Android Studio选择android.ipr文件打开整个AOSP即可~首先需要修改ipr和iml文件的权限,防止无法保存导致每次重新配置。
2025-09-07 15:22:38
404
原创 Android --- AOSP下载及编译
AOSP默认 支持的release_config只有如下: aosp_current ap2a ap3a ap4a root trunk_staging. 我们这里采用trunk_staging,trunk_staging 是一种开发版本配置,Google 会在正式发 布之前使用它来测试功能。③ 如果 _get_build_var_cached 返回非零值,表示无法获取 COMMON_LUNCH_CHOICES,此时会输出: Warning: Cannot display lunch menu。
2025-09-07 15:15:15
1042
原创 解决FORTIFY错误 --- FORTIFY: strchr: prevented read past end of buffer
导致bug的原因:在android中通过log输出发现char默认是无符号的(unsigned),所以在读取到文件结尾的时候,char c获取到的值转换成十进制的值应该是-1(EOF),由于char默认是无符号的,导致转换成十进制的值是255,所以一直没有读取到文件的结尾。FORTIFY是GCC和Clang编译器提供的一套安全扩展,通过替换标准库函数(如memcpy、strcpy、printf等)为更安全的版本,在编译时和运行时插入边界检查,防止缓冲区溢出、格式化字符串漏洞、内存越界访问等错误。
2025-09-04 10:08:43
654
原创 Android系统打通HAL层到应用层 --- App层
HAL层:是介于操作系统内核与硬件设备之间的一层抽象接口,其核心作用是屏蔽不同硬件的底层差异,为上层Framework提供统一的硬件操作接口。Framework层:Framework 层(框架层) 位于 HAL 层(硬件抽象层)之上,是连接底层硬件能力与上层应用的核心中间层。实际上从kernel层到HAL层到Framework层的接口已经封装好了,app只需要直接调用Framework层提供的接口即可。App层:直接调用Framework层的接口,即可实现对底层硬件功能的实现(例如拍照功能等)
2025-09-03 14:42:49
387
原创 Android系统打通HAL层到应用层 --- Framework框架搭建
路径:frameworks/base/services/java/com/android/server/SystemServer.java#startOtherServices()路径:/frameworks/base/services/core/java/com/android/server/TestService.java。路径:/frameworks/base/core/java/android/app/ITestService.aidl。
2025-09-03 14:33:38
741
原创 Android系统打通HAL层到应用层 --- HAL框架搭建(HIDL)
与service.cpp同级目录:vendor/xxx/hardware/interfaces/test/1.0/default/services/ vendor.xxx.hardware.test@1.0-service.rc。路径:vendor/xxx/hardware/interfaces/test/1.0/default/services/service.cpp。路径:vendor/xxx/hardware/interfaces/test/1.0/default/Test.cpp。
2025-09-03 14:23:04
917
原创 Android --- 搭建JNI框架
/vendor/xxx/packages/apps/AppTest/src/com/app/test/AppInstance.java 要编译的java文件。执行此命令会在/vendor/xxx/packages/apps/AppTest/jni路径下自动生成com_app_test_AppInstance.h。./vendor/xxx/packages/apps/AppTest/jni/ jni头文件的生成路径。② 函数是根据从java中传入的参数并调用.so库中的函数。
2025-09-02 15:58:40
1139
原创 Android10 LocationListener的onStatusChanged被废弃
当然了,如果项目搭载了第三方的sdk更好,这是下下策,有弊端:如果GPS在自定义的delay时间外,那就取不到位置信息了(也可以写一个监听这个经纬度的变化的监听),如果遇到这个问题,可以参考一下。但是有的项目,这些条件都不满足,这就导致,这个API被废弃,在GPS信号不好的地方,回调不了任何方法来让应用知道GPS信号不佳来进行响应的逻辑处理,本篇文章着重于解决这个问题。在合适的时机,延时获取SharedPreferences的值来判断是否请求到位置信息。1、创建请求位置的接口。
2023-09-28 16:04:21
904
原创 使用注解的方式解决json数据类型不一致
在使用高德的接口去获取城市信息的数据时,需要使用gson将传入的json转换成java bean,bean的属性的数据类型是唯一的。但是实际在解析json的时候,有的数据:有数据时是传入的是string类型,没有数据的时候,传入的是[](list类型);或者是有数据是[](list类型),没有数据的时候,传入的是[[]](object类型)。可以通过自定义adapter结合注解的方式,将json传入的数据类型修改成bean封装的数据类型。2、object转String。1、String转List。
2023-09-28 15:29:05
668
原创 Android12 ---- Material You 应用
背景Google android S 新特性,当你更换壁纸,整个手机主题的颜色会根据壁纸的配色方案而改变。也就说,每当你更新壁纸,你的手机界面也会焕然一新当用户在 Android 12 设备上更改壁纸时,系统会分析图像以选择一种颜色,并使用初始种子颜色通过算法选择主要(Primary)、次要(Secondary)、第三(Tertiary)和错误(Error)颜色。同时,它应用了色彩理论和可访问性规则。从这些颜色中,该算法创建从 0% 亮度(黑色)到 100%(白色)的色调调色板。环境准备...
2022-05-18 17:40:17
7499
1
原创 Android12,SCHEDULE_EXACT_ALARM权限检查值一直返回true
由于Android12升级,在调用精确闹钟的方法的时候,必须进行SCHEDULE_EXACT_ALARM权限的检查。具体操作请参考:适配Android 12的行为变更-----精确的闹钟权限_袁美丽..的博客-优快云博客_android 闹钟权限但是最近在做新机种的时候,在S平台上,虽然clock调用了精确闹钟的方法,但是没做SCHEDULE_EXACT_ALARM权限的检查,没有任何影响(正常来说,如果不处理,在调用精确闹钟的方法时肯定会crash)经过调查发现:framework给clock
2022-04-27 18:25:58
4651
3
原创 将Android.mk工程迁移为gradle项目(apk化)
项目背景:Android.mk 文件位于项目 jni/ 目录的子目录中,用于向编译系统描述源文件和共享库。Gradle是一个基于Apache Ant和Apache Maven概念的项目自动化构建开源工具。MK项目的代码调试通常使用命令进行编译,有的时间比较长,并且不能debug。通过将Android.mk工程迁移为gradle项目,就可以在Android Studio上进行调试,在一定程度上提高了调试代码的速率。明确作业内容:1.将mk转换成gradle2.解决编译错误:资源错误
2022-02-23 17:18:32
3591
4
原创 Browser --- 更换bookmark、homepage及常见问题
Browser的开发作业通常是:更换bookmark(书签)、homepage(预置主页)bookmark(书签)在.xml中列举出bookmark的列表,替换的网址都放这里面 <add-resource type="array" name="bookmark_url"></add-resource> <string-array name="bookmark_url"> <item>Google</item&g
2022-01-11 16:02:34
2768
2
原创 Android12升级,getCallState()弃用
问题:之前在开发作业的时候,在Android 12的环境下,不做任何处理,alarm应用中,闹钟响铃时,alarm应用会crash。报错信息:java.lang.RuntimeException: Unable to start service com.android.deskclock.alarms.AlarmService@c351e33 with Intent { act=START_ALARM dat=content://com.android.deskclock/instance
2022-01-06 16:43:46
2876
4
原创 《Android第一行代码(第二版)》源码
《Android第一行代码(第二版)》电子版链接: https://pan.baidu.com/s/1Y7bNrKuQtwy44ZSb8JwhBA 密码: i27c《Android第一行代码(第二版)》源码终端执行git clone https://github.com/yuanxinyu1234/AndroidTest.git
2021-12-30 15:08:49
3368
5
原创 Android --- ACTION_SEND调用系统分享过滤指定app(解决file域的访问限制)
手机可以使用微信、QQ、蓝牙等应用对文字、图片等资源进行分享。安卓系统本身可以很简便的实现分享功能,因为我们只需向startActivity传递一个 ACTION_SEND 的Intent,系统就为我们弹出一个应用程序列表,如果我们再指定intent为chooser的方式,那么这个列表就能每次都出现而且都是相同的操作。 使用ACTION_SEND弹出的应用程序列表展示的是系统中所有可以进行分享的应用,本文分享的是过滤掉指定的应用不展示在应用程序列表中。使用ACTION_...
2021-12-30 14:42:45
3973
6
原创 RingtoneManager --- 使用canonicalize(uri)方法规范URI
问题:默认铃声识别不到URI路径。原因:默认铃声的URI没有加后缀在RingtoneManager中,使用的是.equals()来对比Ringtone的URI,获取Ringtone的位置。(默认铃声的URI没有加后缀,所以没有遍历到)Uri uriFromCursor = getUriFromCursor(mContext, cursor);if (ringtoneUri.equals(uriFromCursor)) { return cursor.getPosition();
2021-12-28 14:23:26
1547
5
原创 Android 7.0 ----- Direct Boot模式(AppClock)
本文针对闹钟应用对于此次Android 7.0增加DB模式所需要的应对方式。Dierect Boot模式:设备已开机但用户尚未解锁设备时,Android 7.0 将在安全的“直接启动”模式下运行。简单来说,如果不做处理,在手机开机锁屏的情况下(DB模式),设置的闹钟是无法使用的。开发者网站请参考:支持“直接启动”模式 | Android 开发者 | Android Developers应对方式:1.请求在DB模式下运行默认情况下,应用不会在“直接启动”模式下运行。如果应用需要...
2021-12-24 16:20:55
2905
5
原创 适配Android 12的行为变更-----精确的闹钟权限
为了鼓励应用节省系统资源,以 Android 12 及更高版本为目标平台且设置了精确的闹钟的应用必须能够访问“闹钟和提醒”功能,该功能显示在系统设置的特殊应用访问权限屏幕中。如需获取这种特殊应用访问权限,需在清单中请求 SCHEDULE_EXACT_ALARM 权限。开发者网站请参考:行为变更:以 Android 12 为目标平台的应用 | Android Developers 简单来说就是代码中如果使用了setAlarmClock()、setExact()、set...
2021-12-17 17:36:15
12675
4
原创 Java8-排序方法(正序、倒序)
1.冒泡排序//冒泡排序public static void bubblingSort(int[] array,int ord){ boolean isSort=true;//优化 for (int i=0;i<array.length-1;i++){ isSort=false; for (int j=0;j<array.length-1-i;j++){ if (array[j]>array[j+1] &am.
2021-11-29 10:46:39
9296
2
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅