自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

lin20080410的专栏

从站在巨人的肩上,向成为巨人迈进... 互相学习!

  • 博客(308)
  • 资源 (10)
  • 收藏
  • 关注

转载 Android 高清加载长图或大图方案

不过值得一提的是:上面这个手势检测的写法,不是我想的,而是一个开源的项目https://github.com/rharter/android-gesture-detectors,里面包含很多的手势检测。对应的博文是:http://code.almeros.com/android-multitouch-gesture-detectors#.VibzzhArJXg那面上面两个类就是我偷学了的~ 哈在实...

2018-05-03 22:06:21 10674 5

原创 视音频录制流程(二)

接续:https://blog.csdn.net/lin20044140410/article/details/80057981前面的过程漏了一点,就是camera设备的打开过程,也就是mCamera=Camera.open(CAMERA_ID),分析的recorder.setCamera(mCamera);中的参数就是open的返回值。open()的过程还是很长的,下面只关注跟cameraS...

2018-04-23 23:09:43 1161

原创 视音频录制流程 (一)

音视频录制状态机:start→ Initial -→Initialized → DataSource Configured → Prepared-→Recording 录制过程从上到下涉及很多模块:1),app层,描述各种录制参数;2)framework层,主要指java层framework,如MeidaRecorder,在收到app层的录制需求后,协调camera,micphone等模块完成录制...

2018-04-23 22:59:59 1795

转载 Android 权限分析

Android 6.0权限全面详细分析和解决方案  https://www.cnblogs.com/l2rf/p/5937490.html系统预制应用,可以在DefaultPermissionGrantPolicy.java中授予运行时权限。DefaultPermissionGrantPolicy.java    public void grantDefaultPermissions(int us...

2018-04-20 16:52:07 344

原创 音频的回放流程-音频回放链路的创建(解码后的数据送到回放设备)

接上篇 播放器创建6,下面开始看数据是怎么送到播放设备的。解码后的数据处理,除了CB_OUTPUT_AVAILABLE,还可能有一个CB_OUTPUT_FORMAT_CHANGED,对应的消息处理都是在NuPlayer的Decoder中。04-0209:13:33.703 V/NuPlayerDecoder( 544): [audio] kWhatCodecNotify: cbID= 4, pa...

2018-04-06 23:30:07 2127

原创 音频的回放流程-播放器的创建及数据准备(提取,解码)

这篇文章的目的是疏通从应用端到服务端到本地库之间的播放链路是怎么打通的,其中涉及的具体细节,比如AMessage,ALooper机制,codec,renderer,AduioTrack和AudioFlinger间buffer的共享等,没有详细分析。根据mediaplayer的状态机,一个音频的回放通常是从idle经过setDataSource()到Initialized状态,然后通过prepare...

2018-04-06 23:15:56 1767

转载 网络编程-开源库

okhttp教程http://www.jcodecraeer.com/a/anzhuokaifa/androidkaifa/2015/0106/2275.htmlokhttp3解析https://blog.csdn.net/u012124438/article/details/54236967okhttp的使用:https://blog.csdn.net/fightingXia...

2018-04-06 20:20:39 502

转载 Android 一些开发框架

一是针对抽象、针对接口编程,二是不过度设计。有时间好好学习下:Github googleSamples:https://github.com/googlesamples/android-architecture/tree/master也是Google出品:https://github.com/google/ioschedhttps://github.com/android10/Android-Cl...

2018-03-21 23:07:15 257

转载 网络编程-基础(tcp/ip,http,socket)

通信协议:http、TCP/IP协议与socket之间的区别 http://blog.csdn.net/u011200604/article/details/51695414#commentsAndroid网络请求:https://blog.csdn.net/nifanggge/article/details/53014706Android网络编程http,j...

2018-03-21 23:05:16 275

原创 数据结构系列-队列的基本操作

队列(Queue)是只允许在一端进行插入操作,而在另一端进行删除操作的线性表。允许插入的端是队尾,允许删除的端是队头。所以说队列是一个先进先出的线性表,相应的也有顺序存储和链式存储两种方式。顺序存储就是用数组实现,比如有一个n个元素的队列,数组下标0的一端是队头,入队操作就是通过数组下标一个个顺序追加,不需要移动元素,但是如果删除队头元素,后面的元素就要往前移动,对应的时间复杂度就是O(n),性能...

2018-03-19 23:41:27 72204 15

转载 音视频开发基础

把多媒体的log打开,或者只打开av目录:find ./frameworks -type f | xargs sed -i 's://#define LOG_NDEBUG 0:#define LOG_NDEBUG 0:'Android视频开发进阶,原文链接:http://www.jianshu.com/u/a32db45d4859Android视频开发进阶(part2-MP4文件的解析...

