
Android
文章平均质量分 90
顾修忠
我想要简单的生活,生活却不让我简单。
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Android音视频【六】视频数据存储方式YUV
人间观察这个社会很浮躁,千万不要考验人性在视频中的数据保存和传输都是YUV数据格式。主要是为了降低数据大小,如果用argb格式的数据,1px可能需要4个字节,而用YUV可能就需要1.5个字节。YUV简介与RGB类似,YUV也是一种颜色编码方法,主要用于视频领域,它将亮度信息(Y)与色彩信息(UV)分离,没有UV信息一样可以显示完整的图像,只不过是黑白的,比如这样的设计解决了彩色电视机与黑白电视的兼容问题。YUV,分为三个分量,“Y”表示的是明亮度(Luminance或Luma),也就是灰度值;.原创 2021-01-08 23:23:31 · 871 阅读 · 1 评论 -
Android音视频【二】 H264码流结构
人间观察因为穷,人会放弃体面: 个人形象的体面,工作的体面,社交的体面,尊严的体面。在分析H.264码流前,我们得得先获取一个H.264的码流,两种方法获取:一是自己写个代码编码为h264的码流(后续介绍),二是是直接从视频文件里抽取。我们这里采用方法二。当然也有其它方法。快手抖音的短视频/直播,毫无疑问采取的编码方式肯定是H.264和AAC生成的MP4封装格式的视频,我们下载一个mp4(可以看一下文件的简介中的编解码器是否是H.264,AAC),用如下ffmpeg命令抽取h264和aac://.原创 2020-12-19 13:05:00 · 2636 阅读 · 3 评论 -
Android音视频【一】H264编码基础
音视频编码解码就是指通过特定的压缩/解压技术,将某个音视频格式的数据转换为另一种音视频格式数据。目前在Android中的音视频用的最多的就是H264+aac的方式进行编码和解码,其实不止Android,H264在整个音视频领域都是使用最广泛的编码方式。H264是新一代的编码标准,以高压缩高质量和支持多种网络的流媒体传输。当然还有比H264更好的H265编码,H265是基于H264优化的。1.H264标准的演进国际上主流制定视频编解码技术的组织有两个,一个是国际电联(ITU-T),它制定的标准有H.261原创 2020-12-12 15:48:10 · 4341 阅读 · 8 评论 -
Android-JNI开发系列《十二》总结JNI知识体系
人间观察人啊不能读太多的书不能用圣人的话看这个世道不然会看走了眼本篇对jni知识体系的进行总结,本来是写完Android平台下的对mp3编解码后总结的,但是我想了下mp3编解码后续单独文章介绍会更好。大家平时可能都有一种体验,就是接受的知识都是被动的,经常是被看公众号,文章,视频,但都很杂且不成体系,看了就忘。或者压根就没有太多时间特别是工作996大小周的,导致自己完全被日常业务代码所困而没有太多的技术体系和深度和新技术的学习了解。所以我们要建立自己的知识体系才行,所谓知识体系就是给你一个.原创 2020-12-03 17:52:42 · 290 阅读 · 0 评论 -
Android-JNI开发系列《十一》实践-利用Android C源码实现GIF图片的播放
人间观察人往往都是多面性的,一个人的时候是一个样子,一群人的时候是另一个样子。声明此篇文章只为记录和学习JNI以及了解GIF的解码原理。借鉴了网上的有关gif文章介绍和代码。如果是自己学习,建议自己边敲一遍jni的代码,不要眼高手低。建议如果在项目中使用实现GIF的播放的功能,建议java版本glide的解码GIF或者c版本的https://github.com/koral–/android-gif-drawable为什么呢? 因为我测试了下多个gif文件用glide或者android-g.原创 2020-11-27 23:05:58 · 2522 阅读 · 2 评论 -
Android-JNI开发系列《十》实践利用libjpeg-turbo完美压缩图片不失真
人间观察步入社会后,你会发现,老人说的话都是对的。前面讲了些Android的jni知识和bitmap的实践,接下来几篇应该都是Android中jni的一些实践。这篇我们对Android中图片在jni层利用libjpeg-turbo进行大小压缩,并且压缩后不失真,清晰度和原图基本无差别。背景libjpeg开源的JPEG图像库,它使用非常广泛,Android也依赖libjpeg来压缩图片,但是Android不是直接使用libjpeg,而是基于一个叫Skia的开源项目来作为的图像处理引擎,Skia对l.原创 2020-11-21 10:18:14 · 4285 阅读 · 7 评论 -
Android-JNI开发系列《九》实战-Bitmap处理实现底片灰度化黑白化暖冷色调等效果
人间观察当你喜欢一个人的时候,总是小心翼翼的,笨笨的,傻傻的,生怕做错了什么,又怕不做什么~到此,Android中基本的JNI基础知识以及常见的基本操作差不多就基本讲完了。我们来实践一下,本文实现的是对Android Bitmap的处理: 对一张图片进行处理,照片底片效果,黑白化,灰度化,左右翻转,暖色,冷色,高斯模糊等等,市场上有很多这种处理图片的app,就看谁的算法足够厉害强大。效果图如下在Android中JNI层操作bitmap的需要链接系统的动态库nigraphics 图像库.原创 2020-11-07 16:49:32 · 849 阅读 · 0 评论 -
Android-JNI开发系列《八》CMakeLists.txt语法&使用
人间观察你说命重要还是钱重要,如果想不明白,去趟医院吧!技术在永远在不断的更新升级,Android也一样。目前在Android中的JNI开发都是采用的CMake进行编译c,c++代码构建项目,早期都是Android.mk、Application.mk文件来构建项目的。那CMake是啥呢?简单的说它是一个跨平台的编译工具,它可以用简单的配置文件就可以生成编译的中间产物(Makefile 或者 project 文件),然后用make生成可执行的文件。CMake官网地址 CMake官网在Andro.原创 2020-11-01 16:45:42 · 1917 阅读 · 0 评论 -
Android-JNI开发系列《七》补充jni与java的数据类型的对应关系和数据类型描述符
人间观察人只有不为生存而烦恼的时候,才会追求真正想要的东西。在前面的几篇文章中有涉及到Java和JNI的通信,比如异常回调,Java和JNI的互相调用等。其中都免不了在通信过程中需要知道Java基本数据类型,引用类型和JNI的对应关系以及基本数据类型,引用类型的类型描述符,才能够通信和使用。这个是很重要的,是基础,有必要单独来记录下。在 JNI 开发中,Java 的数据类型并不是直接在 JNI 里使用的,例如 int 就在JNI中是使用 jint 来表示的。数据类型对应基本数据类型:Jav.原创 2020-10-30 19:56:08 · 470 阅读 · 2 评论 -
Android-JNI开发系列《六》jni与java的交互
人间观察1024-程序员节愿各位程序员历尽千帆,归来仍是少年。这片文章本来不打算写的,因为在前面的文章多多少少的提到了jni和java的交互,但是为了让知识体系更健全写,还是梳理下,算是jni和java的在交互上的一个总结吧。两者的交互归纳起来主要就是两种。java调用jni。比如:传递基本数据,复杂对象等jni调用java。比如回调,异常,调用java方法/成员变量,构造java对象等等java调用jni-传到复杂对象到jni中我们新建一个java的对象,然后传递到jni中,在jn.原创 2020-10-24 14:43:55 · 1345 阅读 · 4 评论 -
Android-JNI开发系列《五》局部引用&全局引用&全局弱引用&缓存策略
人间观察好像什么都来得及,又好像什么都来不及。本篇文章主要介绍在jni开发中常见的三种引用的使用方法和注意事项以及jni和java交互的缓存策略。我们知道Java是一门纯面象对象的语言,除了基本数据类型外,其它任何类型所创建的对象的内存都存在堆空间中。内存由JVM 的GC(Garbage Collection)垃圾回收进行管理。但是对于c,c++中以及用c/c++编写的jni来说同样需要手动管理和处理内存,特别是引用类型的对象。malloc,realloc,free ,delete ,不像jav.原创 2020-10-17 17:03:15 · 2360 阅读 · 6 评论 -
Android-JNI开发系列《四》Native-Crash定位
人间观察你有多久没有十点之前睡过觉了。假期ing~~~在Android中进行JNI的开发的当然也会发生crash,而发生crash后比较难定位。因为jni是使用C/C++来进行开发的,熟悉C/C++语言的同学都知道,指针和内存申请的使用时需要自己申请和释放的,它不像java那样有jvm有垃圾回收管理机制gc,稍微管理不当就会导致问题。比如:内存地址访问错误、堆栈溢出、指针使用错误等等,最后都会导致程序崩溃。幸好Android NDK提供了一些工具来帮助精确定位到出问题的代码。我们模拟一下cr.原创 2020-10-10 09:50:46 · 1438 阅读 · 0 评论 -
Android-JNI开发系列《三》-异常处理
人间观察做个俗人,得之坦然,失之淡然,顺其自然吧!假期ing,~~~今天我们讲Android JNI下的异常处理,在java中有异常处理机制,在jni中也一样。回顾java异常我们知道在java中分为运行期异常和编译期异常。运行期异常时是程序在执行期间发生的异常,如果没有捕获可能导致程序不正常(轻者可能功能不正常,重则程序直接crash )。编译期异常是代码编译期间必须显示捕获的异常。throws Exception {} ,try{} catch{} finally{}今天我们不讲这.原创 2020-10-03 11:28:47 · 1233 阅读 · 1 评论 -
Android-JNI开发系列《二》-在jni层的线程中回调到java层
人间观察忽有故人心上头,回首山河已是秋。马上国庆+中秋了。万千的风景也比不上回家的美丽~~~今天我们看一个比较常见的场景:在java中处理一个高含量机密的代码/处理较复杂/耗时的数据(比如bitmap的特效处理),这时候就需要用c/c++实现。当在c/c++处理完后需要异步回调/通知到java中,这样代码看起来才很优雅有气质。如果你知道这个知识那就return吧。~~在Android中你可以用Thread+Handler很容易的来实现,我相信你闭着眼都能写了。但在jni层中不是这么简单的,我.原创 2020-09-26 11:15:00 · 3159 阅读 · 0 评论 -
Android-JNI开发系列《一》-动态库的函数注册
JNI-动态库的函数注册时光荏苒,距离上次的文章已经3年多了。那这3年干啥了呢?平凡生活,在人间凑数。来吧,展示!show me you code在Linux平台下so库分为动态库和静态库。表现形式以.so为后缀动态库和.a为后缀的静态库。关于这2个的有关知识这里不过多介绍,不是我们今天的重点。在动态库里函数注册分为2种:静态注册和动态注册。静态注册静态注册,你工作如果是与jni打交道。我们平时写的,写一个jni方法和它对应的头文件(方法名,参数进行对应)。调用的时候,这个调用的过程就是静态注册原创 2020-09-22 13:59:15 · 525 阅读 · 0 评论 -
Android 建立自己的手写笔画图案 Gesture Builder
/****************************************************大家都知道写博客会很累的,大热天的。希望=转载请注明出处:http://blog.youkuaiyun.com/ta893115871请不要可怜你的鼠标,(*^__^*) 嘻嘻……***************************************************/原创 2012-08-02 14:47:06 · 7222 阅读 · 2 评论 -
课堂笔记(一些知识散点)但很有用(*^__^*)
在android开发过程中,编写java代码中的常量过一般情况下,我们是定义在string.xml这个文件中。这样修改起来也很方便,而且做国际化也很简单。这个string.xml的值会被R文件映射,所以可以看到R文件全是定义为int类型,就像是一个地址指引一样。获取string.xml文件里面的值有几个不同的地方。1. 在AndroidManifest.xml与layout等xml文件原创 2012-04-13 18:22:12 · 1077 阅读 · 0 评论 -
android多Modle统一配置Gradle
android多Modle统一配置Gradle目前as使用gradle来配置项目工程,一般的项目为了模块话或者结构的清晰。 都会或多或少的使用多library(model)的方式。 so,问题来了。。。我想升级下项目的支持的最小版本,编译版本等(下面的代码),要改很多处,怎么办呢? compileSdkVersion 23 buildToolsVersion "23.0.2" de原创 2016-08-12 19:18:44 · 5849 阅读 · 0 评论 -
Android Studio 如何打JAR包
Android Studio 如何打JAR包在eclipse中我们知道如何将一个项目导出为jar包,供其它项目使用。 在AS中可以通过修改gradle才处理。 我们新建一个项目MakeJar,在项目中新建一个modle-类型为android-library 如图:app为我们的主工程,librarydemo是我们要将其生成jar包的model. 在library demo中的build.gr原创 2015-07-19 16:33:52 · 136392 阅读 · 85 评论 -
android自定义悬浮控件
最近很少写博客了,今天是2016年的第一天。 最近工作中用到了这个悬浮控件。 悬浮控件的实现方式有好几种,在这里使用android的事件分发机制来实现的,以及自定义控件的一些常规操作。 github地址:Github. 欢迎大家start,提bug原创 2016-01-01 21:07:44 · 7073 阅读 · 1 评论 -
android悬浮控件-仿360手机助手应用详情页
最近很少写博客了,今天是2016年的第一天。最近工作中用到了这个悬浮控件。悬浮控件的实现方式有好几种,在这里使用android的事件分发机制来实现的,以及自定义控件的一些常规操作。github地址:https://github.com/ta893115871/StickyNavLayout 欢迎大家start。原创 2016-01-01 23:14:41 · 5115 阅读 · 4 评论 -
android 内存泄漏总结
android 内存泄漏总结前言内存泄漏很危险。轻则卡顿,重则oom。 这种东西写代码的时候注意一下就能避免90%的内存泄漏, 只要写代码的时候遇到想一下你就可以避免了,免得后面为了找内存泄漏各种排查,得不尝试!! 最后会总结一下常见的内存泄漏。导致内存泄漏的原因总结来说就是: 本该被jvm回收的生命周期短对象却被生命生命周期长的对象直接或间接的所持有导致短对象无法释放。有种藕断丝连的感觉,原创 2017-04-04 12:36:56 · 1803 阅读 · 1 评论 -
Android面试总结
Android面试总结前提时间过的真是快啊,到16年底毕业马上就快3.5年了。先来说下我的经历吧, 毕业后进入一家小公司,因为农村出身当时没有多想就是希望在北京有一份工作。就找了一家面试就成功了。当时就是希望技术能够很快的提升钱多钱少真的不重要,没有太多的想法。当时老板说期望多少月薪我就说了3k(税前),每月所剩无几啊!没想到到年底公司倒闭了。当时老板好像是华为的销售出来创业的,感觉创业的钱都花在原创 2017-05-14 16:27:04 · 4609 阅读 · 2 评论 -
android 自定义view 水波纹进度球
如果你是老司机,一看标题就会就return吧,嘻嘻。 在我们的日常开发中自定义控件还是用的挺多的,设计师或者产品为了更好的漂亮,美观,交互都会做一些牛逼的ui效果图,但是最后实现的还是我们程序员啊。 所以说 自定义view你还是得会的。 要开车了哦,请刷卡… 滴,老司机卡 滴,学生卡 滴,… 今天我们要实现的没有太多交互性的view,所以就继承view。 自定义view的套路,套原创 2016-08-18 23:11:14 · 7413 阅读 · 5 评论 -
解决安卓TextView高度和textSize大小不一致问题
在设计安卓界面的时候我发现一个TextView在布局上占用的高度和属性textSize的大小不一样,要比textSize要来的大(比如textSize=”12dp”,实际的高度大概有14-16dp),仔细看的话会发现文字的上方和下发留有空白includeFontPadding=”false”,TextView默认上下是有一定的padding的, 有时候我们可能不需要上下这部分留白,加上它即可。原创 2015-08-07 18:03:21 · 12223 阅读 · 0 评论 -
SQlite Android数据库的应用 Android SQLite 简易的学生成绩管理系统
/***********************************************************************大家都知道写博客会很累的,大热天的希望转载请注明出处:http://blog.youkuaiyun.com/ta893115871请不要可怜你的鼠标,(*^__^*) 嘻嘻……**************************************原创 2012-07-20 21:24:28 · 14963 阅读 · 112 评论 -
Android 制定安装重写迁移至SD卡 APP2SD
/**********************************************************大家都知道写博客会很累的,希望转载请注明出处:http://blog.youkuaiyun.com/ta893115871请不要可怜你的鼠标,(*^__^*) 嘻嘻……*******************************************************原创 2012-07-12 13:48:54 · 2702 阅读 · 0 评论 -
《一》Android 数据库 SQlite SQLiteOpenHelper
/*大家都知道写博客会很累的,大热天的。希望=转载请注明出处:http://blog.youkuaiyun.com/ta893115871请不要可怜你的鼠标,(*^__^*) 嘻嘻……*/众所周知,数据库是很重要的。市面上的大大小小的软件差不多都要用到数据库。在Android中数据库为SQlite,因为小巧便捷,占用的空间少,易于操作。使用很受欢迎。数据库不外乎查询(query)新原创 2012-07-20 10:09:26 · 2073 阅读 · 0 评论 -
《二》Android 数据库 SQlite SQLiteOpenHelper
/****************************************************大家都知道写博客会很累的,大热天的。希望=转载请注明出处:http://blog.youkuaiyun.com/ta893115871请不要可怜你的鼠标,(*^__^*) 嘻嘻……***************************************************/源原创 2012-07-20 10:27:01 · 2914 阅读 · 1 评论 -
Android 模拟机键盘不可用的问题 !!
/*大家都知道写博客会很累的,希望转载请注明出处:http://blog.youkuaiyun.com/ta893115871请不要可怜你的鼠标,(*^__^*) 嘻嘻……*/ 你可能在创建完android AVD后发现模拟器上的键盘不可以。就像下面的红色区域不可用: 问题在于你创建AVD时没有硬件的支持。《一》打开Eclipse ->Window->AVD Mana原创 2012-07-12 14:20:12 · 1354 阅读 · 0 评论 -
Android requires compiler compliance level 5.0 or 6.0. Found '1.7' instead. Please use Android Tool
问题描述:Android requires compiler compliance level 5.0 or 6.0. Found '1.7' instead. Please use Android Tool . 因为以前的Eclipse,ADT,SDK,JDK,版本太低,所以前两天去官网下载了这些的最高版本。配置成功后,添加原本项目时却出现了错误!Android requir原创 2012-06-29 12:36:53 · 1588 阅读 · 0 评论 -
Android中在SurfaceView上高效绘图
Android的大多数控件都是继承自View的,因此在自定义控件时一般也是继承View类,但是对于高效的,游戏级别的绘图,或者是播放器等要求比较高的地方,普通的View类就有点吃不开了,这个时候就要用到SurfaceView类。因为比较高级,所以就该装B,单纯一个继承自SurfaceView类是不行的,必须实现一个SurfaceHolder.Callback接口来指明SurfaceView原创 2012-04-13 18:02:54 · 2070 阅读 · 0 评论 -
Android 完整地操作数据库--日记本实例
在上一个例子中,我们对Android系统自带的SQLite数据库进行了初步的学习,了解了一些增、删、改、查的基本工作。在这一节的例子当中,我们做了一个非常简便的日记本程序,虽然没有完善,但是已经是基本可以使用了。在例子当中,我们不但要对数据库进行增、删、改、查的操作,而且还要把数据库当中的数据显示在一个ListView当中,通过对ListView的操作,实现对数据的增、删、改、查操作。通过这个转载 2012-04-13 18:01:59 · 9024 阅读 · 1 评论 -
Android 记忆卡片游戏 记忆力 Android游戏 Android记忆卡片游戏源代码
欢迎下载哦!支持各种屏幕,各种版本!!!!!!!只是我上传时,没有写好呵呵!!!游戏APK爱卓网下载地址:http://www.iandroid.cn/goods-1316445.html OR AppChina应用汇下载地址:http://www.appchina.com/app/com.cn.MemoryCard/如需源代码:请联系我QQ:893115871原创 2012-04-13 18:05:21 · 3373 阅读 · 1 评论 -
蓝牙通信-打开和关闭蓝牙设备
蓝牙(BlueTooth)要求的最低版本是android2.0,由于Android模拟器不支持蓝牙,运行蓝牙的有关应用必须在真机上测试运行。蓝牙是一种重要的短距离无线通信协议,广泛应用于各种设备(手机,医疗,汽车等)。蓝牙是比较常用的无线通信设备,早研究成为手机的标配。在Android中,与蓝牙有关的类和接口在android.bluetooth包中。其中BluetoothAdapter是蓝原创 2013-03-29 12:15:08 · 21122 阅读 · 2 评论 -
蓝牙通信-如果允许本地蓝牙被附近的其它蓝牙设备发现
如果本地的蓝牙设备可以被附近的其它蓝牙设备发现,可以使用下面的方法,代码中有注释。当然需要你的蓝牙设备设置一下,可以被附近的蓝牙设备检测到(一般为2分钟)在设置-蓝牙中-选中可检测性复选框。我的数据时android4.1.1,手机厂家不同或版本不同,可能有所不同。eg:JAVA:代码:package com.example.enabling_discoverabil原创 2013-03-29 12:30:59 · 11667 阅读 · 1 评论 -
Android高级模糊技术
Android高级模糊技术 这里只是备注一下 这是网上的一个地址:http://blog.jobbole.com/63894/重点内容下面这个代码修复了github上有些手机崩溃的问题 并增加了一个处理整个图片的Fragment 代码地址:http://download.youkuaiyun.com/detail/ta893115871/8655295转载 2015-05-02 23:25:13 · 3059 阅读 · 0 评论 -
Android高效加载大图、多图解决方案,有效避免程序内存溢出现象
好久没有写博客了,今天就先写一个小的关于在Android中加载大图如何避免内存溢出的问题。后面会写如何使用缓存技术的核心类,android.support.v4.util.LruCache来加载图片。直接上代码:package com.example.oom_demo1;import android.os.Bundle;import android.app.Activ原创 2013-10-30 22:08:08 · 6165 阅读 · 0 评论 -
Android音乐播放器
自己用4个下午的时间+4个晚上上半夜的时间+1次吃泡面的时间=Android音乐播放器。Apk下载地址:点击打开链接亲...听歌只需甩甩手机哦,亲...欢迎下载.源代码下载地址:点击打开链接V1.0好长时间没有写博客了前几天有人要源代码下载地址:点击打开链接V2.0功能简介:时尚,新潮,不可少的Android音乐播放器1.该音乐播放器有关图片来源于网络,如有原创 2013-04-08 21:28:33 · 4080 阅读 · 4 评论 -
解决:Bitmap too large to be uploaded into a texture exception
简单说就是硬件加速的时候,对图片的大小有限制。不同设备可能有不同的最大值。这个问题悲催的地方是,程序貌似没有捕获到这个exception, 结果是程序也不报错,图片也显示不出来。只有看debug log才能发现这个error message.一个解决的方法是禁止硬件加速,简单粗暴:有关比较好的解决方法是类似google map的实现:将图片分成不同的块,每次加载转载 2013-06-06 23:33:27 · 25167 阅读 · 4 评论