自定义博客皮肤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)
  • 资源 (8)
  • 问答 (1)
  • 收藏
  • 关注

原创 Android音视频开发(一)音视频基础知识

前言最近工作方面没有太多事,所以难得有些空闲时间,针对当前音视频app的流行,为了不让自己淘汰,提升自己的专业能力,于是决定学习音视频开发相关知识,然而自己这方面却是一个小白,所以希望通过博客的形式记录下自己一步一步学习的过程,也希望能给这方面的新手一些借鉴。学习计划1.了解音视频的基础知识2.了解SurfaceView,TextureView的实现和使用3.Android平台...

2020-03-10 14:14:33 627

原创 支持笔锋效果的手写签字控件

基于安卓的手写签字控件,支持笔锋github:https://github.com/GdinKing/HandWrite功能空白画板手写,田字格逐字手写 实现笔锋效果 支持橡皮擦,撤回/恢复,清空画布功能 画笔颜色大小设置 支持传入初始图片 画布大小设置,文字区域截取 主题颜色设置 支持传入初始显示图片 适配横竖屏布局示例用法请下载github源码参考示例...

2019-01-07 16:09:00 3015 5

原创 Android开发性能优化总结(一)

安卓开发应用首先要讲究良好的用户体验,如果一款软件卡顿现象严重,不流畅,经常崩溃,那么将给用户带来极不良好的体验,从而损失用户。 在实际开发和学习中,我总结了一下关于安卓性能的优化,供大家参考交流。应用程序的性能问题体现在很多方面, 比如第一次启动速度慢,或者进入某一界面速度慢;动画执行过程不流畅,或者动画执行卡顿时间长;ListView列表滑动过程中卡顿,不流畅;应用程序自定义的某特定界面...

2016-04-17 16:04:32 30619 5

原创 安卓代码混淆指南

混淆代码能有效防止项目被反编译,同时还可以适当减少apk的大小,在实际开发过程中尤为重要,经过长时间的摸索,对代码混淆有了一定的了解,下面写下个人心得:1. 代码混淆的重要文件:proguard-rules.pro,如果你不小心删掉了,从其他地方复制一个或自己创建一个。2. 开启混淆:将build.gradle下的buildTypes->release->minifyEna...

2015-09-29 11:13:41 776

原创 Android音视频开发(九)MediaCodec解码播放视频

简介MediaCodec是Android提供的用于对音视频进行编解码的类,即编码器/解码器组件。它通过访问底层的Codec来实现编解码的功能。是Android media基础框架的一部分,通常和 MediaExtractor, MediaSync, MediaMuxer, MediaCrypto, MediaDrm, Image, Surface和AudioTrack 一起使用,在视频播放和视频压缩编码中起到重要作用。官方文档工作流程整体的流程上看,MediaCodec编解码器是对输入数据进行处理然后

2020-05-28 14:32:51 396

原创 微信小程序下拉刷新/上拉加载组件

