- 博客(131)
- 资源 (20)
- 收藏
- 关注
原创 SystemUI下拉通知菜单栏定时自动隐藏
通过对原车SystemUI的定制化开发,扩展不同需求,从而不影响原车SystemUI功能,定时自动隐藏下拉通知菜单栏开发难度不到,需要修改的地方也不是很多,可以稳定兼容原车SystemUI。
2023-12-09 22:29:31
1389
原创 海外地区开启IPV6无法访问服务器问题
最近有海外地区的用户反馈无法访问公司的网络,无法下载应用和系统进行升级。了解到浏览器可以正常访问公司域名,谷歌,油管等都能正常使用。日志分析GET请求服务器数据时没有得到应答,最终查询网络相关修改确认与网络IPV6有关。先来看下全球主流网站IPv6的支持情况:具体可查看这篇文章:https://zhuanlan.zhihu.com/p/605189137?utm_id=0。
2023-12-09 21:44:39
1641
原创 Android窗口层级(Window Type)分析
车载方案存在倒车等特殊界面需要在较高的窗口层级显示,Android原有的窗口层级不满足车载需求,因此都会自定义车载窗口层级。下图为参考自定义的窗口层级:android自定义窗口层级(自定义车载系统中倒车影像显示层级)自定义窗口层级在不同Android版本中的初始层级值也是不同,因此需要通过系统属性来判断初始值。例如在Android 13平台的默认属性为2401,在Andoid 9等平台为2031。这样做的目的是由于跟Android原生的窗口层级存在冲突,因此需要根据平台来调节初始值。
2023-09-11 23:31:49
10562
2
原创 Android绘制五角星并实现星星闪耀发光效果
自定义ShiningStarView。通过 `BlurMaskFilter` 实现外发光效果,坐标轴以顶角为原点进行数学计算,得到五角星的`Path`轨迹。根据弧度(1角度=π/180弧度)来计算边长,根据五角星的对称原理和直角三角形的原理,借助sin和cos等公式计算对应坐标。通过动画进行循环绘制,绘制不同的透明度实现闪闪发光效果。
2022-11-23 09:00:00
3865
原创 Android自定义View实现呼吸灯效果
自定义BreathViewprivate const val BREATH_TIME : Long = 1000 //动画执行时间/呼吸速率 } }自定义BreathView//动画执行时间/呼吸速率 private final float mCenterCircleRadius;} }.
2022-11-22 09:00:00
4480
转载 【转载】反编译IDA_Pro
安卓应用程序的开发语言是java,但是由于java层的代码很容易被反编译,而反编译c/c++程序的难度比较大,所以现在很多安卓应用程序的核心部分都使用NDK进行开发。使用NDK开发能够编译c/c++程序,最终生成so文件。而so文件是一个二进制文件,我们是无法直接分析so文件的,所以这里需要用到一个反编译工具IDA Pro。IDA Pro能够对so文件进行反汇编,从而将二进制代码转化为汇编语言,利用IDA Pro神奇的F5功能还能将汇编语言反编译成c/c++程序。--摘自《
2022-11-22 00:03:46
4555
1
原创 分享Markdown编写文档的技巧
Markdown 是一种轻量级标记语言,使用易读易写的纯文本格式编写文档,然后转换成有效的 XHTML(或者HTML)文档。Markdown有许多好用简单的用法,下面分享Markdown用来编写文档的技巧。
2022-11-21 09:00:00
562
原创 zsh: command not found: adb问题分析
zsh也是一种 shell ,Unix 衍生系统的默认 的shell 都是bash。从macOS Catalina (macOS 10)版本开始,在Mac 上将zsh用作默认 Shell 作为默认登录 Shell 和交互式 Shell。执行命令可查看当前终端使用的shell版本,同时窗口标题也有提示shell版本。执行命令可查看当前系统默认的shell版本。
2022-11-20 17:34:07
9805
2
原创 解决Android Studio等开发软件出现更新TKK失败的两种方案
在Android Studio等开发软件中利用Translation等翻译插件时,出现无法翻译的提示:更新TKK失败,请检查网络连接由于Google翻译退出中国后,导致域名IP在国内不可用。下面给出两种方案解决此问题。
2022-11-19 12:31:29
2121
2
原创 蓝牙HID——将android设备变成蓝牙鼠标/触控板(BluetoothHidDevice)
本篇为蓝牙HID系列篇章之一,本篇以红米K30(MIUI13即Android 12)手机作为蓝牙HID设备,可以与电脑、手机、平板等其他蓝牙主机进行配对从而实现鼠标触控板的功能。
2022-11-15 22:41:40
13013
15
原创 蓝牙HID——Android手机注册HID时出现 Could not bind to Bluetooth (HID Device) Service with Intent * 的问题分析
在蓝牙HID的开发过程中,使用红米K30手机 MIUI12.5(Android 11) 系统,打算将手机打造成蓝牙外设(键盘、触摸板、游戏手柄等)。出现下面的错误信息上述报错后就不会与系统蓝牙HID服务绑定,从而无法得到进行注册。而使用绑定时则无此问题。
2022-11-11 17:20:46
3069
5
原创 解决RuntimeException: Parcel android.os.Parcel@*: Unmarshalling unknown type code * at offset * 异常
在一次序列化过程中,出现下面的报错:在通过实现Parcelable接口自定义一个可以序列化的数据类,在传递给另一组件进行反序列化获取数据的过程中,出现了上诉异常,程序奔溃退出。
2022-10-29 19:56:20
1863
转载 【转载】浅谈蓝牙 Mesh 组网技术
蓝牙 Mesh 脱胎于 CSR 倡导的私有协议- CSR Mesh,该技术诞生于 2014 年。蓝牙技术联盟(SIG)于去年 7 月 19 日正式宣布,蓝牙技术开始全面支持 Mesh 网状网络。蓝牙 Mesh 组网是一种组网技术,蓝牙 4.0 以上支持低功耗蓝牙的芯片都支持。全新的 Mesh 功能提供设备间多对多传输,并特别提高构建大范围网络覆盖的通信能力,适用于楼宇自动化、无线传感器网络等需要让数以万计个设备在可靠、安全的环境下传输的物联网解决方案。
2022-10-29 11:00:09
8153
原创 推荐六种查看Android系统源码的网址
Google Git 下载,从 Android 4 到 Android 13 的源码,涵盖 Google 的所有修改记录。下载 Andorid 源码中的仓库,下载后可切换仓库的所有版本分支,查看最新修改记录和系统源码。涵盖 Android 所有系列版本 Android 2.2 到 Android 13 的源码。从 Android 4.4 到 Android 12 的系统源码在线查看。从 Android 7.1 到 Android 13 的系统源码。可切换分支查看不同 Android 版本的系统源码。
2022-10-22 21:55:13
30004
3
翻译 Android Automotive OS介绍
Android Automotive OS (AAOS) 是 Android 的一个版本,旨在在车载主机中运行并提供“车载信息娱乐”(IVI) 系统。在现代车辆中,IVI 系统控制加热和通风、提供音频流、显示后视(和侧视)摄像头、提供导航……以及许多其他功能。AAOS 的核心是 Android 开源项目 (AOSP) 的一部分,由于它是开源的,因此任何人都可以使用代码来创建 IVI 产品。但不要被这个想法冲昏了头脑。
2022-10-12 12:12:09
7025
原创 registerForActivityResult方法介绍以及封装,解决点击事件中无法调用问题
在API 29 之前的版本中,跳转 Activity 获取返回结果使用的是startActivityForResult 方法,而 startActivityForResult 方法在API 29 中废弃,为过时方法,而谷歌推出 registerForActivityResult 方法来替代。这种方式需要重写 onActivityResult 方法,然后判断 requestCode 和 resultCode 的方式处理回调,流程麻烦了一点且不合时宜。
2022-10-10 20:33:42
3837
原创 Android实现Mtp访问浏览手机存储(二) 禁止DocumentsUI文件直接弹出
当usb接入时,默认打开系统的。当你开发了一款文件管理器,需要增加一些适配才能响应系统的启动,首要禁止的默认直接弹出。
2022-10-04 08:30:00
1923
原创 Android实现Mtp访问浏览手机存储(一)访问Mtp目录
mimeType// Compress file types 压缩文件类型 mFileTypeMap . put("application/rar" , TYPE_COMPRESS);// Common file types 文本类型 mFileTypeMap . put("text/plain" , TYPE_DOCUMENT);office文档类型 mFileTypeMap . put("application/msword" , TYPE_DOCUMENT);
2022-10-03 23:21:18
4797
3
原创 android系统修改SettingsProvider一些常用默认值
本文主要介绍修改设置数据库SettingsProvider中的一些默认值,譬如允许安装未知来源应用、关闭触摸提示音、关闭位置访问等。
2022-09-24 22:31:38
2229
翻译 如何在 Android 上创建视频聊天?WebRTC 初学者指南
WebRTC 是一种视频聊天和会议开发技术。它允许您在移动设备和浏览器之间创建点对点连接以传输媒体流。您可以在的文章中找到更多关于它的工作原理及其一般原则的详细信息。
2022-09-23 21:19:11
1147
2
原创 Android系统中增加Settings中的自定义Key值
Android系统中增加Settings中的自定义Key值Settings.Global:全局系统设置Settings.Secure:安全系统设置Settings.System:系统设置
2022-09-22 17:19:11
4150
4
原创 Android之在设备之间传输--MediaRouter、Google Cast、Amazon Fling介绍
Google Cast 专为电视、电影、音乐等而设计。将最好的视频内容放在家里最大的屏幕上,或者将音频内容带到 Google Cast for Audio 设备和 Google Home 设备,包括新的 Google Home Hub。Google Cast SDK 使您能够扩展您的 Android、iOS 或 Web 应用程序,以将其流式视频和音频定向到电视或音响系统。应用程序成为播放、暂停、搜索、倒带、停止和以其他方式控制媒体的遥控器。使用Google Cast需要购买ChromeCast。
2022-09-20 15:57:02
2435
2
原创 Jetpack Compose--声明式UI替代传统命令式UI的新产品
声明式用户界面(UI)已成为近年来最受关注的技术之一,不仅降低开发成本,提高开发人员的效率和技能,也使专注于具有类似代码的不同平台和设备变得更加简便。命令式用户界面已经被Android开发人员用了很长时间,习惯了XML创建UI的方式。这种创建XML的方式是强大的,但在复杂的应用程序中却将失去优势。声明性用户界面已经广泛应用在许多开发框架中,如Flutter、React和SwiftUI。
2022-09-17 08:00:00
896
原创 解决Build failed:Could not resolve com.android.tools.build:gradle:7.4.0-alpha10.
AndroidStudio的项目在build时出现下面的报错:Try:新版本的AndroidStudio出现下面的错误通知:此为Android Studio默认的JDK版本与项目配置的Gradle所需的JDK不一致导致冲突所致。要求选择同一版本的JDK。
2022-09-16 15:55:18
10125
原创 Android 12之启动画面Splash Screens(二) -- framework原理
本篇介绍Splash Screens的framework层原理。
2022-09-12 18:51:25
5242
2
原创 Android 12之启动画面Splash Screens(一) -- 适配
通过// 需要在动画结束后移除SplashScreenView slideUpAnimator . addListener(new AnimatorListenerAdapter() {} });});更多请参考自定义用于关闭启动画面的动画如果想保留原启动画面Activity(),原逻辑保持为主入口,在启动画面结束后显示的内容。Google建议完全移除自定义启动画面Activity。
2022-09-07 00:48:51
13911
4
翻译 适用于应用程序开发人员的领先 Android 跨平台框架介绍
随着技术的不断提升,安卓的普及度也越来越高,这已经不是什么隐藏的事实了。对于用户,公司确保使用最好的框架。据报道,超过 90% 的移动互联网用于各种应用程序,所有企业也都明白,应用程序是提高其受欢迎程度的基本需求。仅面向开发人员的 Android 框架就带来了一系列优势,因为他们使用正确的框架支持他们的应用程序。由于 android 提供了一些有利的产品,人们更倾向于使用它,并且许多人发现使用 android 设备比任何其他操作系统更容易。
2022-09-03 11:29:16
1754
原创 java.util.concurrent.TimeoutException: android.graphics.Path.finalize() timed out问题分析
[TOC](java.util.concurrent.TimeoutException: android.graphics.Path.finalize() timed out问题分析)
2022-09-02 16:50:18
836
原创 诊断Android系统原生代码Native崩溃问题
执行中止操作可通过多种不同的方法(包括调用 abort(3)、使 assert(3) 失败、使用 Android 特有的严重记录类型)来实现,所有方法都调用到 abort。abort 调用会向发起调用的线程发出 SIGABRT 信号,因此在log中,libc.so 中显示“abort”的帧,以及 SIGABRT 信号。在上面示例中,尽管崩溃函数在 libc.so 内,但由于字符串函数仅在指定给它们的指针处进行操作,因此您可以推断出在调用 strlen(3) 时指定的是 Null 指针;...........
2022-09-01 17:18:11
4827
原创 android获取进程内存使用信息、一键加速(内存清理)与进程重要级别解析
所有共享其 uid 的进程都将被杀死,所有正在运行的服务都将停止,所有活动都将被删除等。此方法返回一个或多个进程的内存使用情况的信息。从 Android Q 开始,对于常规应用程序,此方法将只返回有关调用者 uid 运行的进程的内存信息;同样在 Android Q 中,此 API 允许的采样率受到很大限制,如果调用速度更快,将收到与上一次调用相同的数据。轮询法的概念是,由CPU定时发出询问,依序询问每一个周边设备是否需要其服务,有即给予服务,服务结束后再问下一个周边,接着不断周而复始。...
2022-08-30 16:31:45
1655
原创 SystemUI控制状态栏通知面板自动展开和收起
在项目开发中,出现了这样的需求,需要语言控制状态栏的通知面板展开和收起,同时手动滑出通知面板时需要在一段时间后自动收起面板。针对需求需要对SystemUI源码进行修改处理。以上为原生SystemUI源码的修改,具体与其他应用的通信/交互逻辑按需实现。...
2022-08-27 10:30:00
1601
1
原创 利用IPackageManager接口进行缓存垃圾清理(释放存储)
检索包的大小信息。由于这可能需要一点时间,结果将被发送回给定的观察者。需要权限。参数packageName 要获取其大小信息的包的名称。参数 userHandle 应获取其大小信息的用户。参数observer 操作完成时收到通知的观察者回调。使用对象(包含包的代码、数据和缓存大小)和表示操作状态的布尔值调用观察者的回调,观察者为空时表示不需要回调。此方法android弃用, 使用代替,android利用StorageStatsManager获取应用程序的存储信息。try {可调用格式化文件大小。......
2022-08-26 20:44:14
1700
1
原创 android利用StorageStatsManager获取应用程序的存储信息
访问详细的存储统计信息。为自己的应用包或 UID 调用这些 API 时不需要任何权限。但请求任何其他应用包的详细信息需要声明。得到应用程序的大小。这包括 APK 文件、优化的编译器输出和解压的原生库。得到应用程序主外部共享存储中所有缓存数据的大小。得到应用程序缓存数据的大小。得到应用程序所有数据的大小。获取存储信息还使用通过。系统服务,获取方式同。或者直接通过文件得到。...
2022-08-26 00:32:00
1703
原创 利用IActivityManager接口监听android系统中进程状态变化
上面方法可得到准确的包名信息来判断对应进程。通过也可获取更多的信息,但是不能实时监听系统中进程的变化。在与AMS相关的接口找到,是一个系统接口,实现类为,内部持有AMS的代理,使用实际上也是调用AMS的方法。源码分析 — Binder机制(二)之IActivityManager以上是的使用介绍,仅限于系统应用使用,非系统应用无法直接调用,可通过来定时获取进程信息进行判断处理。
2022-08-19 16:04:48
3825
原创 android媒体焦点音量压低/暂停逻辑源码简析
请求焦点的过程中,其他媒体客户端会因媒体焦点丢失进行媒体压低或暂停,下面从framework层简单分析其过程。添加到压低媒体apc(AudioPlaybackConfiguration)列表。以上为媒体焦点音量压低的简单逻辑分析。得到的是IPlayer实例,内部类。进行音量压低,apc即。实现音频音量控制,调用。...
2022-07-29 23:14:58
1877
1
原创 android平台多路摄像头实现方式的简析
采用CameraAPI2HAL3架构,androidP和Q的初始化预览流程无异。流程大概为CameraManager.openCamera打开摄像头设备回调onOpened方法得到CameraDevice,通过CameraDevice创建CaptureRequest预览请求,设置Surface容器同时创建CameraCaptureSession会话,从而实现视频预览。多路摄像头应用MIPICSI2架构,通过MIPICSI2接口结合N4芯片达到多路视频显示的目的。...
2022-07-28 22:08:44
3703
1
原创 串口通信协议常用校验计算以及一些常用方法
采用标准UART通信接口,逻辑电平为3.3V或5V(取决于上拉电阻)TTL电平,UART工作在8N1模式,即8位数据位,无奇偶校验,一位停止位,常见波特率19200bps,38400bps。可能有些串口协议定义需要对校验和进行异或(取反),或者加一减一的操作,视情况而定。...
2022-07-27 21:27:15
2623
原创 Mac上安装配置Flutter时遇到的问题以及解决方案
Flutter下载地址Flutter环境搭建教程根据教程配置环境后,执行命令时,出现如下错误:解决方案:需要执行命令下载安装xcode-select参考博客:解决报错:xcrun: error: invalid active developer path (/Library/Developer/CommandLineTools), missing xcru解决方案:第一条按提示,Android平台需要下载安装,进入Android Studio-打开SDK Manager->SDK Tools->勾选
2022-06-13 09:00:00
4157
Draw.io实用的画UML软件 20.2.8版本(含Windows和Mac)
2022-09-07
Visual Studio Code - Insiders.app(Mac)
2022-05-28
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人