自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

一航jason

IT民工,爱好:Android、C/C++、HTML5、Flutter、Framework、PHP、Unity

  • 博客(285)
  • 资源 (2)
  • 收藏
  • 关注

原创 冬天冰冻玻璃窗的效果-shader forge

shader是unity开发中门槛比较高的部分,但是shader forge插件很好解决了开发中shader编写与调试问题,方便快捷,功能强大。 使用shader forge 完成一个冬天一些玻璃窗冰冻之后效果;效果图如下: shader forge logic 图: ...

2018-02-13 11:17:47 2448

原创 顶点操作,球体伸缩-shader forge

shader是unity开发中门槛比较高的部分,但是shader forge插件很好解决了开发中shader编写与调试问题,方便快捷,功能强大。 这里使用shader forge完成一个常见顶点操作,可以完成顶点沿着法线方向来进行伸缩的效果。 shader forge 效果图片: ...

2018-02-13 09:24:15 965

原创 草丛效果-shader forge

游戏中经常有草丛场景,这里使用shader forge来完成一个草丛贴图。使用该shader最终出现的效果是这样的: 下面是这个shader forge的使用方法。

2018-02-12 17:12:17 1199

原创 金属球立体效果-shader forge

使用shader forge完成一个控制法线贴图深度的效果。

2018-02-12 16:27:11 475

原创 自定义光照 custom lighting -shader forge

shader是unity开发中门槛比较高的部分,但是shader forge插件很好解决了开发中shader编写与调试问题,方便快捷,功能强大。 下面分享一个shader forge自定义光照效果。-custom lighting截图: ...

2018-02-12 12:37:53 1567

原创 pre-network 网络预加载框架,android网络优化

网络优化是所有app开发中非常重要的一部分,如果将网络请求前置就是在点击跳转activity之前开始网络加载那么速度将会有质的提升。也就是网络预先加载框框架。网络预加载框架,监听式网络前置加载框架-Network preload, network preload the framework.- pre-network框架说明pre-network:是基于观察者模式的网络预先前置加载框架

2018-01-17 20:29:34 1144

原创 《android多媒体api》之摄像头camera采集原始视频数据

如何通过camera摄像头采集nv21原始数据?直播开发中经常需要获取视频原始帧数据然后前置处理例如:美颜、水印、特效等然后通过编码在通过rtmp或者rtsp等协议方式推流出去,可以完成实时图像传递。那么如何获取原始视频帧数据?安装camera api有一个设置回调的方法,可以将可以通过它来获取原始视频数据如nv21 、 nv12 、 yv12 等。下面构建了一个demo就是当surfaceview控件构建完成后可

2017-12-17 15:22:03 4191 1

原创 《android多媒体api》之AudioTrack原始音频pcm播放api

AudioTrack是什么?AudioRecord是可以播放原始音频数据pcm的api,pcm一般的播放器都是无法播放的,AudioRecord可以播放pcm,不过需要制定播放时候的采样率、声道数位宽,现在在android下面做了一个demo,主要是播放pcm录音文件。pcm录音时候需要制定几个重要参数,播放的时候还需要设置录制缓冲区大小,缓存区越大,内存溢出风险越小。

2017-12-15 14:41:38 1426

原创 《android多媒体api》之AudioRecord原始音频pcm录制api

AudioRecord是什么?AudioRecord是可以录制原始音频数据pcm的api,如果是一些音乐录制,或者直播语音等都需要使用音频数据前置处理,比如:降噪、多音频合成、特效音效处理等等。那么就需要获取原始音频数据后处理完毕后在编码,因为编码后的数据是不能够处理降噪、特效等操作的。那么就下来看看怎么用AudioRecord来录制原始音频数据;下面做了一个demo,主要是录制音频后保存到文件中去。pcm录音时候

2017-12-15 14:20:44 1294

原创 《android多媒体api》之MediaRecorder音视频录制api

MediaRecorder是什么?MediaPlayer类主要用于音频视频录制的api。现在有很多短视频app非常火爆,所以了解视频录制api是非常重要的,android自带多媒体录制api都是在硬编码(依靠硬件驱动编码)基础上进行封装,所以如果要达到专业级别的短视频应用开发工程师还要了解如何前置处理pcm 、jpg等处理算法。

