自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(56)
  • 资源 (1)
  • 收藏
  • 关注

原创 Android 7.0 Camera架构源码分析1 - CameraService启动

本系列教程主要讲解Camera从APP层到HAL层的整个流程,第一篇先讲解CameraService的启动,后面会讲解open、preview、takepicture的流程。

2017-12-13 21:12:21 17791 4

原创 Android Camera API 2使用OpenGL ES 2.0和GLSurfaceView对预览进行实时二次处理(黑白滤镜)

本系列教程会有三篇文章讲解Android平台滤镜的实现方式,希望在阅读本文之前先阅读前面两篇文档。

2017-09-21 17:43:07 11245 4

原创 Android Camera使用OpenGL ES 2.0和TextureView对预览进行实时二次处理(黑白滤镜)

本系列教程会有三篇文章讲解Android平台滤镜的实现方式,希望在阅读本文之前先阅读下述第一篇文档,因为第一篇讲过的知识,本文并不会细讲了。

2017-08-11 13:45:19 13652 4

原创 Android Camera使用OpenGL ES 2.0和GLSurfaceView对预览进行实时二次处理(黑白滤镜)

本系列教程会有三篇文章讲解Android平台滤镜的实现方式,第三篇以后应该很多人会需要,这三篇写完,看情况是否升级到OpenGL ES 3.0来实现,毕竟OpenGL ES 2.0和3.0虽然有些差别,但差别不算太大。

2017-08-10 19:24:43 25562 20

原创 Android 7.0 Gallery图库源码分析8 - 加载专辑缩略图

