android
文章平均质量分 83
ff313976
这个作者很懒,什么都没留下…
展开
-
(转)Android高级进阶--插曲-从Android5.0到Android9.0各版本变化
原文:https://blog.csdn.net/gaoxiaoweiandy/article/details/83216001 从Android5.0到Android9.0 自从公司提出了一些出其不意的需求之后我就下定了决心去了解安卓各版本系统的差异。这些出其不意的需求要么属于黑客行为,要么还不成熟,很难顺利的实现...转载 2018-11-03 18:06:48 · 2596 阅读 · 1 评论 -
Android Camera Preview ANativeWindow的处理
从JNI的调用看,Java通过surfacetexture来显示preview。CameraService通过surfacetexture获取ANativeWindow,向OpenGL传递数据。ANativeWindow的函数实现是在CameraHardwareInterface.h中, struct camera_preview_window { str转载 2015-01-19 16:12:47 · 1578 阅读 · 0 评论 -
Android Camera数据流分析全程记录
花了不少时间在这个数据流的分析上面,自己毕竟没怎么做过android,这里记录一下自己的见解,任何理解错误还望高人指教,以后还需慢慢纠正整个分析过程从app的onCreate开始:packages/apps/OMAPCamera/src/com/ti/omap4/android/camera/Camera.java在onCreate中做了很多的初始化,我们真正关注的是一下几条语句:转载 2015-01-14 20:00:44 · 4297 阅读 · 0 评论 -
android camera4.2.2导入eclipse编译
1、 编译Android4.2的源码,目的是为了得到后面的四个classes文件,如果通过其他途径有这四个文件也可以不编译。4.2的源码编译需要在64位机子上。这四个文件稍后会上传到网上。 2、 将F:\AndroidSource4.2_r1\packages\apps下的Gallery2文件夹和Camera文件夹复制到桌面一份,后续将先导入Gallery2再导入Camer转载 2014-10-09 11:05:39 · 1337 阅读 · 0 评论 -
Android的系统服务一览
System_Server进程运行在system server进程中的服务比较多,这是整个android框架的基础 Native服务SurfaceFlinger 这是framebuffer合成的服务,将各个应用程序及应用程序中的逻辑窗口图像数据(surface)合成到一个物理窗口中显示(framebuffer)的服务程序 Java服务:这部分的服务大部分都有一个转载 2014-09-30 11:36:14 · 531 阅读 · 0 评论 -
Android OTA 升级之三:生成recovery.img
前言 得到了ota升级包后,我们就可以用它来升级系统了。Android 手机开机后,会先运行 bootloader。 Bootloader 会根据某些判定条件(比如按某个特殊键)决定是否进入 recovery 模式。Recovery 模式会装载 recovery 分区, 该分区包含recovery.img。recovery.img 包含了标准内核(和boot.img中的内核相同)以转载 2014-09-29 14:58:49 · 587 阅读 · 0 评论 -
Android OTA 升级之四:进入根文件系统
前言 从bootloader 进入Recovery 模式后,首先也是运行Linux内核,该内核跟普通模式没有区别(减轻了BSP开发者的任务)。区别从执行文件系统开始。 Recovery 模式的细节就隐藏在其根文件系统中。 下面,我们就看看进入Recovery 根文件系统都干些啥。 init.rc 和正常启动一样,内核进入文件系统会执行/ini转载 2014-09-29 15:01:20 · 724 阅读 · 0 评论 -
Android OTA 升级之二:脚本 ota_from_target_files
前言 前面介绍了ota package 的编译过程,其中最核心的部分就是一个 python 脚本:ota_from_target_files. 现在我们分析这个脚本。先看一下帮助不带任何参数,先看一下它的帮助:[c-sharp] view plaincopyprint?$ ./ota_from_target_files Given a t转载 2014-09-29 14:59:31 · 555 阅读 · 0 评论 -
Android OTA 升级之一:编译升级包
前言 OTA 升级是 Android 系统提供的标准软件升级方式。 它功能强大,提供了完全升级、增量升级模式,可以通过 SD 卡升级,也可以通过网络升级。 这里,我们先研究最简单的情况,通过 SD 卡进行完全升级。 如何执行升级就不多说了,网上有很多资料。(比如,介绍HTC手机如何升级)。我们感兴趣的是它是如何实现的,作为开发者,如何修改它以符合我们转载 2014-09-29 14:58:06 · 652 阅读 · 0 评论 -
Android OTA 升级之五:updater
前言 可以说,前面分析的OTA升级的各部分代码都是在搭一个舞台,而主角现在终于登场,它就是updater. Google的代码架构设计非常好,各部分尽量松耦合。前面介绍升级脚本时,可知有两种类型的脚本,amend & edify. 他们各自对应一个updater.这里,我们主要关注新的edify的updater. Updater可以作为学习解释器/编译器的同学一个很转载 2014-09-29 15:00:31 · 606 阅读 · 0 评论 -
android 原生代码,增加eng编译
下载了android4.4代码,lunch的时候没有找到eng的选项,原创 2014-10-21 22:17:23 · 1215 阅读 · 0 评论 -
Android Camera CameraHal.cpp 分析
作为上层和底层的中转站,hal层在android中起到的作用不言而喻,针对camera的研究已经有一段时间了,这里自己还是决定静下心来好好的分析一下CameraHal.cpp这里的代码,对自己更好的理解hal与上层和底层的交互作用不可小觑,特别对理解hal与kernel driver的交互过程作用很大不多说废话了,开始今天的主题我们首先从CameraHal的初始化,那么他是从哪里开转载 2014-09-23 17:18:05 · 2007 阅读 · 0 评论 -
android 打包混淆报错问题
用到了GOOGLE的zxing包,来做二维码识别原创 2014-04-04 19:58:13 · 4204 阅读 · 0 评论 -
状态栏的显示和隐藏
View类提供了setSystemUiVisibility和getSystemUiVisibility方法,这两个方法实现对状态栏的动态显示或隐藏的操作,以及获取状态栏当前可见性。 setSystemUiVisibility(int visibility)方法可传入的实参为: 1. View.SYSTEM_UI_FLAG_VISIBLE:显示状态栏,Activity不全屏转载 2014-03-05 23:36:45 · 1236 阅读 · 0 评论 -
媒体库
判断媒体库是否正在扫描 public static final boolean isMediaScannerScanning( final ContentResolver cr ) { boolean result = false; final Cursor cursor = query( cr, MediaStore.getMediaScannerUri(),原创 2014-02-23 10:01:54 · 614 阅读 · 0 评论 -
ConditionVariable的用法
线程操作经常用到wait和notify,用起来稍显繁琐,而Android给我们封装好了一个ConditionVariable类,用于线程同步。提供了三个方法block()、open()、close()。void block()阻塞当前线程,直到条件为openvoid block(long timeout)阻塞当前线程,直到条件为open或超时void open()释转载 2013-11-11 14:45:00 · 557 阅读 · 0 评论 -
Android播放声音SoundPool、MediaPlayer、AudioTrack
Android平台中关于音频播放有以下三种方式: 1.SoundPool ---- 适合短促且对反应速度比较高的情况(游戏音效或按键声等) 2.MediaPlayer ---- 适合比较长且时间要求不高的情况 3.AudioTrack ---- 播放解码后的PCM码流方法一:SoundPool1)SoundPool简介转载 2015-03-11 19:51:03 · 1598 阅读 · 0 评论 -
关于android屏幕分辨率
不少设计师和工程师都被安卓设备纷繁的屏幕搞得晕头转向,我既做UI设计,也做过一点安卓界面布局,刚好对这块内容比较熟悉,也曾在公司内部做过相关的讲座,在此,我将此部分知识重新梳理出来分享给大家!1、了解几个概念(1)分辨率。分辨率就是手机屏幕的像素点数,一般描述成屏幕的“宽×高”,安卓手机屏幕常见的分辨率有480×800、720×1280、1080×1920等转载 2015-03-31 16:48:41 · 770 阅读 · 0 评论 -
下载Android 源码
国内被墙后如何获取android源代码按照http://source.android.com上的步骤并不能获取android源代码,估计又是被墙了。不过经过研究发现可以从一些镜像站点上获取android源代码Step 1.按照http://source.android.com/source/initializing.html配置好android编译环境Step 2.按照转载 2015-09-06 10:23:35 · 579 阅读 · 0 评论 -
Android framework修改----关屏动画效果
Android5.0以后关屏采用了CRT电视特效,本身是蛮好的东西,但是由于项目需求,觉得关屏太慢了,需要修改速度代码位置:services/core/java/com/android/server/display/DisplayPowerController.java动画是通过mColorFadeOffAnimator来实现的 mColorFadeOffA原创 2016-04-29 11:24:47 · 3290 阅读 · 0 评论 -
在SurfaceView中,用Canvas.drawBitmap,设置透明度无效的问题
之前没注意过,在Canvas中,drawBitmap,如下:private void drawBitmapForAlpha(Canvas c,Bitmap bmp,int x,int y,int alpha) { bmp.setHasAlpha(true); Paint paint = new Paint(); paint.setAlpha(al原创 2017-01-18 08:23:32 · 3516 阅读 · 0 评论 -
Android framework修改----Android原生字体,连体字效果
Android5.0以后,字库的加载方式和之前的不一样,有些字母,带有连体字效果,比如fi根据需求,要去掉这种效果frameworks/minikin/libs/minikin/Layout.cpp 修改if (fabs(ctx->paint.letterSpacing) > 0.03)将这一行屏蔽,就可以了。原创 2016-05-10 18:17:24 · 2469 阅读 · 1 评论 -
编译CM-13.0的注意事项
这周下载编译,并且烧录了CM-13.0的代码,列一下过程中遇到的问题1、CM的代码怎么下载就不说了,如果下载过Android源码的,都会,无非是配一下git和repo具体步骤CM的官网上写得很清楚,我的设备是Nexus7,参考的是https://wiki.cyanogenmod.org/w/Build_for_flo这里要注意的就是,下载代码要连VPN,由于我的VPN速度不是很原创 2016-10-25 20:50:14 · 816 阅读 · 0 评论 -
CM13编译错误解决
(/home/cm13.0/out/target/common/obj/JAVA_LIBRARIES/org.cyanogenmod.platform.sdk_intermediates/classes)javac: 找不到文件: /home/cm13.0/out/target/common/obj/APPS/org.cyanogenmod.platform-res_intermediates转载 2016-10-23 23:56:51 · 1696 阅读 · 0 评论 -
Android 系统快捷开关
在Android源码中,提供的快捷开关相对是比较少的,Android4.0系统默认提供的桌面快捷开关AppWidget上只有5种开关(分别是Wifi开关、蓝牙开关、GPS开关、同步开关、亮度设置开关)如下图所示: 当然,有时候就需要开发实现承载更多的快捷开关的AppWidget来实现用户体验,所以,本文主要针对这些开关的主要代码实现来重点解决开发这些快捷开关转载 2016-01-05 16:49:13 · 1203 阅读 · 0 评论 -
Android插件化开发
客户端开发给人的印象往往是小巧,快速奔跑。但随着产品的发展,目前产生了大量的门户型客户端。功能模块持续集成,开发人员迅速增长。不同的开发小组开发不同的功能模块,甚至还有其他客户端集成进入。能做到功能模块开发和发布的独立,能像Html5一样能帅气的解决bug并动态更新到用户的手机,一直是客户端开发的梦寐以求的特性。一、问题提出 一般的,一个Android应用在开发转载 2015-12-11 10:52:31 · 835 阅读 · 0 评论 -
SystemUI源码提取到eclipse中编译
SystemUI源码提取到eclipse中编译SystemUI本身和系统的关联性比较大,在4.4以后,SystemUI和锁屏又整合在一起了。为了方便看代码和调试,将5.1的SystemUI提取出来(包括锁屏).以下是具体的步骤:Step 1将/frameworks/base/packages/SystemUI copy出来,在eclipse中导入工程。将/frameworks/原创 2015-10-13 11:14:19 · 2804 阅读 · 0 评论 -
GitHub上史上最全的Android开源项目分类汇总
Android开源项目分类汇总如果你也对开源实现库的实现原理感兴趣,欢迎 Star 和 Fork Android优秀开源项目实现原理解析 欢迎加入 QQ 交流群: (入群理由必须填写群简介问题答案) 214742675(五群) 377723625(一群已满) 383537512(二群已满) 63224677(三群已满) 148844489(四群已满) 不要重复加群转载 2015-07-21 16:02:02 · 2630 阅读 · 0 评论 -
快速Android开发系列通信篇之EventBus
先吐槽一下博客园的MarkDown编辑器,推出的时候还很高兴博客园支持MarkDown了,试用了下发现支持不完善就没用了,这次这篇是在其他编辑器下写的,复制过来后发现。。太烂了。怎么着作为一个技术博客社区,对代码的支持应该完善一下吧,`行内代码块`不支持就算了,代码段内还不能有空行,一有空行就识别不了了。而且试着用MarkDown发了篇草稿,右边的侧边栏竟然被挤到屏幕下方了,还影响到了博客布局。。转载 2015-05-08 10:46:28 · 574 阅读 · 0 评论 -
AlertController解析
跟以前一样,先看下AlertController类中的私有成员变量:[java] view plaincopyprivate final Context mContext; private final DialogInterface mDialogInterface; private final Window mW转载 2015-04-27 15:51:57 · 4065 阅读 · 0 评论 -
AlertDialog源码解析
按照惯例,先看类说明:[java] view plaincopyA subclass of Dialog that can display one, two or three buttons. If you only want to display a String in this dialog box, use the setMessage转载 2015-04-27 15:50:50 · 1615 阅读 · 0 评论 -
Android 5.0 Service Intent must be explicit
Android 5.0程序运行报Service Intent must be explicit错误,原因是5.0的service必须显式调用改成 Intent intent = new Intent(mContext, IService.class);或者 Intent intent = new Intent("com.xx.xx.Service").setPackage("xx.xx.x原创 2015-03-25 09:06:35 · 8218 阅读 · 0 评论 -
fastboot命令详解
Android手机分区(每个分区都有相应的img文件对应):开机启动画面区(splash1),数据恢复区(recovery),内核区(boot),系统区(system),数据缓存区(cache),用户数据区(userdata)。 1. 查看fastboot命令的帮助: fastboot 显示如下信息:[java] vie转载 2013-11-22 11:07:37 · 2467 阅读 · 0 评论 -
Android 的main.mk完整分析
# Use bash, not whatever shell somebody has installed as /bin/sh# This is repeated in config.mk, since envsetup.sh runs that file# directly. #(1)根据ANDROID_BUILD_SHELL来选择编译系统用到的Shell,如果我们不想使转载 2013-09-23 20:44:37 · 5231 阅读 · 0 评论 -
gsensor
即时显示gsensor的数据,可以在调试重力感应器驱动和测试手机性能时起到很好的作用。类似的,SensorEventListener还可以用在其他感应器的场合,比如光感应、地磁感应。这里用两种方式来完成读取并显示gsensor数据的功能,一种是activity和SensorEventListener监听分离,在不同类中完成;另一种是在同一个activity中完成。(1)activity和S转载 2013-09-09 17:06:53 · 3429 阅读 · 0 评论 -
TypedArray和obtainStyledAttributes使用
在编写Android自定义按钮示例基础上,如果要指定字体大小产生这样的效果:其实是不需要自定义变量的,可以直接使用TextView的配置属性: android:layout_width="fill_parent" android:layout_height="fill_parent" android:layout_weight="1" android:te转载 2012-09-06 10:16:15 · 37513 阅读 · 2 评论 -
Android中如何编译运行系统自带桌面Launcher2源码
Android的源码包,压缩文件大概有3个G左右,要使用其中自带的一些源码需要很多技巧,否则会提示找不到一些库,大量的报错让人心神不定,不知所从. 我拿桌面代码举个例子吧. 桌面代码在源码包的packages\apps\Launcher2目录下.当然如果要想在Eclipse中使用,要把Launcher2拷贝到Eclipse工作目录下打开才行.不过一般来讲,Android的Sam转载 2012-08-27 11:40:29 · 1216 阅读 · 0 评论 -
Android各个版本API的区别
Android 1.5 API变更概要: 1、UI framework · Framework for easier background/UI thread interaction · 新SlidingDrawer 组件 · 新HorizontalScrollview 组件 2、AppWidget framework · 一些关于创建桌面AppWidget转载 2012-08-23 10:05:20 · 1461 阅读 · 0 评论 -
清理应用程序缓存
1、获取应用程序缓存信息2、清理缓存(也可以不用步骤1,直接清理,步骤1只是为了知道哪些程序有缓存)1)Method getPackageSizeInfo = pm.getClass().getMethod("getPackageSizeInfo", String.class, IPackageStatsObserver.class); List application原创 2012-08-30 15:57:06 · 3542 阅读 · 0 评论 -
Android源码编译make的错误处理
make遇到缺什么就安装什么/usr/bin/ld: cannot find -lzhost Executable: aapt (out/host/linux-x86/obj/EXECUTABLES/aapt_intermediates/aapt)/usr/bin/ld: cannot find -lzcollect2: ld returned 1 exit statu转载 2012-08-20 15:37:14 · 754 阅读 · 0 评论