2017-12-15 12:10:07 2975 4

原创 《android多媒体api》之MediaPlayer自定义视频播放器

MediaPlayer是什么?MediaPlayer类可用于控制音频/视频文件或流的播放。前面介绍了VideoView 跟MediaPlayer用法基本相同,不过MediaPlayer使用时候注意他有个缓存机制,如果没有缓存视频是不能够播放的;这里实现了一个基于MediaPlayer实现自定义视频播放器,具有功能播放、暂停、停止、进度条调整视频播放进度等。案例是通过surfaceview来显示画面,用seekbar

2017-12-15 10:44:07 2246

原创 《android多媒体api》之camera配合surface预览相机画面和拍照

android开发自定义相机或者一些扫描功能的时候经常会遇到相机预览的问题了,这个必须获取相机然后将画面预览到手机界面上,那么输出界面用的就是surface控件。首先看看surfaceview是什么?SurfaceView是视图(View)的继承类,这个视图里内嵌了一个专门用于绘制的Surface。你可以控制这个Surface的格式和尺寸。Surfaceview控制这个Surface的绘制位置。surface

2017-12-14 15:21:41 1477

原创 《android多媒体api》之VideoView 视频播放控件

《android多媒体api》系列是整合梳理android开发中经常用到的媒体相关api;多媒体开发主要内容有音频、视频录制播放、摄像头操作、录制操作、流媒体、直播、推流、拉流等方面;最近几年移动直播和视频应用发展犹如雨后春笋一般直插云霄,呃。。好吧这段比喻可以不用看了!!,反正行业兴起肯定催生了很多多媒体相关应用开发程序员。那么怎样才能成为多媒体开发程序员,首先必须要熟练使用和了解android自

2017-12-14 14:55:50 4065

原创 《android framework常用api源码分析》之 app应用安装流程

android app安装时候基本原理都是通过adb底层来执行,但是用户操作的安装的时候一般都会有个安装界面并且有权限提示,点击安装的话就可以进行安装流程,那么今天就来分析安装流程中这些熟悉又陌生的系统安装app程序。上一篇文章中给大家分析了一下android系统启动之后调用PackageManagerService服务并解析系统特定目录,解析apk文件并安装的过程,这个安装过期实际上是没有图形界面的,底层调用的是我

2017-12-14 11:47:01 2215

原创 《android framework常用api源码分析》之系统app启动安装流程

如果是从事系统rom工作的同学这篇文章都不用看了,但是如果app应用开发的同学想了解一下系统app是如何安装就可以通过这篇文章了解一下;首先系统app也是普通app只是放置的目录是不一样,是系统预留好的,只要手机启动就可以扫描重新安装,能够在这个目录操作要么是做系统rom时候加入进去,要么就是获取超级用户su的权限,那么就可以把自己app放入系统apk目录做成系统app。

2017-12-13 18:05:32 791

原创 《android framework常用api源码分析》之app 进程启动流程

android是建立在linux kernel上面的系统,底层不仅省去了驱动适配问题也使用了很多linux系统的功能,例如进程通讯、权限管理等,其中包括今天要说的app进程,他对应也要启动一个对应linux进程。在android guide中有这样的一段关于android应用程序进程的描述:

2017-12-13 16:33:57 502

原创 《android framework常用api源码分析》之Launcher 程序

什么是Launcher app?做应用开发的同学平时应该接触不多,android系统桌面就是Launcher app,但是他也是一个普通的app应用程序,是用户交互的第一个程序。很多手机厂商都会修改系统的默认Launcher app和系统默认主题样式,就发展成现在百花齐放的android盛世。一个自己开发app应用启动就是通过点击应用图标启动起来,如果要分析启动流程那就先看看Launcher app。

2017-12-12 21:19:40 2218

原创 《android framework常用api源码分析》之SystemServer进程