简介一款基于官方组件scroll-view进行封装的支持上拉加载下拉刷新的微信小程序组件,需要基础库2.10.1及以上,项目地址:github预览在这里插入图片描述功能下拉刷新上拉加载支持自定义下拉样式支持自定义上拉加载样式使用示例{ "usingComponents": { "pull-refresh-view":"../components/pull-r...

2020-05-07 14:40:52 1183 2

原创 Android音视频开发(八)MediaExtractor

简介MediaExtractor,用于提取指定媒体文件的媒体信息的一个工具类。说白一点,就是可以利用它从一个视频文件中提取出视频的相关信息,例如视频轨道,音频轨道,时长,格式等等。MediaExtractor通常和MediaCodec一起使用,用于视频解码播放。说明在使用MeidaExtractor之前,我们先了解下一个视频文件的构成:音频数据视频图像数据(帧)文件信息,如大小,时...

2020-05-06 16:52:28 154

原创 Android音视频开发(七)AudioTrack播放音频

之前我们介绍了AudioRecord是用于录制音频的,那么与之相对应,AudioTrack是用于播放音频的。简介AudioTrack类用于管理和播放单个音频资源。它允许将PCM音频缓冲区流传输到音频接收器以进行播放。AudioRecord录制PCM数据是通过“read”形式读入缓冲区,那么AudioTrack则是通过"write"形式从缓冲区输出。AudioTrack实例可以在两种模式下运行...

2020-04-29 11:11:39 173

原创 Android音视频开发(六)MediaRecorder录制视频

简介安卓api提供了Camera类控制相机捕获图像,在api21以后,安卓也提供了Camera2,Camera变得过时了,但为了兼容性,这里还是使用Camera。使用使用Camera进行拍照摄像前,你得先申请权限:<!-- 相机权限 --><uses-permission android:name="android.permission.CAMERA" />&l...

2020-03-31 17:01:03 116

原创 Android音视频开发(五)AudioRecord录制音频
原力计划

简介AudioRecord是安卓多媒体框架中用于录制音频的工具。它支持录制原始音频数据,即PCM数据,PCM数据不能被播放器直接播放,需要编码压缩成常见音频格式才能被播放器识别。而原生api也提供了AudioTrack播放PCM数据。录音流程AudioRecord是通过read方式不断读取来自音源输入的数据流(字节流),进而把数据流保存成PCM数据。开始录音的时候,AudioRecord需...

2020-03-26 11:18:42 201

原创 Android音视频开发(四)MediaRecorder录制音频

Android中,音频的采集通常使用AudioRecord相关的API,下面我来介绍一下AudioRecord:

2020-03-25 10:34:25 76

原创 安卓7.0报错android.os.FileUriExposedException

最近在开发过程中遇到了这样一个错误,android.os.FileUriExposedException: file:///storage/emulated/0/xxx/xxx.doc exposed beyond app through Intent.getData()出现这个问题是在使用Intent附带uri打开sd卡下的doc文件,而在Android 7.0后,应用使用StrictMo

2020-03-23 16:49:00 123

原创 关于安卓开发者未来何去何从的思考

发展现状Android系统最早正式发布在2008年,但正式开始兴起大概是在2009年,到了2012年左右,安卓已经发展迅猛,涌现一大批安卓开发者,然而随着市场的饱和态逐渐呈现,加上各种跨平台技术的出现,到了今天,很多安卓开发者的担忧也出现了,市场到底是供不应求还是供过于求?说实话,这个问题我很难回答,因为你说市场不需要安卓开发者了吗?需要,但需求量确实不怎么高。如今,纯安卓原生开发可谓是越...

2020-03-16 11:05:02 135

原创 Android音视频开发(三)TextureView

简介TextureView与SurfaceView类似,可用于显示视频或OpenGL场景。与SurfaceView的区别SurfaceView不能使用变换和缩放等操作,不能叠加(Overlay)两个SurfaceView。TextureView不会创建单独的窗口,而是充当常规View。此特点允许对TextureView进行移动,转换,设置动画等操作。例如,可以设置透明度。TextureV...

2020-03-16 10:04:58 392

原创 Android音视频开发(二)SurfaceView
原力计划

简介官方API文档介绍:SurfaceView是View的子类,它内嵌了一个专门用于绘制的Surface,你可以控制这个Surface的格式和尺寸,Surfaceview控制这个Surface的绘制位置。surface是纵深排序(Z-ordered)的,这表明它总在自己所在窗口的后面。SurfaceView提供了一个可见区域,只有在这个可见区域内的surface内容才可见。surface的排版...

2020-03-12 10:02:28 433

原创 安卓MVVM—kotlin协程与Retrofit

本文将给大家演示如何在安卓项目使用协程+Retrofit进行网络请求,包含了异常的封装处理,可以用在一个商用产品架构上。1.引入依赖//使用协程implementation "org.jetbrains.kotlinx:kotlinx-coroutines-android:1.3.2"//OkHttpimplementation 'com.squareup.okhttp3:okht...

2019-12-11 14:03:58 586

原创 kotlin代替findViewById的方法

在安卓项目使用了Kotlin之后,发现Kotlin一个相当强大的地方,可以不用findViewById,引入布局,直接使用控件方式一:使用kotlin插件自动生成引入kotlin扩展插件apply plugin: ‘kotlin-android-extensions’引入kotlin自动生成的相关布局文件import kotlinx.android.synthetic...

2019-12-03 16:26:07 460

原创 Kotlin与DataBinding使用注意事项

在使用kotlin开发的安卓项目中,开启DataBinding步骤如下:1.在app的build.gradle的android配置项下添加如下:dataBinding{ enabled = true}2.在app的build.gradle中引入:apply plugin: 'kotlin-kapt'3.在dependencies中添加:kapt 'com....

2019-12-03 16:07:36 211

原创 安卓架构组件实战——ViewModel+LiveData

在谷歌官方提供的安卓架构组件中,有ViewModel、LiveData、Lifecycle、DataBinding等,他们共同组成了一个完整的MVVM架构,实现了视图与业务逻辑分离,并且提供友好的生命周期管理。本文不会涉及到这些组件的原理解析,百度能找到一堆的我就不重复造轮子了,直接上干货教你如何使用。在使用这些组件之前,我们先来了解下MVVM:一、MVVMMVVM即Model(数据...

2019-11-29 17:19:54 336

原创 安卓架构组件实战——Lifecycle

注:本文涉及代码请看:项目源码Lifecycle是谷歌推出的一个架构组件,用于感知组件生命周期,并赋予了非组件对象感知生命周期的能力Lifecycle组件用来响应另一个组件的生命周期状态变化,例如Activity和Fragment,可以帮助非生命周期组件跟Activity、Fragment或Service的生命周期关联在一起,从而在不同生命周期内执行相应操作。其他说明请参考谷歌官网文档Li...

2019-11-28 11:22:19 102

原创 使用Kotlin+MVP+AndroidX搭建安卓项目框架

最近深入学习了下kotlin,发现还是挺不错的,特别是其中的协程,改变了以往我对安卓开发使用线程的习惯,这东西用起来方便,省去了使用java而产生的各种回调和主子线程通讯的麻烦,当然如果你习惯了Java,要转kotlin并使用协程改造你的项目,成本还是挺大的。谷歌正在用kotlin逐步取代Java,同时也在用androidx替代androidsupport包,而MVP也是这两年非常流行的设计模式...

2019-11-27 15:27:26 950

原创 AndroidStudio使用小技巧

1.自动导包打开File->Settings->Editor->General->Auto Import,勾选:(如下图)Add unambiguous imports on the fly Optimize imports on the fly(for current project)即可在写代码的时候自动引入类所在的包。2.类文件注释模版...

2019-11-25 15:24:41 86

原创 安卓开发错误记录(一)

1.AndroidStudio在Debug模式下安装应用报错:INSTALL_FAILED_TEST_ONLYTEST_ONLY的意思就是版本仅仅用于测试,查看一些资料之后有种说法是项目中所用的编译器版本和gradle版本不能为alpha版本,需要降低gradle版本等,查看了外网的一些资料也有说使用用的插件以及依赖库中不能使用alpha版本、不能使用instant run功能。我是用的是...

2019-07-26 15:15:28 75

原创 安卓APK瘦身

安卓开发中,打包生成的APK大小对于开发者来说,其实并没有多大影响,但在面向用户时,APK的大小就很重要了,APK过大会导致用户下载需要耗费更多时间与流量,从而影响用户体验与产品推广,特别是那种频繁更新的应用。因此,减少APK大小很重要,下面我将介绍如何给APK瘦身:1.APK资源组成在对APK进行“瘦身‘前,我们先来了解下APK的组成,我们可以把一个apk解压,目录结构一般如下所示:...

2019-07-24 15:50:11 342

原创 AndroidStudio配置kotlin

Kotlin出来有很长一段时间了,作为一个安卓开发党之前一直在使用java,当我接触到kotlin时,顿时就被它惊艳到了,原来代码可以如此简洁!工欲善其事必先利其器,废话少说,接下来我就给大家介绍一下如何在AndroidStudio配置支持kotlin:首先,我使用的是AndroidStudio版本是3.4.1(老版本玩家能升级就升级吧,但要注意Gradle与项目的兼容性),AS3.0及以上版...

2019-07-19 14:25:02 500

原创 垃圾代码是如何写出来的

自我参加工作已经有几年了,接手过的项目也不少,包括安卓端和web前端的,在做这些项目的过程中,相当一部分的项目到最后都出现了一个现象:代码越写越乱,维护性越来越差。究其原因,我认为有如下几点:1.程序员自身能力出现问题,首先得从自己身上找原因,这是我的第一想法。我们知道,一个项目基本不可能是完全由一个人开发的,这其中就涉及到协作开发,而且IT行业的跳槽还是比较频繁的,这就导致了一个项目可能...

2019-07-18 11:37:57 435

原创 搭建基于XMPP的即时通讯系统

1 参考资料XMPP官网XMPP中文xmpp基本概念 (作者:RiverLi,来源:简书)Openfire官网Openfiregithub地址Openfire教程网Smack github地址2 即时通讯的相关知识2.1 即时通讯的概述即时通讯(Instant Messaging)是目前Internet上最为流行的通讯方式,各种各样的即时通讯软件也层出不穷;服务提供商也提...

2019-06-03 11:30:55 3200

原创 Android6.0-9.0版本适配攻略

众所周知,Android版本更新飞快,各个版本都有一些新的特性增加,这就出现了许多坑,导致了开发者要不断进行适配,下面我就来谈谈从Android6.0到Android9.0主流特性的适配过程。Anrdoid 6.01.动态权限Android 6.0最大的更改就是动态权限申请,详细的说明请查看我的另一篇博客:Android开发之Android6.0权限管理2.弃用HttpClient...

2018-12-10 11:53:13 214

原创 Java实现DES加密解密

DES(Data Encryption Standard)是一种对称加密算法,所谓对称加密就是加密和解密都是使用同一个密钥。加密原理:DES 使用一个 56 位的密钥以及附加的 8 位奇偶校验位,产生最大 64 位的分组大小。这是一个迭代的分组密码,使用称为 Feistel 的技术,其中将加密的文本块分成两半。使用子密钥对其中一半应用循环功能,然后将输出与另一半进行"异或"运算;接着交换这...

2018-11-09 16:27:01 41238 3

原创 Openfire+Spark安装教程

1. 下载OpenFire和Spark,注意Spark下载第一个带JRE的,Spark2.8.3默认使用32位的Jre环境,如果你已经安装了64位的jdk会安装不了。下载地址:http://igniterealtime.org/downloads/index.jsp2. Openfire需要配合数据库使用,我这里选择了MySQL,下载安装MySQL 5.7,因为Openfi...

2018-08-28 14:12:55 4467 3

原创 Android 7.0应用间文件共享

最近在开发过程中遇到了这样一个错误,android.os.FileUriExposedException: file:///storage/emulated/0/xxx/xxx.doc exposed beyond app through Intent.getData() 出现这个问题是在使用Intent附带uri打开sd卡下的doc文件,而在Android 7.0后,应用使用 StrictMod

2017-09-19 13:58:49 502

原创 安卓MVP设计模式

一、概述 对于MVP设计模式,我相信大部分安卓开发者都应该听过,可到底MVP是怎么样的,或许很多人也没有实践过,今天,我就带大家走进MVP的使用。 1、MVP是什么? Model-view-presenter,简称MVP,是软件设计中一种对针对MVC模式,再审议后所延伸提出的一种软件设计模式。 MVP的使用有助于实现程序结构分离,解耦。Model 定义程序的业务逻辑和实体模型。 View

2017-03-10 15:27:28 449

原创 安卓开发规范

很多安卓新手都很容易出现一个问题:代码结构乱七八糟,可读性相当差。作为新手,他们可能觉得把功能实现了就行,却不知道怎么优化代码结构,提升可读性。在此,我分享下个人的一些经验。一、包结构设计首先,主包名设计:一般是公司的官网域名倒写加上项目名英文简写,例如com.google.xxx,如果是个人开发的项目,可以参考AndroidStudio默认生成的包名,com.example.xxx。...

2017-03-08 11:15:17 406

原创 Android 6.0权限管理

安卓6.0之后出现了新的应用授权管理方式,允许app动态获取权限,针对一些危险权限,必须要动态授权,危险权限如下: <!-- 危险权限 --> <!--联系人--> <uses-permission android:name="android.permission.READ_CONTACTS"/> <uses-per...

2016-11-01 16:00:55 471

原创 Android开发之调整手机音量

调整手机的各种音量可以通过AudioManager这个类来操作注:安卓手机各种音量的最大数值不一样,请通过下面具体的方法获取最大音量值。涉及的参数说明: streamType类型:(音量类型) STREAM_ALARM 提示音 STREAM_MUSIC 音乐音量即多媒体音量 STREAM_NOTIFICATION 窗口顶部状态栏Notification, STREAM_RING 铃声 S

2016-10-26 10:08:49 12847

原创 Android开发之调节屏幕亮度

Android开发之调节屏幕亮度在很多app中进入二维码显示界面时会自动调整屏幕亮度,那么如何实现调节app的屏幕亮度呢?下面我来为大家介绍:注:调节屏幕亮度的核心思想就是对安卓系统提供的ContentProvider进行操作1、声明权限 需要允许用户修改系统配置 <uses-permission android:name="android.permission.CHANGE_CONFIG

2016-10-26 09:38:50 4747

原创 Android开发性能优化总结(二)

接上一篇《Android开发性能优化总结(一)》一、安卓UI性能检测与优化UI是安卓应用程序与用户打交道的最直接途径,UI设计的好不好,直接影响到用户的体验,如果没有达到他们心目中的自然流畅细节,用户要是能够感觉出来,少则影响心情,多则卸载应用;所以一个应用的UI显示性能问题就不得不被开发人员重视。1.UI卡顿常见原因:在UI线程中做了耗时操作,导致UI线程卡顿; 布局La...

2016-04-24 17:06:02 8421

原创 PendingIntent详解

pending表示即将发生或来临的事情,我们知道,Intent是安卓内部组件传递信息的媒介,而PendingIntent 可以看作是对Intent的包装,通常通过getActivity,getBroadcast ,getService来得到pendingintent的实例,当前activity并不能马上启动它所包含的intent,而是在外部执行 pendingintent时,调用intent的。正由

2016-04-10 22:47:56 670

转载 Java对象的四种引用类型

参考博客:http://my.oschina.net/Bruce370/blog/511707在JDK 1.2以前的版本中,若一个对象不被任何变量引用,那么程序就无法再使用这个对象。也就是说,只有对象处于可触及(reachable)状态,程序才能使用它。从JDK 1.2版本开始,把对象的引用分为4种级别,从而使程序能更加灵活地控制对象的生命周期。这4种级别由高到低依次为:强引用、软引用、弱引用和虚引

2016-04-03 20:18:27 9608

原创 安卓缓存-LruCache介绍

在Android中,有一个叫做LruCache类专门用来做图片缓存处理的。 它有一个特点,当缓存的图片达到了预先设定的值的时候,那么近期使用次数最少的图片就会被回收掉。 我们来看看它的源码(注意是在android.support.v4.util下):package android.support.v4.util;import java.util.LinkedHashMap;import jav

2016-04-02 18:59:18 890

支持笔锋效果的安卓手写签字控件

Android平台原生手写签字控件,功能强大的开源项目,支持空白画布手写,田字格逐字手写,撤销/恢复,橡皮擦,画笔设置等功能,支持笔锋效果。

2018-12-28

安卓日记本app源码

这是一个小型日记本应用,个人觉得挺适合初学者学习,因为用到的技术都是安卓的基础知识。 用到的知识有:文件读写,java中MD5加密、Intent跳转与传值、SQLite保存数据、自定义标题、自定义对话框、自定义ListView适配器、ListView的数据绑定及item选中处理事件

2015-05-01

爱上猜歌——安卓源代码

一款安卓猜歌类游戏,不错的安卓UI设计,使用了安卓动画、SQLite、文件读写,微信分享等功能。虽然有些代码写得有点凌乱,但还是很适合初学者学习使用。

2015-04-27

jquery-easyui-1.4.1

jquery-easyui-1.4.1,一款集成多个Jquery插件的工具,方便程序员开发漂亮的网页界面

2015-01-10

DiagramDesigner画图

一款方便简单易用的E-R图画图工具,轻量级,实用

2015-01-10

SQLiteExpert

SQLite数据库辅助工具,方便管理安卓生成的数据库文件

2015-01-10

安卓开发中文文档

安卓开发中文文档,为安卓开发人员提供支持,值得拥有,还是中文版哟

2015-01-10

植物大战僵尸网页版

植物大战僵尸的网页版,采用JS+HTML+CSS设计

2015-01-10

空空如也

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

TA关注的人 TA的粉丝

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