2018-03-17 07:07:42 875 1

转载 Android O HIDL相关介绍

转:http://blog.csdn.net/ljp1205/article/details/77876008在上一篇博客里,大致介绍了下Android O 中treble计划的一些背景与相关基本架构,这一篇中跟大家一起来探讨下HIDL相关的内容。Android HAL类型 在此之前的ANDROID版本当中Android HAL没有什么特殊的特殊的,也么有什么分类,但是从android 8.0开始...

2018-03-16 10:58:12 1127

原创 数据结构系列-链栈的基本操作

栈的链式存储结构,可以称为链栈。针对单链表的链栈,栈顶指针就是头指针。对于链栈来说,不存在栈满的情况,当然是内存足够的情况下。对于空栈来说就是top =NULL。相对的顺序栈要实现确定一个固定的长度,但是顺序栈存取时的定位很简洁。链栈对于长度没有限制,但是每个元素要多个指针域,也就多了一些内存开销。链栈的存储结构及操作:#include "stdio.h"#include "stdlib.h"...

2018-03-15 23:31:09 961

原创 数据结构系列-顺序栈的基本操作

栈(Stack)是限定只能在表尾部进行插入、删除的线性表。也称后进先出的线性表。允许执行插入、删除的那一端成为栈顶,另一端就是栈底,因为只能在栈顶执行操作,所以他是一种特殊的线性表。既然栈是特殊的线性表,也会有顺序存储和链式存储。对于栈的顺序存储,就是用数组来实现,将下标0的一端作为栈底,因为首元素都在栈底,变化最小。顺序栈的数据结构及基本操作:如果需要改变栈的内容,函数的参数类型为指针,否则是普...

2018-03-15 22:34:06 2354

转载 Android Media Framework(1): 总纲

转:https://www.jianshu.com/p/593b14444e79Android系统整体架构:我们先看一下多媒体框架在整个Android系统所处的位置Android多媒体框架opencore和stagefright分析从框架图可以看出Media Framework处于Libraries这一层,这层的Library不是用Java实现,一般是C/C++实现,它们通过Java的JNI方式调...

2018-03-15 17:21:03 592

转载 给所有开发者的React Native详细入门指南

本文由Marno投稿。 Marno的博客地址: http://www.jianshu.com/u/174a09ba6c25本文原文:http://mp.weixin.qq.com/s/xwSy2d8KmGPH03G4VmSnYAECMAScript6入门React Native中文指南为了尊重我们的鸿洋大神,特此在这里说明此文转载鸿洋大神文章!!非常...

2018-03-15 08:03:56 847

转载 通过ContentProvider多进程共享SharedPreferences数据

通过ContentProvider多进程共享SharedPreferences数据 十个雨点 2017.01.19 09:34*...

2018-03-13 07:54:52 3237

原创 数据结构系列-线性表的链式存储及基本操作

线性表的链式存储,是用一组任意的单元存储线性表的数据元素,这组单元可以连续,也可以不连续。每个链表元素除了要存储数据信息,还要存储它的后继元素的存储地址,也就是它的数据域、指针域。通常在单链表的第一个结点前附加一个结点,成为头结点,头结点的数据域可以不存储任何信息,也可以存储链表长度等附加信息,头结点的指针域存储的是指向第一个结点的指针。还有一个概念是头指针,指向链表的第一个结点的存储位置,整个链...

2018-03-11 21:06:15 1233

原创 数据结构系列-线性表的顺序存储及基本操作

程序设计就是对一个确定的问题,选择一个合适的结构来表示,然后通过好的算法去实现,所以说数据结构、算法是很重要的基础。顺序存储的线性表,在查找指定位置元素时非常快,时间复杂度是O(1),但是删除、插入元素时可能要移动元素导致效率变慢,时间复杂度可能是O(n),还有一个问题就是存储空间容量要事先确定的。针对顺序存储的不足,有了链式存储。线性表就是零个或多个数据元素的有限序列。线性表的顺序存储结构--指...

2018-03-11 10:39:26 462

转载 systrace如何使用

转 http://blog.csdn.net/LAMP_zy/article/details/53375521更过android调试工具介绍:http://blog.csdn.net/lin20044140410/article/details/76585213查看帧率:adb shellsetprop debug.sf.showfps 1logcat | grep fps...

2018-03-09 22:49:02 4325 1

转载 systrace的使用

