Android
Tinghua_M
你若安好,我便晴天!
展开
-
curl: (60) server certificate verification failed.
curl: (60) server certificate verification failed. CAfile: /etc/ssl/certs/ca-certificates.crt原创 2022-12-27 09:58:50 · 845 阅读 · 1 评论 -
Android usb广播 ACTION_USB_DEVICE_ATTACHED流程源码分析
android usb ACTION_USB_DEVICE_ATTACHED 分析原创 2022-06-07 16:38:15 · 4862 阅读 · 0 评论 -
Android中获取当前时间戳
Android中获取时间戳的四种方法原创 2022-06-01 13:48:09 · 3615 阅读 · 0 评论 -
Gradle: Download卡住,Read timed out
最近不知道怎么了,Android Studio 抽风,Download总是卡住,提示Read timed out。本以为是自己的环境有问题,重装了AS,还是不行。在网上搜索了很多办法依然是无解,确实郁闷。从现象来看,就是网络出问题了,之前用公司的网络是可以的,所以一直没有再怀疑!偶然使用自己的手机热点,笔记本连上后,速度飞快,天啦撸啦!这么坑的呢!解决办法:只要把自己笔记本的无线网,连接上手机热点,问题即可解决 !!!...原创 2021-11-18 10:29:10 · 1236 阅读 · 0 评论 -
Android MultiMedia框架完全解析 - 概览
之前的工作中,一直在看Android MultiMedia的一些东西,关注我博客的同学也许知道我换工作了,以后将要从事Camera相关的工作,于是乎,将之前整理存放在有道云笔记里面的一些东西发出来,整理成一个专栏。工作的环境为Android N7.1,基于fsl公司的i.MX6q平台。当然,有很多东西是我自己的领悟,有不对的地方欢迎大家指正。在公司内部做了一个ppt分享,但是反馈一般,至于原因,我也不是太理解,囧~自认为,这个ppt和博客是自己认真做的,为此,离职前一个月天天加班..转载 2021-03-27 14:59:00 · 823 阅读 · 0 评论 -
Android 源码下载断线重连
断线重连repo syncwhile [ $? -ne 0 ]do repo syncdone原创 2021-02-19 14:24:33 · 133 阅读 · 0 评论 -
陀螺传感器的原始数据
使用Sensor开发时我们都知道,当Sensor数据发生变化时,onSensorChange方法会被回调,我们可以从陀螺传感器的原始数据由三个float值组成 ,指定器件沿X,Y和Z轴的角速度。每个值的单位是每秒弧度。在沿着任何轴的逆时针旋转的情况下,与该轴相关联的值将为正。在顺时针旋转的情况下,它将为负。 陀螺仪测量设备围绕 x、y、z 轴旋转的速率,单位是 rad/s。...原创 2021-01-26 10:28:58 · 563 阅读 · 1 评论 -
Android 10 init启动分析<一>
第一次研究Zygote启动时还是4.0,目前已经Android版本已经发展到了10,变化还是蛮大的,一起来看看吧!Android设备启动要经过3个阶段,BootLoader、Linux Kernel和Android系统服务,Android系统实际上是运行于Linux内核之上的一系列"服务进程",并不算一个完成意义上的"操作系统";而这一系列进程是维持Android设备正常工作的关键,所以它们肯定有一个"根进程",这个"根进程"衍生出了这一系列进程。这个"根进程"就是init进程。init进程是Andro原创 2020-09-11 15:19:11 · 1098 阅读 · 0 评论 -
Android Launcher开发添加应用程序的快捷方式
Launcher就是我们Android系统的手机桌面,这里一直是纷繁手机应用世界的必争之地,几乎每个应用都希望在这里有一席之地。一个Launcher一般由以下几个部分组成:今天我们先来做一个最简单的手机应用快捷方式添加。手机应用桌面快捷方式的基本原理是:采用了 Android 系统的广播机制,发送一个广播“com.android.launcher.action.INST原创 2016-07-09 17:48:05 · 2204 阅读 · 0 评论 -
SimpleAdapter.ViewBinder方法的感受
SimpleAdapter ViewBinder原创 2016-07-09 16:00:06 · 1378 阅读 · 0 评论 -
为手机定制ROM
一、修改化定制Android4.0系统Android系统启动时,先加载Linux内核,在Linux的framebuffer驱动里可以定制开机界面,Linux内核启动成功后,挂载根文件系统,启动Android系统,这个时候设备屏幕上开始出现滚动的Android动画,等全部的Android服务启动完毕之后,开始启动Android的HOME界面,也就是桌面。而在这个过程中,我们可以将开机界面和A原创 2013-07-28 15:41:20 · 5765 阅读 · 0 评论 -
提示read-only file system
在Android中,我们使用adb shell时,向/system目录及其子目录写文件时经常提示“read-only file system”。其实产生该提示的原因很简单:/system是以ro模式挂载的,因此我们所要做的就是以读写模式(rw)重新挂载需要修改的目录(本例中为/system),具体操作如下:#mount -o remount -o rw /system原创 2015-11-10 10:00:51 · 1275 阅读 · 0 评论 -
Android 操作系统获取Root权限 原理详细解析
许多机友新购来的Android机器没有破解过Root权限,无法使用一些需要高权限的软件,以及进行一些高权限的操作,其实破解手机Root权限是比较简单及安全的,破解Root权限的原理就是在手机的/system/bin/或/system/xbin/目录下放置一个可执行文件“su”android root权限破解分析许多机友新购来的Android机器没有破解过Root权限,无法使用一些需要高转载 2015-11-18 10:55:38 · 3778 阅读 · 0 评论 -
Android 5.0 API新增和改进
转自Android官网:点击打开链接API 级别:21Android 5.0 (LOLLIPOP) 为用户和应用开发者提供了新的功能。本文档介绍了最值得注意的新 API。有关新平台功能的扼要介绍,另请参阅 Android Lollipop 集锦。开始开发要构建 Android 5.0 版应用,您必须先下载 Android SDK,然后使用 SDK 管理器转载 2015-08-22 22:08:58 · 1127 阅读 · 0 评论 -
Android Studio汉化
j既然Google推出了Android Studio,Android Studio的使用肯定是将来的趋势。但对于英语不太好的同学,可以尝试着先汉化Android Studio,慢慢习惯后,还是使用官方原版吧! 今天就给出Android Studio 的汉化过程。首先下载Android Studio汉化包链接:http://pan.baidu.com/s/1sjrBtbJ 密码:pasj原创 2015-09-06 09:50:02 · 2858 阅读 · 0 评论 -
利用Java反射机制改变SharedPreferences存储路径
最近在做一个项目,想到要使用SharedPreferences类去存储一些简单的数据,但是我们知道,使用SharedPreferences保存数据,其实质是采用了xml文件存放数据,路径为:/data/data//shared_prefs. 但是有些时候,我们不想将xml文件存储到SharedPreferences累指定的目录下,比如说,我想将xml文件存储到sdcard下面,这个时候,我们该怎么原创 2015-07-23 10:05:30 · 1046 阅读 · 0 评论 -
SELinux策略语言--类型强制(编写TE规则)
1. 简介 SELinux策略语言主要描述policy.conf的相关语法,其相关部分如下图所示:2. 类型强制概念 SELinux策略大部分内容都是由多条类型强制规则构成的,这些规则控制被允许的使用权,大多数默认转换标志,审核,以及固定部分的检查。 SELinux策略大部分都是一套声明和规则一起定义的类型强转载 2016-09-13 11:09:31 · 1078 阅读 · 0 评论 -
SELinux深入理解
SELinux带给Linux的主要价值是:提供了一个灵活的,可配置的MAC机制。 Security-Enhanced Linux (SELinux)由以下两部分组成: 1) Kernel SELinux模块(/kernel/security/selinux) 2) 用户态工具 SELinux是一个安全体系结构,它通过LSM(Linux Sec转载 2016-09-13 11:37:57 · 652 阅读 · 0 评论 -
Android HAL实现的三种方式(1) - 基于JNI的简单HAL设计
现在在Android上的HAL开发总的来说还是随意性比较大,Android也并没有规范好一个具体的框架,下面我将根据Jollen的Mokoid工程,自己做了一些改动,分别给大家介绍一下三种实现方式。这篇先介绍最简单的一种实现方式 - Java应用程序直接调用JNI库。由于JNI技术的存在,在Android中,java程序能够很好的调用C/C++库。我们这里设计一个简单的HAL,一共只有三层转载 2012-04-10 12:56:48 · 1023 阅读 · 0 评论 -
ActivityManagerService中根据UID获取App包名
public String getPackagesForUid(int uid) { return mContext.getPackageManager() .getPackagesForUi...原创 2019-09-10 09:17:31 · 4145 阅读 · 0 评论 -
判断是否为系统应用的方法
if((packageInfo.applicationInfo.flags& ApplicationInfo.FLAG_SYSTEM)!=0)public static boolean isSystemApplication(Context context, String packageName){ PackageManager mPackageMana...原创 2019-09-09 09:40:40 · 1420 阅读 · 0 评论 -
基于Android系统源码解决部分机型camera预览画面正常但拍照照片倒置问题
1、frameworks/basemedia/java/android/media/ExifInterface.java1503 /**1504 * Set the value of the specified tag.1505 *1506 * @param tag the name of the tag.1507 * @param v...原创 2019-08-08 14:42:18 · 1201 阅读 · 0 评论 -
基于Android系统源码解决camera画面预览倒置问题
网上有很多关于在应用层开发来解决camera预览画面倒置问题,我这里说一下基于源码解决此问题的方法。1、frameworks/base/core/java/android/hardware/Camera.java public void setDisplayOrientation(int d) { int rotation = SystemProperties...原创 2019-08-08 14:03:06 · 2326 阅读 · 0 评论 -
Failed to create the SD card(in the AVD folder.)
在ubuntu18.04 64位机器上安装android adt环境,起初遇到问题:[2019-02-13 17:32:32 - SDK Manager] Failed to create the SD card.[2019-02-13 17:32:32 - SDK Manager] Failed to create sdcard in the AVD folder. 网上很多人说是...原创 2019-02-13 17:44:49 · 920 阅读 · 0 评论 -
Android 5.x SEAndroid/SElinux内核节点的读写权限
Android 5.0下,因为采取了SEAndroid/SElinux的安全机制,即使拥有root权限,或者对某内核节点设置为777的权限,仍然无法在JNI层访问。本文将以用户自定义的内核节点/dev/wf_bt为例,手把手教会读者如何在JNI层获得对该节点的访问权限。第一步:找到需要访问该内核节点的进程(process),笔者自己这个节点由system_server进转载 2015-07-23 10:03:56 · 3839 阅读 · 0 评论 -
android L 启动流程
android启动流程在之前的文章已经讲过了,而andoird 5.0的流程其实也差不多。本篇文章是针对华清远见自主研发的fspad-733平板AndroidL源码分析的。如下图:整个启动流程与之前的一样,唯一不同的是android L支持64位的app,所以又起一个Zygote64来专门负责64位APK的孵化。而且创建Zygote进程脚转载 2015-08-24 22:23:55 · 1864 阅读 · 0 评论 -
Android之init.c简析
在Android系统启动时,内核引导参数上一般都会设置“init=/init”,这样的话,如果内核成功挂载了这个文件系统之后,首先运行的就是这个根目录下的init程序。这个程序所了什么呢?我们只有RFSC(Read the Fucking Source code)!!init程序源码在Android官方源码的system/core/init中,main在init.c里。我们的分析就从mai原创 2013-07-21 20:42:01 · 3297 阅读 · 0 评论 -
JNI与Android VM之间的关系
1. 如何载入*.so文件 由于Android的应用层级类别都是以Java撰写的,这些Java类别转译为Dex型式的Bytecode之后,必须仰赖Dalvik虚拟机(VM: Virtual Machine)来执行。另外,当java需要调用c native组件时,VM就会去加载本地的c组件,让java函数能顺利的调用到C函数。此时,VM扮演着桥梁的角色,让java和c组件能通过透明的JNI接转载 2012-09-18 16:25:56 · 772 阅读 · 0 评论 -
Android HAL实现的三种方式(3) - 基于Manager的HAL设计
在上文中我们实现了利用Service来设计HAL,但是根据Android的框架,一般应用程序都不直接和Service打交到,中间需要经过一个Manager层。我们在这里也按照Android的框架,进一步优化HAL的设计。结构如下:HAL stub JNI 库 JAVA Service Manager JAVA 应用程序。由于LedManager和LedService属于两个进程转载 2012-04-10 12:58:18 · 799 阅读 · 0 评论 -
Android HAL实现的三种方式(2) - 基于Service的HAL设计
在上一篇文章中,我介绍了一种应用程序直接调用JNI库的HAL设计方法,该方法虽然简单,但是不符合Android的框架结构,下面我们介绍一种通过Service提供接口给应用程序的设计方法,结构如下:HAL stub JNI 库 JAVA Service JAVA 应用程序。HAL stub的设计和上文一样,JNI库的设计中唯一需要修改的地方就是register_mokoid_server转载 2012-04-10 12:57:33 · 1047 阅读 · 0 评论 -
Android初始化语言 (init.*.rc、init.conf文件格式)
所有这些都是以行为单位的,各种记号由空格来隔开。C语言风格的反斜杠号可用于在记号间插入空格。双引号也可用于防止字符串被空格分割成多个记 注释行以井号(#)开头(允许以空格开头)。 Actions和Services声明一个新的分组。所有的命令或选项都属于最近申明的分组。位于第一个分组之前的命令或选项将会被忽略。 Actions和Services有唯一的名字。如果有重名的转载 2012-02-13 11:23:44 · 614 阅读 · 0 评论 -
Android——init.rc脚本
在Android中使用启动脚本init.rc,可以在系统的初始化中进行简单的操作。init.rc启动脚本路径:system/core/rootdir/init.rc内容:Commands:命令 Actions:动作 Triggers:触发条件 Services:服务 Options:选项 Properties:属性Commands是一些基本操作。如: mkdir /s转载 2012-02-13 11:22:46 · 814 阅读 · 0 评论 -
Android init 启动过程分析
分析android的启动过程,从内核之上,我们首先应该从文件系统的init开始,因为 init 是内核进入文件系统后第一个运行的程序,通常我们可以在linux的命令行中指定内核第一个调用谁,如果没指定那么内核将会到/sbin/, /bin/ 等目录下查找默认的init,如果没有找到那么就报告出错。下面是曾经用过的几种开发板的命令行参数:S3C2410 启动参数:noinitrd roo转载 2012-02-13 11:21:06 · 771 阅读 · 0 评论 -
Android 系统 makefile文件(Android.mk)组织结构
Android.mk脚本结构 下面是main.mk文件包含关系,本文档主要说明的就是这些文件里到底做了什么。(这个文件被根目录下的makefile文件包含) 一. main.mk 1.检查版本号,设置环境变量(BUILD_SYSTEM)和缺省的目标。$(MAKE_VERSION) >= 3.81,BUILD_SYSTEM= b转载 2012-02-13 11:19:11 · 871 阅读 · 0 评论 -
添加厂商产品信息
1. 在vendor目录下创建自己公司目录,然后在公司目录下创建一个新的vendorsetup.sh,在里面添加上自己的产品编译项[plain] view plaincopy1 #mkdir vendor/farsight/ 2 #touch vendor/farsight/vendorsetup.sh 3 #echo "add_lunch_combo fs100-eng"原创 2013-10-29 16:07:02 · 1189 阅读 · 0 评论 -
Android--hw_get_module解析
我们知道,google为了保护硬件厂商的信息,在Android中添加了一层,也就是大名鼎鼎的HAL层。在看HAL的编写方法的过程中,会发现整个模块貌似没有一个入口。一般说来模块都要有个入口,比如应用程序有main函数,可以为加载器进行加载执行,dll文件有dllmain,而对于我们自己写的动态链接库,我们可以对库中导出的任何符号进行调用。 问题来了,Android中的HAL是原创 2013-08-26 17:33:16 · 13222 阅读 · 1 评论 -
全志A13 + Android4.0.3平台的错误
编译andorid4时,会报告 xxx_rtsp.a 没有的问题。 详细如下:arm-linux-androideabi-g++: /home/linux/fspad/android4.0/out/target/product/crane-evb/obj/STATIC_LIBRARIES/libstagefright_rtsp_intermediates/libstagefright原创 2013-11-10 11:36:37 · 1770 阅读 · 0 评论 -
强烈推荐转载-Android 性能测试
关于Android的性能测试,看到一篇很好的文章,转载过来和大家分享下。 Android性能测试,跟pc性能测试一样分为客户端及服务器,但在客户端上的性能测试分为 2 类,对于应用性能测试,包括很多测试项,如启动时间、内存、CPU、GPU、功耗、流量等。但针对rom版本的性能测试,一般关注功耗。 rom版本的性能测试: rom 版本一般就关转载 2015-06-25 16:43:55 · 27310 阅读 · 3 评论 -
Android USB Host开发之manager.getDeviceList()获取不到设备列表
同样遇到这样的问题,我的Android设备是原道N12C,官方的4.0.3系统,遇到这个问题,后来找了半天找到的,现在汇总一下吧:1、创建 android.hardware.usb.host.xml,内容为:[html] view plaincopyprint?permissions> feature name="android.hardware.usb.hos转载 2015-04-16 17:32:24 · 4560 阅读 · 0 评论 -
LayoutInflater的获取与使用
之前一直对LayoutInflater这个类不是很熟悉,但是在实际开发中LayoutInflater这个类还是非常有用的,它的作用类似于findViewById()。不同点是LayoutInflater是用来找res/layout/下的xml布局文件,并且实例化;而findViewById()是找xml布局文件下的具体widget控件(如Button、TextView等)。具体作用:1、对转载 2015-04-03 14:39:52 · 487 阅读 · 0 评论