SystemServer进程?SystemServer进程是系统服务进程,SystemServer进程主要的作用是在这个进程中启动各种系统级服务,比如ActivityManagerService,PackageManagerService,WindowManagerService服务,其实以及各种系统性的服务其实都是在SystemServer进程中启动的,而当我们的应用需要使用各种系统服务的时候其实也是通过与Sys

2017-12-12 17:34:32 595

原创 《android framework常用api源码分析》之Zygote进程

Zygote进程是什么? Zygote进程是android系统启动的第一个进程(不包括kernel层次的init进程),是所有的android进程的父进程,是一个根进程,包括SystemServer和各种应用进程都是通过Zygote进程fork出来的。Zygote(孵化)进程相当于是android系统的根进程,后面所有的进程都是通过这个进程fork出来的,而Zygote进程则是通过linux系统的init进程启动的

2017-12-12 15:34:53 456

原创 《android framework常用api源码分析》之LruCache内存缓存

缓存这个词在后台开发中间经常接触例如:模板缓存 、文件缓存、内存缓存、数据库缓存等。在android开发中也每天都在与缓存打交道,但是对于一般开发中一些开源框架给完成了缓存工作,所以接触也不是很多,例如最常见的图片缓存,app中有大量网络图片下载与缓存,而大部分图片框架都支持内存缓存和文件缓存(磁盘缓存)。注意:早期一些内存管理方案中有通过强、弱、软、续引用来管理缓存已经不再可靠,容易造成内存溢出。LruCac

2017-12-12 14:36:49 874

原创 《android framework常用api源码分析》之IntentService意图服务

什么是IntentService?本身继承了service,所以IntentService就是一个服务,只不过他内部实现了HandlerThread而且管理了service关闭,可以使调用这简单的调用用而不用关心他什么时候关闭;onHandleIntent是里面需要继承类实现的抽象方法,而他是在HandlerThread中执行所以在非ui线程,我们知道四大组件生命周期都是在主线程中执行,因为他们都是用handler机

2017-12-12 13:59:59 638

原创 《android framework常用api源码分析》之HandlerThread handler线程

HandlerThread是个什么东西?前面有分析handler机制,通过一个子线程run方法中调用Looper.prepare()创建消息队列和looper对象然后Looper.loop()然后就可以创建属于这个线程handler对象,而且可以使用handler进行线程通讯。HandlerThread就是封装这个机制的api。查看类的定义时有这样一段话:Handy class for starting

2017-12-12 13:29:13 685

原创 《android framework常用api源码分析》之AsyncTask异步任务

AsyncTask是使用非常方便的一个类,经常用于网络请求之后的ui更新。其原理是使用线程池执行futuretask完毕后调用handler机制更新ui。由于线程池是全局单例模式,而且是设定了同时执行线程数量只有一个,所以AsyncTask是按照顺序执行后台线程并且更新ui的。这是AsyncTask重要的特性。本文主要解析AsyncTask的的使用与源码。首先我们来看一下AsyncTask的基本使用:

2017-12-12 12:32:58 864

原创 《android framework常用api源码分析》之handler消息机制

android异步消息机制是非常重要的android机制,他属于三大机制之一,android三大机制包括view机制、binder进程通讯机制、handler消息机制。handler机制几乎贯穿与android所有地方,生命周期进程通讯之后回调,app运行之后主线程的消息looper、线程间的通讯等。所以我们来看看handler机制什么之处。

2017-12-12 12:05:48 796

原创 《android framework常用api源码分析》之apk打包过程解析

《android framework常用api源码分析》android生态在中国已经发展非常庞大了,一方面是因为手机移动端的覆盖,另一方面是从事android开发的人也月来越多。那么用人单位对android要求也变高了,对android不仅要熟练使用而且要懂得原理。而就程序员自身阅读源码有什么那些?这里我通过自己理解归纳了一下。1、提高程序执行效率,正确理解api可以高效使用,优化内存和执行效率。2

2017-12-12 11:48:01 1171

原创 RecyclerView 侧滑删除菜单 最简版 没有之一