转 http://maoao530.github.io/2017/02/06/systrace/理解和使用systrace。一、介绍systracesystrace是Android4.1版本之后推出的,对系统Performance分析的工具。systrace的功能包括跟踪系统的I/O操作、内核工作队列、CPU负载以及Android各个子系统的运行状况等。在Android平台中,它主要由3部分组成:...

2018-03-09 22:02:04 2384

转载 ThreadLocal实现原理

如何优雅的停止线程:http://www.cnblogs.com/l2rf/p/5566895.html转 https://www.zhihu.com/question/23089780概述相信读者在网上也看了很多关于ThreadLocal的资料,很多博客都这样说:ThreadLocal为解决多线程程序的并发问题提供了一种新的思路;ThreadLocal的目的是为了解决多线程访问资源时的共享问题。...

2018-03-09 07:27:46 245

转载 Java NIO教程 MappedByteBuffer

转:Java NIO教程 MappedByteBuffer之前跟大家说过,要讲MappedByteBuffer,现在我来履行承诺了。首先从大体上讲一下MappedByteBuffer究竟是什么。从继承结构上来讲,MappedByteBuffer继承自ByteBuffer,所以ByteBuffer有的能力它全有;像变动position和limit指针啦、包装一个其他种类Buffer的视图啦,都可以。...

2018-03-08 17:17:35 354 6

转载 LruCache之LruCache分析

转LruCache之LruCache分析LruCache 分析LruCache 是 Android 的一个内部类,提供了基于内存实现的缓存用法 //获取系统分配给每个应用程序的最大内存,每个应用系统分配32M int maxMemory = (int) Runtime.getRuntime().maxMemory(); int mCacheSize = maxM...

2018-03-08 16:49:16 337

转载 Android高效加载大图、多图解决方案,有效避免程序OOM

转载请注明出处:http://blog.csdn.net/guolin_blog/article/details/9316683本篇文章主要内容来自于Android Doc,我翻译之后又做了些加工,英文好的朋友也可以直接去读原文。http://developer.android.com/training/displaying-bitmaps/index.html转载请注明出处:http://blo...

2018-03-08 16:32:04 152

转载 输出流设备决定了playbackthread

转载:点击打开链接,点击打开链接Android 音频框架概述Audio 是整个 Android 平台非常重要的一个组成部分,负责音频数据的采集和输出、音频流的控制、音频设备的管理、音量调节等,主要包括如下部分:Audio Application Framework:音频应用框架AudioTrack:负责回放数据的输出,属 Android 应用框架 API 类AudioRecord:负责录音数据的采...

2018-02-28 16:01:46 3679

转载 Android camera角度问题

转载:相机角度1. android相机简介由于Android系统的开放策略,Android手机呈现碎片化的趋势,兼容性问题一直是Android App 开发者头疼的难题。本文以Android相机预览方向为例,探索在Android机型适配上的一些思路。1.1 相机架构先了解下Camera的框架,它是分层的结构。由上向下分别是1)应用层2)Camera系统的Java类3)Camera的JNI代码4)C...

2018-02-27 17:46:36 6493

原创 Android ART虚拟机执行引擎-本地代码的执行(十)

以前面分析的虚拟机的启动流程 ART 虚拟机的启动 为例。zygote在调用AndroidRuntime的start函数时传入一个class名称:runtime.start("com.android.internal.os.ZygoteInit", args, zygote); 这个classname就是要被执行的类对象,一旦虚拟机启动完成,就会调用这个类的main方法。因为zygote程序本身有...

2018-02-26 22:14:02 1153

原创 Android ART虚拟机执行引擎-JIT(九)

Just-in-time compilation是一种动态编译,是在程序运行过程中才执行编译工作。相对于ART的核心技术ahead-of-time,JIT有几个有点:比AOT更节省存储空间;不需要在每次安装,或者系统升级、应用升级后都做AOT优化。因为不需要在程序安装时执行AOT预编译,所以不会出现漫长的安装等待,不会影响程序的启动速度。JIT的编译过程是在独立的线程中完成的,并且只编译有必要的函...

2018-02-25 21:15:33 1328

原创 Android ART虚拟机执行引擎-Interpreter(八)

ART虚拟机是一个Interpreter+JIT+AOT的共存环境。ART虚拟机中解释器的实现源码在art/runtime/interpreter中,其中与平台相关的汇编代码保存在目录art/runtime/interpreter/mterp中,因为interpreter有两个版本,一种是C语言实现的,一种是汇编版本的。汇编版本的解释器执行效率高,但是要对不同的硬件架构进行适配。解释器的任务就是解...

2018-02-25 16:08:06 2266

原创 求最大连续子序列的和

