- 博客(68)
- 资源 (1)
- 收藏
- 关注
原创 [RK3588][android12] Launcher3:特殊分辨率(3840*484),AllApps显示异常的问题
特殊分辨率(3840*484),AllApps界面显示异常,应用图标间距显示错误。添加productname!= null 判断后,编译固件测试正常。
2023-10-12 11:43:50 460
原创 RetroArch 接入两个同款手柄只能识别到一个导致无法双打的问题
然后再次进入设备编号(需要b手柄的方向键+a手柄的xyab键配合),会发现此时已经设备编号里面已经识别出两个手柄,并且选中的是第二个。现在选中第一个,点击确认(需要b手柄的方向键+a手柄的xyab键配合)。设置完成,现在手柄A为主手柄,手柄B为副手柄(副手柄只在游戏界面有效,无法控制菜单界面)。RetroArch插入两个同款手柄/摇杆时只能识别到一个,此时两个手柄都是可以控制模拟器,但是进入游戏也都是p1,无法实现双打。选中不可用(#2)后按确认键。为方便说明,两个手柄分别命名为手柄A和手柄B。
2023-09-07 20:01:49 3411 1
原创 [RK3399][industry-71] Android->SettingsProvider:概率性出现开机后没有初始化成功,导致默认值没有设置成功
测试平台Platform: RK3399OS: industry-71现象测试反馈,测试过程中概率出现机器开机15s后会自动休眠,但是固件中设置的是永不休眠分析分析发现是由于SettingsProvider的设置项没有初始化,导致获取的是PowerManagerService默认的15s//PowerManagerService.java:162: private static final int DEFAULT_SCREEN_OFF_TIMEOUT = 15 * 1000;怀疑是升级
2022-04-03 11:44:08 2903
原创 [RK3399][industry-71] Usb身份证模块导致 usbmanager.getDeviceList获取异常
测试平台Platform: RK3399OS: industry-71现象客户反馈使用他们的usb身份证模块上电之后,usbmanager.getDeviceList获取异常.具体的测试流程是客户流程:插着Usb身份证模块上电,getDeviceList获取设备个数为1,拔出身份证模块后,getDeviceList获取设备个数为0;再次接入身份证模块,getDeviceList获取设备个数为0;插上U盘,getDeviceList获取设备个数为0实测:插着身份证模块上电后getDeviceLi
2021-11-16 11:55:25 2358
原创 [RK3328][Android10.0] Android->ndk:Ioctl返回-1(系统64位,so:armv7)
测试平台Platform: RK3328OS: Android10.0现象3328 android10.0默认为64位系统,客户提出在jni中使用ioctl函数返回值一直是-1,经测试jni编译64位so使用ioctl正常;但是使用32位so时使用ioctl返回-1.分析对驱动了解不多,在csdn查找到一个相似问题ioctl 中gpio request等其他操作.我怀疑是ioctl函数有问题.发现file_operations 中ioctl用的是.unlocked_ioctl .sta
2021-07-28 00:10:28 496 1
原创 [RK3399/RK3399pro][Android9.0] Android->Bootanimation-播放视频:编译版本user固件时,视频无法播放的问题
测试平台Platform: RK3399/RK3399proOS: Android9.0现象rk的Bootanimation自带了开机动画播放视频的功能,具体的使用方法如下:BOOT_VIDEO_ENABLE ?= true之前主要编译userdebug版本和eng版本的固件,都可以正常播放,目前有客户提出user版本下无法播放.分析解决user模式下无法使用,主要是selinux的权限问题,解决补丁如下--- device/rockchip/common/sepolicy/vend
2021-07-27 23:56:04 766
原创 [RK3399/RK3328][Android10.0] Android-MediaProjectionPermission:去掉录屏权限弹框,默认给权限
测试平台Platform: RK3399/RK3328OS: Android10.0现象Adnroid录屏时需要手动确认后才可以,但是客户希望跳过确认步骤解决diff --git a/frameworks/base/packages/SystemUI/src/com/android/systemui/media/MediaProjectionPermissionActivity.java b/frameworks/base/packages/SystemUI/src/com/android/s
2021-05-14 00:54:51 2528 2
原创 Android->Launcher3:桌面布局说明
说明介绍一下机子开机后,默认加载到桌面的程序快捷方式、小插件、和文件夹的修改方法。在4.0之后launcher 还加入了快捷方式导航条-hotSeat,也介绍下如何把程序默认加载在hotseat上。桌面布局的配置只要在两个xml文件中配置value/config.xmlxml/default_workspace.xmlWorkspace配置显示布局value/config.xml <!-- Folder max bounds and max number of items. N
2021-05-14 00:46:29 3712 9
原创 Android->Launcher3 常用修改
Android101.开启自动旋转:默认不支持自动旋转,可以在桌面空白处长按→点击设置→打开允许旋转的开关默认打开自动旋转:git diff packages/apps/Launcher3/res/values/config.xmldiff --git a/packages/apps/Launcher3/res/values/config.xml b/packages/apps/Launcher3/res/values/config.xmlindex 83362a1..07c1a39 100644
2021-04-27 11:41:10 978 1
原创 [RK3399/RK3328][Android10.0] Preinstall:预置kodi报错提示找不到so库
测试平台Platform: RK3399/RK3328OS: Android10.0说明rk提供了几种预置apk的方案给到客户,具体的集成方案可见源码下文档(RKDocs/android/Rockchip_Introduction_Android_Application_Preinstallation_CN&EN.pdf)测试发现预置其他apk正常,但是预置kodi打开提示找不到so库分析查看源码可知,rk的preinstall是在frameworks/base/services/co
2021-04-22 19:14:35 835 1
原创 [RK3399/RK3328][Android10.0] storage:u盘/移动硬盘 每次开机都提示需要格式化
测试平台Platform: RK3399/RK3328OS: Android10.0现象在3328 android10.0上外接u盘/移动硬盘(usb/pcie)开机提示需要格式化,格式化后可以正常使用,但是重启后会再次提示需要格式化分析查看log,发现是系统获取LOST.DIR信息时出错,提示No space in …log忘记保存开机格式化后,重启前用adb进入外接存储删除LOST.DIR目录,重启后发现没有提示格式化也可以正常使用.解决diff --git a/external
2021-03-30 10:58:39 818
原创 [RK3328][Android10.0] app:onKeyListener无法监听音量按键
frameworks/base/services/core/java/com/android/server/policy/PhoneWindowManager.javaprivate long interceptKeyBeforeDispatchingInner(WindowState win, KeyEvent event,…} else if (keyCode == KeyEvent.KEYCODE_VOLUME_UP|| keyCode == KeyEvent.KEYCODE_VOLUM...
2021-03-25 20:28:25 755 1
原创 [RK3568][Android11.0]Vold-DiskInfo:区分u盘和硬盘
测试平台Platform: RK3568OS: Android 11.0需求描述目前系统内部设备没有对硬盘(sata/usb移动硬盘)和u盘做区分,统一显示的为usb存储设备.目前有需求要在显示上有所区分。解决方案如何区分移动硬盘和U盘,见Android usb设备的检测及区分(sata硬盘、优盘及移动硬盘).主要就是检测removeable值,为0:硬盘,为1:u盘解决补丁如下From 572cf35c07f68c5cb5defe40c536dd9ad1b4648e Mon Sep 17
2021-03-25 19:53:41 1588 1
原创 [RK3328][Android10.0]Orientation:应用强制横屏显示
测试平台Platform: RK3328OS: Android 10.0现象机器没有内置重力传感器,所以部分强制竖屏的App(例如360)在上面显示有问题,所以我们强制所有App都横屏显示。解决方案以抖音为例,修改方法及效果如下所示1. 强制横屏,居中竖屏显示屏幕保持横屏,app竖屏居中如图所示修改方案:1.build.prop添加属性设置persist.sys.forced_orient=2ro.target.product=box2.代码强制diff --git a/fr
2021-03-25 19:09:06 2701 3
原创 [RK356x][Android11]移动网络:点击设置-网络-移动网络(Mobile network) 崩溃闪退
测试平台Platform: RK356xOS: Android11现象连接4G网络时,状态栏图标显示正常,可以正常上网.但是点击设置-网络-移动网络时会闪退分析解决查看奔溃log03-22 14:41:16.262 405 420 I Telecom : PhoneAccountRegistrar: getSimCallManager: SimCallManager for subId 2 queried, returning: null: TSI.gSCM@AEM03-22 14
2021-03-23 10:12:12 1872
转载 Android usb设备的检测及区分(sata硬盘、优盘及移动硬盘)
原理:1.如果有外置usb设备插入,会产生/proc/scsi/usb-storage目录(ide硬盘上默认没有),并且会在/proc/scsi/usb-storage目录中产生数字文件,此文件存储了设备的相关信息。2./sys/class/scsi_device/目录中会有几个scsi设备的目录,以数字开头。(ide中默认无子目录,sata硬盘默认有子目录),类似1:0:0或2:0:0,开头的数字,这个数字与/proc/scsi/usb-storage目录中的相对应,另外的子目录表示sata硬
2021-03-17 09:48:01 1975
原创 adb 命令
10.0Intent intent = new Intent(Intent.ACTION_FACTORY_RESET);intent.setPackage(“android”);intent.addFlags(Intent.FLAG_RECEIVER_FOREGROUND);intent.putExtra(Intent.EXTRA_REASON, “MasterClearConfirm”);intent.putExtra(Intent.EXTRA_WIPE_EXTERNAL_STORAGE, mE
2020-12-10 16:58:51 1062
原创 [Android8.0/9.0/10]Camera:外接 USB 摄像头
概述Android 平台支持使用即插即用的 USB 摄像头(即网络摄像头),但前提是这些摄像头采用标准的 Android Camera2 API 和摄像头 HIDL 接口。网络摄像头通常支持 USB 视频类 (UVC) 驱动程序,并且在 Linux 上,系统采用标准的 Video4Linux (V4L) 驱动程序控制 UVC 摄像头。USB 相机 HAL 进程是外接摄像头提供程序的一部分,该提供程序会监听 USB 设备可用性,并相应地枚举外接摄像头设备。该进程具有与内置相机 HAL 进程类似的权限和 S
2020-12-04 15:20:22 5277 7
原创 Android字符映射
Android系统通过按键字符映射文件(.kcm)负责将 Android 按键代码与修饰符的组合映射到Unicode字符。用于实现一键对应多个字符的输出(配合ALT、SHIFT、CAPS_LOCK功能键实现)1.按键字符映射kcm文件命名规则字符映射文件的命名规则有两种:使用 设备的 供应商(Vendor)、产品(Product)和版本(Version) ID,其中Version为可选输入设备名称如下所示Vendor_XXXX_Product_XXXX_Version_XXXX.kcmV
2020-12-03 18:45:53 423
原创 Android getevent/sendevent/input 详解
简介Android系统提供了getevent与sendevent两个工具供开发者从设备节点中直接读取输入事件或写入输入事件.getevent:监听输入设备节点的内容,当输入事件被写入到节点中时,getevent会将其读出并打印在屏幕上.由于getevent不会对事件数据做任何加工,因此其输出的内容是由内核提供的最原始的事件.sendevent:输入设备的节点不仅在用户空间可读,而且是可写的,因此可以将将原始事件写入到节点中,从而实现模拟用户输入的功能.sendevent的作用即为发送input事件模
2020-12-03 18:04:56 3101
原创 Android获取input设备的相关信息(VID、PID等)
1.通过查询proc/bus/input/devices文件# cat proc/bus/input/devicesI: Bus=0019 Vendor=0001 Product=0001 Version=0100N: Name="ff420030.pwm"P: Phys=gpio-keys/remotectlS: Sysfs=/devices/platform/ff420030.pwm/input/input0U: Uniq=H: Handlers=event0 cpufreq dmcf
2020-12-02 20:32:46 2002
原创 Android idc输入设备配置文件
1. idc说明idc 是Input Device Configuration的缩写,输入设备配置文件(.idc 文件)包含特定设备的配置属性,这些属性会影响输入设备的行为。Android是基于输入设备驱动上报的事件类型和属性来检测和配置大部分输入设备。通常情况下标准外围设备(例如 HID 键盘和鼠标)是不需要额外配置idc,因为默认的系统行为通常可确保它们即插即用。但是,有部分外设的分类不够明确,如多点触摸屏和触摸板都支持EV_ABS事件类型(触摸屏),但是他们的使用是不同的,所以需要额外配置idc来
2020-12-02 20:08:10 1146 3
原创 [Android 9.0][RK3399/RK3328]Android9.0 设置系统时间无效的问题
frameworks/base/services/core/java/com/android/server/AlarmManagerService.java @Override public void onStart() { mNativeData = init(); mNextWakeup = mNextNonWakeup = 0; // We have to set current TimeZone info to kernel
2020-12-02 19:14:06 1436
原创 Android ICU 编译
system/usr/icu/icudt*l.dat(android10:icudt63l.dat)提供了最新的unicode标准,字符集转换, 以及超过300个国家的本地数据, 比如数字,时间和信息显示格式等,以及不同语言下的文本排序,日历相关的日期时间操作等.在Android 中, ICU 源码位于 external/icu/下而编译好的icudtl.dat文件位于external/icu/icu4c/source/stubdata下。 ICU 源码不会随着系统源码编译而自动编译,若有修改需要先.
2020-11-18 18:04:20 1910
原创 Android 键值映射
rk3399pro:/ $ geteventadd device 1: /dev/input/event2 name: "adc-keys"add device 2: /dev/input/event4 name: "Wireless Dongle Wireless Dongle"add device 3: /dev/input/event5 name: "Wireless Dongle Wireless Dongle"add device 4: /dev/inp
2020-11-04 16:55:46 2515
原创 [Android 9.0][RK3399/RK3328] Settings->Factory Reset:点击恢复出场设置崩溃的问题
测试平台Platform: RK3399/RK3328OS: Android9.0现象点击恢复出场设置,应用崩溃.分析这是因为系统提供了FRP(google的账户锁,全称factory reset protection,在android 5.x以后释放的功能,避免手机被盗)FRP和正常FactoryReset的差别首先,我们要理解信任回复和非信任回复的差别,在Android中,回复出厂设置可以分为:可信任回复 && 不可信任回复:可信任恢复出场设置方式: 在sett
2020-10-28 19:32:34 955
原创 [Android7.1/8.1/9.0/10.0][RK3399/RK3328] 关闭双击Power 键打开Camera
测试平台Platform: RK3399/RK3328OS: Android7.1/8.1/9.0/10.0现象双击Power键会弹出Camer应用,由于机器默认不带摄像头,所以需要关闭这个快捷操作分析解决跟踪代码发现,双击power流程是从PhoneWindowManager传入GestureLauncherService中,然后在GestureLauncherService中进行处理的。//frameworks/base/services/core/java/com/android/ser
2020-10-28 18:48:47 1173
原创 APP修改时区和设置系统语言
设置时区添加权限> <uses-permission android:name="android.permission.SET_TIME_ZONE" /> AlarmManager timeZone= (AlarmManager)getSystemService(ALARM_SERVICE); timeZone.setTimeZone("Asia/Shanghai");设置语言setLanguage(Locale.ENGLISH);priv.
2020-10-27 15:31:53 574
原创 SettingsProvdier相关说明
概述在Android启动之后,我们通常需要根据自己的一些需要来设置一些符合我们使用习惯的属性。例如:来电铃声、锁屏时间、日期格式等等。而这些属性的设置通常是有Settings为入口,通过SettingsProvider来进行的。数据储存形式及位置在Android5.0之前,SettingsProvider中系统设置是存储在settings.db数据库中;在Android6.0之后,SettingsProvider中系统设置改为由xml存储。改变存储方式主要是为了提高性能(400ms降低到10ms),还
2020-10-23 11:54:49 848
原创 [RK3399/RK3328][Android10.0]Ethernet:以太网设置静态ip,重启后无法获取IP的问题
测试平台Platform: RK3399/RK3328OS: Android 10.0现象设置中设置以太网为静态ip,设置后使用ifconfig查看ip显示正常。然后重启,极大概率出现开机后设备没有获取到ip.分析解决测试后发现了几点规律:设置静态ip会开机获取不到ip,但是设置动态ip无问题没有获取到ip时,使用ifconfig查看,发现网卡设备连接正常。此时拔插网线,或者使用ifconfig eth0 down + ifconfig eth0 up 来开关一次设备后,就能正常获取到ip
2020-10-20 09:27:45 6812 7
原创 [RK3399][Android8.1/9.0/10.0] GlobalActions-关机菜单:始终使用传统关机菜单
frameworks/base/services/core/java/com/android/server/policy/GlobalActions.javapublic void showDialog(boolean keyguardShowing, boolean deviceProvisioned) {if (DEBUG) Slog.d(TAG, "showDialog " + keyguardShowing + " " + deviceProvisioned);if (mGlobalActio
2020-09-30 11:04:35 926
原创 [RK3399/RK3328][Android7.1/8.1/9.0/10] OTA:使用adb命令进行ota升级
测试平台Platform: RK3399OS: Android 7.1解决方法
2020-09-30 10:31:43 2320
原创 HttpURLConnection连接超时问题:关于setConnectTimeout和setReadTimeout的问题
1、问题描述这几天测试重构后的下载框架,发现在下载过程中如果网络中断或网络较差,个别应用的下载就会阻塞卡住,一直卡在 “正在下载 xx%”。2、问题排查和定位思考:网络差不应该报网络异常的错误或者直接抛timeout异常吗?所以马上去检查Http请求的地方:发现在DownloadThread中使用HttpURLConnection进行网络请求时只是设置了connectTimeout,这样在建立连接的时候如果网络中断,那么超时以后就会报出错误,这里是没有问题的。会不会是还少设置了其他参数的原因呢?于是
2020-09-17 11:36:31 7707 1
原创 Android常用系统设置-SettingsProvider篇
设置-显示-字体大小默认为大diff --git a/frameworks/base/packages/SettingsProvider/res/values/defaults.xml b/frameworks/base/packages/SettingsProvider/res/values/defaults.xmlindex 25a5f05..07d968a 100644--- a/frameworks/base/packages/SettingsProvider/res/values/def.
2020-09-06 23:24:31 1886
原创 [RK3399][Android7.1] Network:使第三方应用可以监听到网络状态变化广播CONNECTIVITY_CHANGE
测试平台Platform: RK3399OS: Android 7.1现象客户的apk无法监听到网络状态变化的广播,相同的代码在5.1.1没问题。原因通过排查代码系统在7.1.1对应用进行了限制,CONNECTIVITY_CHANGE广播不在对第三方应用进行分发解决方法1.屏蔽系统限制,使得第三方应用可以获取CONNECTIVITY_CHANGE广播diff --git a/services/core/java/com/android/server/ConnectivityService.
2020-09-06 23:17:14 750
原创 [RK3399][Android8]WIFI:使用wifi联网时,关闭屏幕后dlna设备无法发现
测试平台Platform: RK3399OS: Android 8现象客户做了一个dlna的接受端apk,由手机向设备推送视频/音乐.但是测试中发现了个奇怪的问题,当使用wifi联网时,屏幕关闭后手机就无法扫描发现设备端了,但是使用以太网却没有问题分析解决查看wifi相关代码后发现,在WifiStateMachine.java中会监听屏幕开关并更新wifi状态导致dlna无法发现.系统的初衷可能是处于耗电考虑,对我们来说关闭这里的监听即可diff --git a/frameworks/opt/
2020-09-06 23:06:35 392
原创 [RK3328][Android8]libmediaplayerservice-Flac:修复flac无法获取专辑信息的问题
测试平台Platform: RK3328OS: Android 8现象flac文件无法获取专辑信息解决方案查看代码可知在setDataSource时,由于默认没有对flac进行判断,所以默认createRetriever导致flac的信息始终为空.添加flac支持返回StagefrightMetadataRetriever即可.diff --git a/media/libmediaplayerservice/MetadataRetrieverClient.cpp b/media/libmedi
2020-09-06 22:57:54 351
原创 [RK3399][Android7.1.1/8.1/9.0/10.0] 去掉USB权限弹窗
diff --git a/frameworks/base/core/res/res/values/config.xml b/frameworks/base/core/res/res/values/config.xmlindex 8331a57..22bdcc3 100644--- a/frameworks/base/core/res/res/values/config.xml+++ b/frameworks/base/core/res/res/values/config.xml@@ -2517,7
2020-09-06 22:52:00 1379 2
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人