网上有很多关于侧面滑动菜单的代码和文章,有的包含了很多功能,有的比较简单但是用起来有很多限制,修改起来比较坑多。 这里我写了一个最简版的侧面滑动功能,实现了主要的左滑菜单功能。先贴出代码: xml:<?xml version="1.0" encoding="utf-8"?><com.jared.helloffmpeg.MyRecyclerViewItem xmlns:android="http

2017-11-28 17:53:18 10783 7

原创 android jni

JNI(Java Native Interface) jni是java提供出来与c/c++代码交互的机制。什么情况下使用jni? 1、提供代码安全性,增加代码反编译难度时使用。 2、性能要求高的算法运算使用jni。 3、获取底层特性时候;java可能不能满足情况。 4、3d、视频直播技术、游戏等高端技术需要在c层实现的时候。Java基本数据类型与C语言基本数据类型的对应 jni中java

2017-10-18 16:00:12 404

原创 Cmake 常用命令

什么事cmake? cmake是具有跨平台特性的快速生成makefile、二进制中间文件等快速构建工具。常用命令:cmake_minimum_required (VERSION 2.6) 规定cmake程序的最低版本。这行命令是可选的,我们可以不写这句话,但在有些情况下,如果CMakeLists.txt文件中使用了一些高版本cmake特有的一些命令的时候,就需要加上这样一行,提醒用户升级到该版本

2017-10-18 12:30:41 474

原创 基于Tcp协议的socket例子 linux c语言

基于Tcp协议的socket例子 服务端://// Created by liyihang on 17-10-12.//#include <stdio.h>#include <stdlib.h>#include <errno.h>#include <string.h>#include <sys/socket.h>#include <sys/un.h>#include <sys/ty

2017-10-16 15:15:59 419

原创 c 语言 offsetof 函数

该宏返回值的类型是size_t,该类型成员的偏移值。例子:#include <stddef.h>#include <stdio.h>struct address { char name[50]; char street[50]; int phone;};int main(){ printf("name offset = %d byte in address struct

2017-10-12 16:23:18 3596 1

原创 linux pipe 管道简单例子

linux pipe 管道简单例子//// Created by liyihang on 17-9-25.//#include <sys/wait.h>#include <stdio.h>#include <stdlib.h>#include <unistd.h>#include <string.h>int main(int argc, char *argv[]){ int p

2017-10-12 15:05:34 1287

转载 Makefile 经典教程(看完这篇就够了,不信你拉拉进度条)

支持原创:http://blog.csdn.net/haoel/article/details/2886 makefile很重要 什么是makefile?或许很多Winodws的程序员都不知道这个东西,因为那些Windows的IDE都为你做了这个工作,但我觉得要作一个好的和professional的程序员,makefile还是要懂。这就好像现在有这么多的HTML的编辑器,但如果你想成为一个专业人

2017-09-28 16:58:03 4640

原创 android 事件分发机制详解(二)

Activity的Touch事件事实上是调用它内部的ViewGroup的Touch事件,可以直接当成ViewGroup处理。View在ViewGroup内,ViewGroup也可以在其他ViewGroup内,这时候把内部的ViewGroup当成View来分析。ViewGroup的相关事件有三个:onInterceptTouchEvent、dispatchTouchEvent、onTouchEvent

2017-09-15 17:26:55 362

原创 android 事件分发机制详解(一)

事件分发机制在android开发中是非常重要的部分,他是用户与手机沟通的桥梁之一;今天我们从应用返回流程开始来分析事件分发机制。从这篇文章中我们开始分析android系统的事件分发流程,其实网上已经有了很多关于android系统的事件分发流程的文章,奈何看了很多但是印象还不是很深,所以这里总结一番。 android系统的事件分发流程分为很多部分:Native层 –> ViewRootImpl层

2017-09-15 16:27:31 838

原创 android 关机流程解析

前面我们讲解了系统截屏按键处理流程,HOME按键处理流程,今天再来讲解一下电源开关机按键事件流程。 关机操作也是系统级别来接受处理的。和截屏按键、HOME按键的处理流程类似,电源按键由于也是系统级别的按键,所以对其的事件处理逻辑是和截屏按键、HOME按键类似,不在某一个App中,而是在PhoneWindowManager的dispatchUnhandledKey方法中。所以和前面两篇类似,这里我们