在[Android 7.0 Gallery图库源码分析3 - 数据加载及显示流程](http://blog.csdn.net/lb377463323/article/details/69569133)一文最后讲了AlbumSetSlidingWindow的onContentChanged方法,专辑缩略图和缩略图下面的label的加载就是在此方法中完成的。

2017-04-28 11:10:39 3644 2

原创 Android 7.0 Gallery图库源码分析6 - 完成界面渲染

这里接着Gallery图库源码分析3的SlotView渲染准备完成后讲解,前面讲了当数据准备完成后,通过mListener.onContentChanged()通知界面更新。

2017-04-20 17:31:51 3319 5

原创 Android 7.0 Gallery图库源码分析4 - SlotView手势监听及页面跳转

上篇文章讲了初始化View时会实例化一个SlotView并监听其事件,至于它是怎么实现的,用的是Android自带的GestureDetector。

2017-04-17 11:02:47 2799 1

原创 Android 7.0 Gallery图库源码分析3 - 数据加载及显示流程

前面分析Gallery启动流程时,说了传给DataManager的data的key是AlbumSetPage.KEY_MEDIA_PATH,value值,是”/combo/{/local/all,/picasa/all}”,下面分析具体怎么加载数据的

2017-04-07 16:48:50 7657 8

原创 Android 7.0 Gallery图库源码分析2 - 分析启动流程

前面一讲解了Gallery启动Activity以及界面如何绘制,现在开始讲解启动流程的代码逻辑。

2017-04-07 10:31:38 4499 4

原创 Android 7.0 Gallery图库源码分析1 - 初识Gallery源码

分析一个项目的源代码时,第一件事就是查看清单文件,找到程序入口,我们从Gallery2源码的清单文件中可以看到GalleryActivity是此应用的启动Activity。

2017-04-01 17:32:14 9083 5

原创 编译Android Gallery图库源码所遇bug

转载请注明出处: http://blog.csdn.net/lb377463323/article/details/689362911. selectiveAdjust() isnot supported in SDK levels 11-15Error:(99, 32) error: Non-root compute kernel selectiveAdjust() is not supporte

2017-03-31 21:55:11 3440 2

原创 Android中使用OpenGL ES实现纹理贴图以及实现多重纹理混合

OpenGL ES中最常用的纹理是2D纹理,也就是一个图像的二维数组,当我们使用纹理时,需要使用纹理坐标作为纹理图像中的索引。纹理坐标用(s, t)指定,或者(U, V)。纹理坐标如下图所示,纹理原点在左下角,往右为s轴,往上为t轴。而屏幕的方向是屏幕左上角为原点,往右为x轴,往下为y轴。

2017-03-21 17:48:01 13008 1

原创 Android开发OpenGL ES的流程,从着色器编写到显示在屏幕上

本文讲述Android中开发OpenGL ES程序的完整流程。

2017-03-19 13:36:12 2849

原创 Android初始化OpenGL ES,并且分析Renderer子线程原理

Android使用OpenGL ES需要搭配GLSurfaceView、Renderer,当然也可以使用TextureView,不过TextureView没有GLSurfaceView的OpenGL ES初始化操作,所以使用起来有些麻烦,需要自定义OpenGL初始化,本文使用GLSurfaceView初始化OpenGL ES。

2017-03-18 18:11:09 11492

原创 Android Camera2教程之打开相机、开启预览、实现PreviewCallback、拍照

转载请注明出处: http://blog.csdn.net/lb377463323/article/details/52740411Android API 21新增了Camera2,这与之前的camera架构完全不同,使用起来也比较复杂,但是功能变得很强大。在讲解开启预览之前,首先需要了解camera2的几个比较重要的类:CameraManager: 管理手机上的所有摄像头设备,它的...

2016-10-05 20:32:48 71240 34

原创 Android Binder机制 - interface_cast和asBinder源码分析

研究Android底层代码时,尤其是Binder跨进程通信时,经常会发现interface_cast和asBinder,很容易被这两个函数绕晕。

2017-10-29 15:45:27 8181 1

原创 ndk-build编译64位.so,出现ndk error: cast from 'int*' to 'int' loses precision [-fpermissive]

这是因为Linux 64位系统上指针类型占用8个字节,而int类型占用4个字节,所以会出现loses precision。

2017-10-24 15:36:28 9281

原创 Android Binder机制 - defaultServiceManager()源码分析

Android 使用Binder进程间通信时,需要先使用defaultServiceManager方法获取ServiceManager,通过ServiceManager的addService或getService来与Binder驱动程序进行交互。

2017-10-18 17:52:42 1329

原创 C++保存数据到本地文件

C++ 保存数据到本地文件常用的有两种方法。

2017-10-17 16:43:53 60034 3

原创 Windows7 64位安装TensorFlow

参考TensorFlow官网的Windows安装步骤,首先安装Python 3.5,然后安装TensorFlow。

2017-08-12 15:18:36 937

原创 OpenGL ES 2.0升级到3.0配置win32环境以及编译所遇bug

OpenGL ES2.0升级到3.0配置win32环境以及编译所遇的坑。

2017-08-10 13:22:58 7495

原创 Android JNI获取上下文Context

当在JNI调用Android自带的类时,经常需要传入Context参数,那怎么在JNI层获取Context呢?我们知道Application和Activity是Context的子类,由于每个Activity对应的Context是不一样的,所以一般情况下我们使用Application的Context,它在整个程序中只有一个实例。所以现在问题就变成了怎么在JNI中获取Application呢?

2017-07-18 18:07:38 11476 5

原创 Android JNI反射调用Java构造方法、成员方法和静态方法

Android开发中一般讲Java接口调用放在APP层,但是如果想对外隐藏Java接口调用,应该怎么办呢?我们可以将接口调用放在JNI层,通过反射调用所需接口,之后打包成.so库,这样既可对外隐藏所有调用细节。

2017-07-18 14:12:37 7171

原创 Android JNI开发流程

很多人想学习jni和NDK,但又不敢学习,觉得这一块内容太难,其实难的不是jni和NDK,而是C/C++语言,jni和NDK只是个工具,很容易学习的。

2017-07-14 14:57:34 1474

原创 使用Android Studio制作NinePatch图片(9.png)

最近制作.9.png时发现,发现sdk的tools文件夹竟然没有draw9patch.bat了,原来Google把它集成到了Android Studio里面,使用起来更方便了。

2017-05-19 11:23:26 1205

原创 无Root权限的Android手机访问Sqlite数据库等私有数据

adb shell //进入命令模式run-as 包名 //获取查看非root设备debug应用的沙盒数据的权限

2017-05-18 16:33:44 4211

原创 Android 7.0 Gallery图库源码分析9 - 竖向显示布局

Gallery默认是横向显示所有布局的,如果想竖向显示布局怎么办呢?其实很简单,找到控制横向显示的标志就行了,由于AlbumSetPage和AlbumPage都是使用SlotView显示布局,所有查看SlotView代码即可,找到下述代码,这个WIDE变量就是控制横向还是竖向显示,true为横向,false为竖向

2017-05-12 16:20:43 1554 6

原创 Android Bitmap内存计算

Bitmap内存 = 图片长度 x 图片宽度 x 一个像素点占用的字节数;图片长宽即为图片的分辨率,一个像素点占用的字节数则是由Bitmap.Config决定的。

2017-05-12 15:59:35 1176 1

原创 Android读取联系人的姓名及电话号码

Android中联系人的信息是通过ContentProvider来供外部应用获取的,我们使用时只需根据系统联系人ContentProvider的Uri即可获取所需数据。下面讲解如何获取联系人的姓名及电话号码,别的数据如邮箱、照片等数据的获取都可使用此方式。

2017-05-09 16:34:15 25010 2

原创 Android 7.0 Gallery图库源码分析7 - ActionBar下拉导航及根据标签进行分类

转载请注明出处: http://blog.csdn.net/lb377463323/article/details/ActionBar实现下拉导航Gallery中使用下拉导航显示可分类的标签,默认分为相册、地点、时间、人物和标签等,实现此下拉导航只需要实现如下代码:

2017-04-21 10:02:02 2076

原创 Android 7.0 Gallery图库源码分析5 - Menu(菜单栏)显示

Menu的显示是通过Activity的onCreateOptionsMenu方法管理的,Gallery项目的Menu管理是在AbstractGalleryActivity类中,Gallery的启动Activity是GalleryActivity,它继承自AbstractGalleryActivity。

2017-04-20 10:22:32 1900

原创 Android中使用Color类将颜色分解为单独分量

Android中使用四个分量ARGB表示一个颜色,其中Alpha表示透明度,Red表示红色,Green表示绿色,Blue表示蓝色。每个分量的值在0-255之间,一般用十六进制表示,比如Color.RED = 0xFFFF0000;当我们想获取这个颜色的RAGB四个分量的单独值,应该怎么计算呢?

2017-03-26 15:07:06 2585

原创 Android Studio更改包名

Android Studio默认目录层次结构是合并在一层的,如下图所示,这时我想把包名”com.airhockey.android”改为”com.brian.particles”,应该怎么做呢?这种情况我们直接右键Refactor -> Rename是不行的,这样只能改最外层的名称,中间的名称是改不了的,我们通过下面的步骤来修改

2017-03-26 12:28:03 835 1

转载 OpenGL ES Shader的三种变量类型uniform,attribute和varying

uniform变量uniform变量是外部application程序传递给(vertex和fragment)shader的变量。因此它是application通过函数glUniform**()函数赋值的。在(vertex和fragment)shader程序内部,uniform变量就像是C语言里面的常量(const),它不能被shader程序修改。

2017-03-25 19:06:59 2982

原创 单例设计模式多种实现方式

单例模式多种实现方式

2017-03-01 22:41:53 521

原创 Android Handler消息机制源码分析

我们知道子线程发送消息给主线程是使用Handler的,基本用法就是在主线程中创建Handler、在子线程通过handler.sendMessage()发送消息、handlerMessage()中处理消息。

2017-02-22 22:43:44 470

原创 Android Camera的预览回调接口PreviewCallback使用

首先定义一个类实现Camera.PreviewCallback接口,然后在它的onPreviewFrame(byte[] data, Camera camera)方法中即可接收到每一帧的预览数据,也就是参数data。

2016-11-25 17:54:49 27069 4

原创 Android Camera.ErrorCallback使用

首先定义一个Camera.ErrorCallback,可以使用下述方式直接new一个,当然也可以定义一个类继承Camera.ErrorCallback,当Camera出现错误时会回调onError()方法

2016-11-25 15:54:17 3753

原创 OpenGL ES2.0入门之Android篇(二)——添加动作及触摸事件

上篇文章中介绍了如何使用OpenGL ES2.0绘制三角形,本章将在上篇的基础上进行讲解,另附链接 OpenGL ES2.0入门之Android篇(一)——绘制三角形) 定义投影和相机视图在OpenGL ES环境中,投影和相机视图让绘制对象以更接近于人们肉眼所看到的实物对象的样子显示投影: 前文讲过,Android和OpenGL ES的坐标系不一样,如果没有投影的话,绘制的图像将会被拉伸变形

2016-08-06 15:25:16 3689 5

原创 OpenGL ES2.0入门之Android篇(一)——绘制三角形

OpenGL ES简介OpenGL ES是一个为便携式或嵌入式设备例如:移动电话、监视器等发展的3D绘图API。在Android框架中有两个基础类用于使用OpenGL ES创建和处理图形 GLSurfaceView类是OpenGL ES绘制图形的view容器GLSurfaceView.Renderer类是用于控制上述view容器中显示什么内容 Android使用OpenGL ES绘制三角形

2016-08-06 15:22:20 12117 10

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除