- 博客(92)
- 收藏
- 关注
原创 架构-Android Studio利用 sourceSet独立出UI资源
上一篇从技术上面,利用Gradle实现了Overlay机制。Gradle中还有一个sourceSet,可以实现更骚的操作。需求:我们的应用,主要有三个模块,主界面模块、设置模块、商城模块,三个模块各有负责人进行开发。 新增欧洲和美洲市场,我们需要根据不同市场,进行定制开发,如欧洲市场不能有开屏广告等等。我们最终想实现如下的效果:也就是UI资源单独作为一个目录出现,app目录下面不包含UI...
2019-07-08 18:20:40
1190
1
原创 架构-Android Studio Overlay机制
之前在做Android ROM开发时,有一些需求,比如美洲国家的Camera APP,桌面图标需要定制为美洲特色,相机按钮需要定制为美洲特色等等。在Android源码中,我们经常使用overlay机制,进行资源的覆盖。Android Overlay是一种资源替换机制,它能在不重新打包apk的情况下,实现资源文件的替换(res目录非assert目录),Overlay又分为静态Overlay(...
2019-06-19 18:10:56
1292
转载 Android App优化之性能分析工具
背景:Android App优化, 要怎么做?Android App优化之性能分析工具Android App优化之提升你的App启动速度之理论基础Android App优化之提升你的App启动速度之实例挑战Android App优化之Layout怎么摆Android App优化之ANR详解Android App优化之消除卡顿Android App优化之内存优化Android Ap...
2019-06-12 15:07:25
322
原创 Android Camera OpenGL FBO的理解
背景概念:首先,Android显示系统中,系统默认的渲染器是OpenGL,混合使用skia,各个厂商可能有不同的实现,大部分都是OpenGL。 Android在系统启动时,经过BootLoader启动、kernel启动后,进入第三阶段,init进程会启动一系列的核心进程,其中包括ServiceManager、zygote、OpenGL,OpenGL是显示系统的基础,OpenGL启动之后,就可...
2019-06-12 11:06:32
1651
原创 MediaCodec Camera视频编码失败log
我们的Camera是使用OpenGL开发的滤镜相机,有滤镜、贴纸等功能,测试报了如下问题:问题现象:使用滤镜相机录制视频,结束后视频播放显示全黑,没有画面。查看mtklog,发现了如下log:05-31 14:43:35.819242 27778 28253 I MPEG4Writer: Received total/0-length (0/0) buffers and encoded 0 ...
2019-06-10 14:07:31
1262
转载 Android N 各种ANR的时间
前言大家都知道组件的执行任务的时间过长可能会导致ANR,但具体是多久呢?源码里面都定义了宏,我们把它们找出来,做了记录正文Service Timeout文件:ActiveServices.java// How long we wait for a service to finish executing.static final int SERVICE_TIMEOUT = 20*1000...
2019-04-12 11:32:01
360
原创 WeakReference 在GC中的逻辑
WeakReference常常被用来防止内存泄露,最常用的一种情景:private static class MainHanlder extends Handler { WeakReference<MainActivity> mActivity = null; public MainHanlder(MainActivity mainActivity) { ...
2019-04-03 09:12:45
645
原创 Android IllegalStateException错误
使用Mediaplayer播放本地音频,在调用mMediaPlayer.setDataSource()时报错如下:Caused by: java.lang.IllegalStateExceptionat android.media.MediaPlayer._setDataSource(Native Method)at android.media.MediaPlayer.setDataSour...
2019-04-02 16:13:08
1064
原创 静默拍照,不需要预览
静默拍照,不需要相机预览,可以在后台完成拍照并保存。 可用于人脸验证解锁。一、首先需要了解一下相机开发相关知识。相机开发有两个重要的系统类:1、Camera.java (android.hardware.Camera)2、SurafaceView.java (android.view.SurafaceView)1.2 Surface、SurfaceView、SurfaceHold...
2019-03-07 10:01:03
1775
1
转载 多角度全方位优化你的RecycleView性能
卡顿原因RecyclerView: notifyDataSetChanged数据需要全局刷新时,可以使用notifyDataSetChanged;对于增加或减少数据,可以使用如下方法实现局部刷新。void onNewDataArrived(List&lt;News&gt; news) { List&lt;News&gt; oldNews = myAdapter.getItems();...
2018-12-28 09:38:35
448
原创 Ubuntu下配置jdk1.6
Ubuntu下编译Android源码,经常需要更改jdk设置,这里记录一下配置方法。 1.下载JDK1.6。 你可以到官网去下载,下载时请看清自己的系统版本,记得一定要下载相应的版本。 http://www.oracle.com/technetwork/java/javasebusiness/downloads/java-archive-downloads-javase6-419409.ht...
2018-07-19 16:41:36
627
原创 Camera架构-软硬
Camera 硬件架构本部分主要介绍平台支持的Image Sensor类型,硬件接口以及常见基本概念1,Image Sensor类型 a) YUV Sensor YUV Sensor输出的Data格式为YUV,图像的效果处理使用Sensor内部的ISP,BB端接收YUV格式的data后只进行格式的转换,效果方面不进行处理,由于Sensor内部的ISP处理能力有限,且Y...
2018-06-07 14:59:39
3149
原创 React Native android错误合集
新建项目 react-native init TestApp运行项目 react-native run-android不好意思,错误马上就到了错误1:unable to load script from assets ‘index.android bundle’ ,make sure your bundle is packaged correctly or youu...
2018-06-07 09:06:17
351
转载 直播H264的改进
这里简单插述一下视频编解码过程中的一种约定:GOP( Group of Pictures )为了便于视频内容的存储和传输,通常需要减少视频内容的体积,也就是需要将原始的内容元素(图像和音频)经过压缩,压缩算法也简称编码格式。例如视频里边的原始图像数据会采用 H.264 编码格式进行压缩,音频采样数据会采用 AAC 编码格式进行压缩。 视频内容经过编码压缩后,确实有利于存储和传输; 不过当要观看...
2018-05-14 15:31:44
1223
1
原创 Android广播知识详细解释
广播是Android四大组件之一(Activity、Service、BroadcastReceiver、ContentProvider),在开发中应用广泛,下面是开发过程中对广播相关知识的总结。1、广播的原理2、广播的注册3、广播的分类1、广播的原理广播接收器有两个端,一个是发送端,一个是接受端,整个框架是订阅模式。当调用接口发送广播消息后,AMS会将该消息转发...
2018-05-07 10:22:56
504
原创 LruMemoryCache 的一种实现
package com.lrumemorycache;import android.graphics.Bitmap;import java.util.LinkedHashMap;import java.util.Map;/** * Created by guohongcheng on 2018/4/18. */public class LruMemoryCache { ...
2018-04-18 10:18:12
291
原创 Abdroid 事件分发流程图
1、Intent能传哪些数据? 1.8种基本数据类型(byte short int long char boolean float double)的对象及其数组 2.String的对象及其数组 3.实现了Serializable和Parcelable接口的对象和数组。整理的Android事件分发流程图...
2018-04-08 16:16:28
377
原创 android 屏幕刷新源码总结
view中所有invalidate()/requestLayout()等请求重绘的操作,最终都会表现在ViewRootImpl#performTraversals()中。 从invalidate()入手invalidate() --&gt; ViewRootImpl#scheduleTraversals()--&gt; ViewRootImpl#Choerographer.postC...
2018-04-02 17:50:05
627
原创 Bitmap 加载本地图片
private Bitmap getLocalBitmap(String path) { Bitmap bitmap = null; try { FileInputStream fis = new FileInputStream(path); bitmap = BitmapFactory.decodeStream(fi...
2018-03-30 10:53:54
1917
原创 HashMap 源码笔记
HashMap 通过hashCode()获得的散列码不会直接用于求index,而是要经过一定的运算, 在java7中,使用的是int hash = (key == null) ? 0 : sun.misc.Hashing.singleWordWangJenkinsHash(key); 最早,Bob Jenkins提出了多个基于字符串通用Hash算法(搜Jenkins Hash就知道了...
2018-03-21 10:17:59
247
原创 LruCache笔记
LRUCache是Android3.1提供的一种缓存算法,类放在frame base core java android util 下面,DiskLRUCache不是官方SDK的一部分,可以 使用UniversalImageLoader来实现。LruCache是一个泛型类,主要算法原理是把最近最少使用的对象用强引用的方式存储在LinkHashMap中,当缓存满时,把最近最少使用的 对象...
2018-03-20 18:40:40
218
转载 Android 屏幕刷新机制
这次就来梳理一下 Android 的屏幕刷新机制,把我这段时间因为研究动画而梳理出来的一些关于屏幕刷新方面的知识点分享出来,能力有限,有错的地方还望指点一下。另外,内容有点多,毕竟要讲清楚不容易,所以慢慢看哈。提问环节阅读源码还是得带着问题或目的性的去阅读,这样阅读过程中比较有条理性,不会跟偏或太深入,所以,还是先来几个问题吧:大伙都清楚,Android 每隔 16.6ms 会刷新一次...
2018-03-11 13:58:50
745
转载 Android Camera使用OpenGL ES 2.0和GLSurfaceView对预览进行实时二次处理(黑白滤镜)
第一篇 Android Camera使用OpenGL ES 2.0和GLSurfaceView对预览进行实时二次处理(黑白滤镜)第二篇 Android Camera使用OpenGL ES 2.0和TextureView对预览进行实时二次处理(黑白滤镜)第三篇 Android Camera2使用OpenGL ES 2.0和GLSurfaceView对预览进行实时二次处理(黑白滤镜)下面进...
2018-03-09 10:41:18
921
1
原创 launcher 启动应用流程简述
在Launcher进程中,首先调用startActivity(),然后调用startActivityForResult(),然后调用到Instrumention的execStartActivity(),最终调用ActivityMangerProxy的startActivity()。以上过程是在Launcher进程中执行的,接下来通过Binder跨进程启动微信应用。 instrumention...
2018-03-05 17:41:01
556
原创 OpenGL笔记
OpenGL的优势: OpenGl的主程序运行在CPU上,主程序(CPU)向显存写入图像定点等数据,并启动渲染器,着色器程序开始在GPU运行,在GPU上面做运算速度快很多。GPU与CPU的区别可以参考http://www.cnblogs.com/biglucky/p/4223565.html,CPU和GPU之所以大不相同,是由于其设计目标的不同,它们分别针对了两种不同的应用场景。其中GPU注重...
2018-03-02 14:22:15
334
原创 Android Camera previewFrame 提高 fps
在做Camera预览的时候,通过PreviewFrame()方法获取数据,但是发现fps很低,一直在10~12fps徘徊。 当然,有人推荐使用setPreviewCallbackWithBuffer。试了一下,fps没有明显的提升。虽然没有提升,但还是加上吧,避免camera频繁的创建/销毁内存,引起gc。 在stack上搜索,发现一个4.0以后的方法(应该可以了,谁还在开发4.0
2018-02-07 11:04:39
4104
转载 Android App 内存泄露之Handler
Handler也是造成内存泄露的一个重要的源头,主要Handler属于TLS(Thread Local Storage)变量,生命周期和Activity是不一致的 ,Handler引用Activity会存在内存泄露。看一下如下代码/** * * 实现的主要功能。 */ public class HandlerActivity extends Activity {
2017-12-28 18:57:25
232
原创 去除首次进入沉浸模式气泡提示
首次进入沉浸模式会有一个如图的提示:<string name="immersive_mode_confirmation" msgid="7227416894979047467">"从顶部向下滑动即可退出全屏模式。"</string>1源码位置: 布局: frameworks/base/core/res/res/layout/immersive_mode_cling.xml代码: fram
2017-12-06 14:37:27
2292
原创 Service 运行在主线程
ServiceAndroid Developer对于Service如下定义,A Service is an application component that can perform long-running operations in the background and does not provide a user interface. Another application compone
2017-11-24 14:01:27
5533
3
原创 如何用adb控制MTKLogger
[DESCRIPTION]如何通过adb command去控制MTKLogger 开关,设定log路径等等。[KEYWORD]MTKLogger adb控制 路径 大小[SOLUTION]开启/关闭 adb shell am broadcast -a com.mediatek.mtklogger.ADB_CMD -e cmd_name start/stop –ei cmd_target 7(s
2017-11-24 11:13:58
604
原创 给系统APP添加默认权限,不再弹框
在做ROM开发时,如果添加了第三方应用,在Andriod6.0以上,就会出现申请权限弹窗的问题。 而在有的客户需求中,系统应用不应该弹窗,而是直接授予默认权限。 下面就介绍给应用添加默认权限的操作。 以Camera应用为例,我的Camera需要弹窗申请的权限如下: 分别是 <uses-permission android:name="android.permission.CAMERA"
2017-11-14 16:00:44
8697
原创 Android Camera 正方形预览(二)
一、概述为实现Camera正方形预览,本Demo使用GLSurfaceView显示Camera预览数据,本文也主要针对GLSurfaceView的使用做介绍。 Android中的视图有View、SurfaceView、GLSurfaceView、TextureView等,它们各有不同。主要的特点如下:View: 显示视图,内置画布,提供图形绘制函数、触屏事件、按键事件函数等; 必须
2017-09-29 15:21:51
2779
4
原创 Android Camera 正方形预览(一)
在最近的Android开发中,需要实现Camera正方形预览,像是iPhone的相机,可以选择方形拍照。本文将针对Android实现正方形预览效果。 1、Camera 预览相关知识点在原生Android中,可以使用以下语句查看系统支持的Camera预览分辨率:mParameters = mCamera.getParameters();List<Size> pictureSizeList =
2017-09-29 11:34:44
4257
2
转载 设计模式之Builder模式
当我第一次使用Picasso的时候,看见下面的官网示例时,我和我的小伙伴都惊呆了!Picasso.with(context).load("http://i.imgur.com/DvpvklR.png").into(imageView);如此简洁明了的使用方式,如此灵活多变的链式调用,让我深深地迷住了,然后我一直苦苦追求它,奈何天资愚笨,不知如何掀起它的神秘面纱,直到我在网上找到了这篇教程…不好
2017-09-26 10:48:28
321
原创 分享一个图标网站
在大学的时候,开发APP经常使用的是easyicon这个网站,后来发现这个网站有点捉急,资源比较少,而且没法自定义图标的颜色, 后来经过一个大学同学的指点,开始接触阿里的开源图标网站iconfront,真的是非常好用,资源多,而且在下载的时候可以选择图标的颜色。
2017-09-22 15:54:18
678
原创 Git 地址迁移方法
最近发现我在github服务上面上传了不该上传的代码,因为github服务器是公开的,如果创建私有仓需要花钱,而缴费过程又比较复杂,所以我重新搭建了一个私有git服务器,其中好用的免费私有git服务器有下面几个: BitBucket:https://bitbucket.org/ 开源中国:http://git.oschina.net/ GitLab:http://www.gitla
2017-09-21 15:35:20
880
原创 Android相册 实现了视频、照片混合展示
最近学习了Universal-Image-Loader这个开源库(https://github.com/nostra13/Android-Universal-Image-Loader),这个库主要是用来异步加载图片的辅助类,他可以动态加载图片,根据滑动位置实时加载,避免OOM的出现,总体而言是一个非常好用的图片加载库。关于这个库的学习,可以参考一下文章:Android 开源框架Universal-I
2017-09-21 15:14:54
3753
原创 Android CountDownTimer 实现倒计时功能
在平时我们编程的时候,经常会用到倒计时这个功能,很多人不知道Android已经帮封装好了一个类,往往都自己写。现在发现了这个类,大家共享一下:在一个TextView不断显示剩下的时间,代码如下:private TextView vertifyView; private CountDownTimer timer = new CountDownTimer(10000, 1000) {
2017-09-19 15:38:09
401
原创 Android通过反射机制实现后台设置蓝牙可见性
最近的项目要求所有的APP界面都不能有权限弹窗,关于这个需求,我心中有个方案,就是直接修改frameworks/base/services/core/java/com/android/server/pm/DefaultPermissionGrantPolicy.java,直接将各种权限添加进去(我们做的是ROM开发,所以可以实现)。 关于这种方法的使用可以参考文章: http://blog
2017-09-19 11:28:47
1900
转载 教你上传本地代码到github
转载请标明出处: http://blog.csdn.net/hanhailong726188/article/details/46738929 本文出自:【海龙的博客】开篇之前说下题外话,之前写过一篇博客,IOS-一步一步教你自定义评分星级条RatingBar,群里有人想要源码,我上传到github上了,有需要的可以去看一下,github地址自定义评分星级条言归正传,最近有人在群里问怎
2017-09-18 11:14:02
488
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人