给出一个序列,求出最大连续子序列的和,并输出最大连续子序列。如:{-10, 1, 2, 3, 4, -5, -23, 100, 3, 7, -21},最大子序列是100,3,7,和是110.public class MaxSubSumDemo { public static void main(String[] args) { System.out.println("求最大子序列的和!")...

2018-02-24 19:28:39 307

原创 Galley、Camera中缩略图的生成

一,图库中缩略图的生成图库中对图片、video 的解码会通过ImageCacheRequest.java来完成,具体在run方法中:snapdragonGallery/src/com/android/gallery3d/data/ImageCacheRequest.javapublic Bitmap run(JobContext jc) { ImageCacheService ca...

2018-02-24 15:07:36 1707 1

原创 Android ART虚拟机中的线程管理(七)

一,线程的创建在java代码中可以有多种方式创建一个线程,常用的方法是:Thread thd = new Thread();这个创建会调用init,init2初始化一个线程:libcore/ojluni/src/main/java/java/lang/Thread.java private void init(ThreadGroup g, Runnable target, String na...

2018-02-24 07:31:38 1731

原创 Android ART VM启动流程(六)

接着前一篇博文 ART VM的启动流程,继续分析启动虚拟机的核心函数是startVM,frameworks/base/core/jni/AndroidRuntime.cppint AndroidRuntime::startVm(JavaVM** pJavaVM, JNIEnv** pEnv, bool zygote){ /* * Initialize the VM. ...

2018-02-14 19:35:51 1370

原创 Android ART VM的启动流程(五)

Android系统的第一个进程是init,init通过解析init.rc脚本来启动关键的守护进程和各种系统服务--其中包括zygote这个应用程序的孵化器。system/core/rootdir/init.zygote64.rc(这个文件会被import进init.rc中)service zygote /system/bin/app_process64 -Xzygote /system/bin -...

2018-02-14 19:30:37 1244

原创 Android中Gif的解码、播放

Gif的文件格式,可以参考另外两篇转载的博客:Gif文件格式,Gif文件格式项目中,会把Gif的解码、播放提交到一个线程池中执行,线程池的用法可以参考另一篇文章,ThreadPoolExecutor的使用。以下范例代码来源于图库Gallery,首先把Gif解码的任务提交到线程池:mThreadPool.submit(new GifDecoderJob(item), new GifDecoderLi...

2018-02-14 11:49:52 429

转载 gif 格式图片详细解析

转载:Gif图片格式1.概述~~~~~~~~  GIF(Graphics Interchange Format,图形交换格式)文件是由 CompuServe公司开发的图形文件格式,版权所有,任何商业目的使用均须 CompuServe公司授权。  GIF图象是基于颜色列表的(存储的数据是该点的颜色对应于颜色列表的索引值),最多只支持8位(256色)。GIF文件内部分成许多存储块,用来存储多幅图象或者...

2018-02-14 10:54:08 1129

转载 gif图片格式解析

转载:Gif文件格式gif图片格式解析飘飘白云整理参考:http://www.w3.org/Graphics/GIF/spec-gif89a.txt网络中文gif资料 简介:GIF(Graphics Interchange Format)是CompuServe公司开发的图像文件存储格式,1987年开发的GIF文件格式版本号是GIF87a,1989年进行了扩充,扩充后的版本号定义为GIF89a。 G...

2018-02-14 10:52:00 2002 1

原创 Android ART VM的文件格式-OAT(四)

一,与oat相关的文件后缀参考老罗的博客:OAT文件1).oat,OAT是由dex2oat产生的,本质上也是属于elf文件。2).odex,在Dalvik中,odex表示被优化后的dex文件;ART虚拟机中,它实际上是oat文件。oat文件除了遵循elf文件规范,又根据虚拟机的需求进行了扩展--最大的区别增加了两个重要的字段 oat data section 和oat exec section,其...

2018-02-14 07:40:36 1367

原创 Android 动态库的加载system.loadlibary(三)

System.loadlibary,System.load是怎么加载so库的?他们是在Runtime的启动过程中通过loadnativelibary来加载libjavacore.so的动态库,这个动态库是这两个函数的实现体。libcore/ojluni/src/main/java/java/lang/System.java public static void loadLibrary(Str...

2018-02-13 20:59:58 4516

simple-ffmpeg-player.zip

基于ffmpge实现的简单的播放器.仅包含音视频处理相关代码,不涉及UI.主要作为学习ffmpeg的笔记记录.适合小白,大牛请绕行哈...

2020-03-13

simplePlayer.zip

基于ffmpge实现的简单的播放器.仅包含音视频处理相关代码,不涉及UI.主要作为学习ffmpeg的笔记记录.适合小白,大牛请绕行哈...

2020-03-13

jetty-libs-9.4.zip

jetty-client-9.4.24.v20191120, jetty-continuation-9.4.24.v20191120 jetty-http-9.4.24.v20191120 jetty-io-9.4.24.v20191120 jetty-security-9.4.24.v20191120 jetty-server-9.4.24.v20191120 jetty-servlet-9.4.24.v20191120 jetty-util-9.4.24.v20191120

2019-11-26

Gif文件的解码

Gif图片文件的解码过程

2018-02-14

android studio3.1匹配的gradle版本最新4.4

android studio3.1匹配的gradle版本最新4.4,gradle-4.4-20171031235950+0000-all.zip

2017-12-25

release3.1

cglib/cglib/3.1 Code Generation Library maven依赖 &lt;!-- https://mvnrepository.com/artifact/cglib/cglib --&gt; <dependency> <groupId>cglib</groupId> <artifactId>cglib</artifactId> <version>3.1</version> </dependency>

2017-11-21

android make 介绍

android make 介绍 Make 文件说明 整个 Build 系统的入口文件是源码树根目录下名称为“Makefile”的文件,当在源代码根目录上调用 make 命令 时,make 命令首先将读取该文件。 Makefile 文件的内容只有一行:“include build/core/main.mk”。该行代码的作用很明显:包含 build/core/main.mk 文 件。在 main.mk 文件中又会包含其他的文件,其他文件中又会包含更多的文件,这样就引入了整个 Build 系统。 这些 Make 文件间的包含关系是相当复杂的,图 3 描述了这种关系,该图中黄色标记的文件(且除了 $开头的文件) 都位于 build/core/ 目录下。 Android 源码中包含了许多的模块,模块的类型有很多种,例如:Java 库,C/C++ 库,APK 应用,以及可执行文件 等 。并且,Java 或者 C/C++ 库还可以分为静态的或者动态的,库或可执行文件既可能是针对设备(本文的“设备”指 的是 Android 系统将被安装的设备,例如某个型号的手机或平板)的也可能是针对主机(本文的“主机”指的是开发 Android 系统的机器,例如装有 Ubuntu 操作系统的 PC 机或装有 MacOS 的 iMac 或 Macbook)的。不同类型的模块 的编译步骤和方法是不一样,为了能够一致且方便的执行各种类型模块的编译,在 config.mk 中定义了许多的常量, 这其中的每个常量描述了一种类型模块的编译方式,这些常量有: BUILD_HOST_STATIC_LIBRARY:= $(BUILD_SYSTEM)/host_static_library.mk BUILD_HOST_SHARED_LIBRARY:= $(BUILD_SYSTEM)/host_shared_library.mk BUILD_STATIC_LIBRARY:= $(BUILD_SYSTEM)/static_library.mk BUILD_RAW_STATIC_LIBRARY := $(BUILD_SYSTEM)/raw_static_library.mk BUILD_SHARED_LIBRARY:= $(BUILD_SYSTEM)/shared_library.mk BUILD_EXECUTABLE:= $(BUILD_SYSTEM)/executable.mk BUILD_RAW_EXECUTABLE:= $(BUILD_SYSTEM)/raw_executable.mk BUILD_HOST_EXECUTABLE:= $(BUILD_SYSTEM)/host_executable.mk BUILD_PACKAGE:= $(BUILD_SYSTEM)/package.mk BUILD_PHONY_PACKAGE:= $(BUILD_SYSTEM)/phony_package.mk BUILD_HOST_PREBUILT:= $(BUILD_SYSTEM)/host_prebuilt.mk BUILD_PREBUILT:= $(BUILD_SYSTEM)/prebuilt.mk BUILD_MULTI_PREBUILT:= $(BUILD_SYSTEM)/multi_prebuilt.mk BUILD_JAVA_LIBRARY:= $(BUILD_SYSTEM)/java_library.mk BUILD_STATIC_JAVA_LIBRARY:= $(BUILD_SYSTEM)/static_java_library.mk BUILD_HOST_

2017-11-16

如何分析JAVA crash

如何分析JAVA crash 为什么程序会Crash? 什么是异常? 如何分析JAVA Crash 程序执行时发生了无法处理的异常 崩溃分为 Java Crash 和 Native Crash

2017-11-16

Arm公司培训资料

ARM7总线接口,ARM_THUMB指令,ARM编程技巧,ARM架构,ARM嵌入式开发,ARM处理器内核介绍

2013-12-20

ADB的安装卸载及使用

adb的使用介绍,包括adb的安装,adb的卸载,以及adb的常用的命令

2013-09-27

空空如也

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

TA关注的人

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