2017-09-15 15:14:02 2037 2

原创 android home键流程分析

上一篇文章中我们介绍了android系统的截屏事件,由于截屏事件是一种系统全局处理事件,所以事件的处理逻辑不是在App中执行,而是在PhoneWindowManager中执行。而本文我们现在主要讲解android系统中HOME按键的事件处理,和截屏事件类似,这里的HOME按键也是系统级别的按键事件监听,所以其处理事件的逻辑也应该和截屏事件处理流程类似,从上一篇文章的分析过冲中我们不难发现,系统级别的

2017-09-15 14:23:37 5584

原创 android 截图功能源码解析

一般没有修改rom的android原生系统截图功能的组合键是音量减+开机键;今天我们从源码角度来分析截图功能是如何在源码中实现的。在android系统中,由于我们的每一个Android界面都是一个Activity,而界面的显示都是通过Window对象实现的,每个Window对象实际上都是PhoneWindow的实例,而每个PhoneWindow对象都对应一个PhoneWindowManager对象,

2017-09-15 10:44:04 714

原创 android onLowMemory低内存回调方法详解

onLowMemory方法顾名思义就是在app内存低的时候回调,那么怎样才是内存低的标准,回调流程又是如何?我们一起带着问题去看源代码解析。 onLowMemory方法在Activity,Servier,ContentProvider,Application中都有回调,但是BroadcastReceiver没有这个回调。这里简单介绍一下Android系统的内存分配机制。Android系统中一个个的

2017-09-14 16:27:06 8124

原创 android onSaveInstanceState() onRestoreInstanceState() 详解

onCreate方法中有一个参数savedInstanceState是用来保存activity状态,可以在activity实例在后台回收后通过参数完成一下状态恢复。onSaveInstanceState方法则是在可以在销毁实例之前做一些保存参数处理的操作。我们已经分析过Activity的启动流程,从中也分析了Activity的生命周期。而其中有一个生命周期方法:onSaveInstanceStat...

2017-09-14 14:57:53 370

原创 android 异常处理流程源码分析

android 异常开发者最头疼的地方,了解异常的处理机制对我们开发来说常有帮助。系统在app应用进程运行的时候设置一个异常处理类:··· /* set default handler; this applies to all threads in the VM */ Thread.setDefaultUncaughtExceptionHandler(new U...

2017-09-14 14:11:33 1753

exoplayer 编译出来的ffmpeg扩展库aar

exoplayer 编译出来的ffmpeg扩展库aar,FFmpeg 模块提供 ,它使用 FFmpeg 进行解码 并且可以呈现以各种格式编码的音频。FfmpegAudioRenderer。 使用模块将aar加入项目libs。 按照上述说明进行检查后,构建并依赖 模块,下一步就是告诉ExoPlayer使用。如何 执行此操作取决于您使用的播放器 API:FfmpegAudioRenderer 如果要将 传递给 ,则 可以通过设置参数来启用使用模块 的构造函数。这将用于 播放(如果不支持输入格式)。通过以优先于 .DefaultRenderersFactoryExoPlayer.BuilderextensionRendererModeDefaultRenderersFactoryEXTENSION_RENDERER_MODE_ONFfmpegAudioRendererMediaCodecAudioRendererEXTENSION_RENDERER_MODE_PREFERFfmpegAudioRendererMediaCodecAudioRenderer 如果已子类化,则在 中的输出列表中

2023-07-24

FFmpegVideoPlayer.rar

SurfaceViewMediaPlayer-android基于ffmpeg本地视频、在线视频、直播播放器 支持rtmp、rtsp、http等协议;是从IPC摄像头管理提取出来,项目虽然说是一个播放器但是每个每个层面都是分开,例如可以做成p2p点到点媒体的传输和播放;每个api都可以独立当做工具类使用。

2020-09-11

android 插件式无刷新换肤和字体大小切换 兼容android 8.1

android 插件式无刷新换肤和字体大小切换 兼容android 8.1; theme_dome 为dome 案例工程;black_theme 皮肤包工程。

2018-07-19

空空如也

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

TA关注的人

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