- 博客(66)
- 资源 (8)
- 问答 (1)
- 收藏
- 关注
原创 Android音视频开发(一)音视频基础知识
前言最近工作方面没有太多事,所以难得有些空闲时间,针对当前音视频app的流行,为了不让自己淘汰,提升自己的专业能力,于是决定学习音视频开发相关知识,然而自己这方面却是一个小白,所以希望通过博客的形式记录下自己一步一步学习的过程,也希望能给这方面的新手一些借鉴。学习计划1.了解音视频的基础知识2.了解SurfaceView,TextureView的实现和使用3.Android平台...
2020-03-10 14:14:33 3862 2
原创 支持笔锋效果的手写签字控件
基于安卓的手写签字控件,支持笔锋github:https://github.com/GdinKing/HandWrite功能空白画板手写,田字格逐字手写 实现笔锋效果 支持橡皮擦,撤回/恢复,清空画布功能 画笔颜色大小设置 支持传入初始图片 画布大小设置,文字区域截取 主题颜色设置 支持传入初始显示图片 适配横竖屏布局示例用法请下载github源码参考示例...
2019-01-07 16:09:00 4818 6
原创 Java实现DES加密解密
DES(Data Encryption Standard)是一种对称加密算法,所谓对称加密就是加密和解密都是使用同一个密钥。加密原理:DES 使用一个 56 位的密钥以及附加的 8 位奇偶校验位,产生最大 64 位的分组大小。这是一个迭代的分组密码,使用称为 Feistel 的技术,其中将加密的文本块分成两半。使用子密钥对其中一半应用循环功能,然后将输出与另一半进行"异或"运算;接着交换这...
2018-11-09 16:27:01 99682 17
原创 Android开发性能优化总结(一)
安卓开发应用首先要讲究良好的用户体验,如果一款软件卡顿现象严重,不流畅,经常崩溃,那么将给用户带来极不良好的体验,从而损失用户。 在实际开发和学习中,我总结了一下关于安卓性能的优化,供大家参考交流。应用程序的性能问题体现在很多方面, 比如第一次启动速度慢,或者进入某一界面速度慢;动画执行过程不流畅,或者动画执行卡顿时间长;ListView列表滑动过程中卡顿,不流畅;应用程序自定义的某特定界面...
2016-04-17 16:04:32 33134 6
原创 安卓代码混淆指南
混淆代码能有效防止项目被反编译,同时还可以适当减少apk的大小,在实际开发过程中尤为重要,经过长时间的摸索,对代码混淆有了一定的了解,下面写下个人心得:1. 代码混淆的重要文件:proguard-rules.pro,如果你不小心删掉了,从其他地方复制一个或自己创建一个。2. 开启混淆:将build.gradle下的buildTypes->release->minifyEna...
2015-09-29 11:13:41 1700
原创 安卓JNI从0到1入门教程(三)
前面两篇博客介绍了jni相关内容,以及怎么在Android中简单使用,demo比较简单。这次来讲讲复杂一点的java和C/C++的互相调用。下面我们将要实现的功能是将Java对象传递给C++,然后用C++的对象接收值,最后把C++对象的值回传给Java层。
2023-07-13 14:35:50 635
原创 安卓JNI从0到1入门教程(二)
打开File-Settings-Tools-External Tools,添加新的工具,命名为ndk-build(随意命名),Program配置选择你的ndk所在的目录下的ndk-build.cmd,这个通常在你的AndroidStudio的安装目录下的ndk目录,Working directory填写项目的jni目录。控制台切换到jni目录下,也就是包含Android.mk和Application.mk的目录,执行ndk-build命令,成功后可以在libs文件夹下找到。
2023-07-10 16:24:01 546
原创 安卓JNI从0到1入门教程(一)
JNI(Java Native Interface)是Java编程语言提供的一种编程框架和技术,用于在Java应用程序中调用Native代码(通常是用C/C++编写的)以实现底层功能和与操作系统、硬件交互。JNI允许开发者编写用C/C++等本地语言编写的代码,然后通过JNI接口与Java代码进行交互。例如常见的音视频处理,图像处理,地图等等都会用到JNI。
2023-07-04 17:55:20 604
原创 在安卓中使用WebSocket
WebSocket是一种在Web浏览器和服务器之间进行实时双向通信的协议。与传统的HTTP请求-响应模型不同,WebSocket允许服务器主动向客户端推送数据,而不需要客户端发起请求。当然,发展到如今,WebSocket已经不再局限于Web浏览器了,也可以在移动应用、桌面应用上使用。
2023-06-20 10:00:52 5342 2
原创 Android低功耗蓝牙(BLE)开发(一)
BLE是指低功耗蓝牙(Bluetooth Low Energy),也被称为蓝牙4.0。它是蓝牙技术的一种变体,旨在消耗更少的电量,具有便携性,并且可以在无线传输距离较短的范围内实现低速数据传输。BLE技术已经广泛应用于智能家居、健康监测、物联网等场景中。
2023-06-16 11:28:31 3289
原创 Android低功耗蓝牙(BLE)开发(二)
在Android BLE通信中,如果要发送的数据大小超过MTU(最大传输单元)的限制,就需要进行数据分包处理。在上一篇文章中我们了解了BLE的相关概念,这里我们来实际用代码演示安卓进行BLE连接和通讯的功能。
2023-06-16 11:28:08 2965
原创 Java实现AES加密解密
AES(Advanced Encryption Standard)高级加密标准,是一种被广泛使用的对称加密算法,用于加密和解密数据。它曾经是美国政府的一个机密标准,但现在已成为公开的加密算法,并被广泛使用于商业、政府及军事领域。AES算法有三种不同的密钥长度:128位、192位和256位,每种长度有不同数量的轮数,其中128位密钥需要进行10轮加密,192位密钥需要进行12轮加密,256位密钥需要进行14轮加密。
2023-05-05 11:52:17 2184
原创 Android实现进程保活的思路
在Android应用程序中,为了保证应用的正常运行和稳定性,有时需要对进程进行保活。以下是一些实现进程保活的方法:使用前台服务:将服务调用startForeground()方法,并传入一个通知对象,将该服务置于前台运行状态。这样可以使得该服务的优先级更高,从而减少被系统杀死的概率。使用JobScheduler:使用这个API可以让应用程序以更低的功耗周期性地执行任务,从而避免长时间占用CPU资源。使用AlarmManager:使用这个API可以让应用程序在指定的时间间隔内执行任务。
2023-05-05 11:14:07 1333
原创 关于安卓10以上连接wifi无法联网的问题
在Android10之前应用内连接wifi是调用addNetwork和enableNetwork。但在Android10以后以上方法不会生效,在使用新api连接成功后,也可能无法访问外部网络。
2023-02-13 12:03:15 3219 2
原创 Android音视频开发(九)MediaCodec解码播放视频
简介MediaCodec是Android提供的用于对音视频进行编解码的类,即编码器/解码器组件。它通过访问底层的Codec来实现编解码的功能。是Android media基础框架的一部分,通常和 MediaExtractor, MediaSync, MediaMuxer, MediaCrypto, MediaDrm, Image, Surface和AudioTrack 一起使用,在视频播放和视频压缩编码中起到重要作用。官方文档工作流程整体的流程上看,MediaCodec编解码器是对输入数据进行处理然后
2020-05-28 14:32:51 2493
原创 微信小程序下拉刷新/上拉加载组件
简介一款基于官方组件scroll-view进行封装的支持上拉加载下拉刷新的微信小程序组件,需要基础库2.10.1及以上,项目地址:github预览在这里插入图片描述功能下拉刷新上拉加载支持自定义下拉样式支持自定义上拉加载样式使用示例{ "usingComponents": { "pull-refresh-view":"../components/pull-r...
2020-05-07 14:40:52 3439 4
原创 Android音视频开发(八)MediaExtractor
简介MediaExtractor,用于提取指定媒体文件的媒体信息的一个工具类。说白一点,就是可以利用它从一个视频文件中提取出视频的相关信息,例如视频轨道,音频轨道,时长,格式等等。MediaExtractor通常和MediaCodec一起使用,用于视频解码播放。说明在使用MeidaExtractor之前,我们先了解下一个视频文件的构成:音频数据视频图像数据(帧)文件信息,如大小,时...
2020-05-06 16:52:28 1024
原创 Android音视频开发(七)AudioTrack播放音频
之前我们介绍了AudioRecord是用于录制音频的,那么与之相对应,AudioTrack是用于播放音频的。简介AudioTrack类用于管理和播放单个音频资源。它允许将PCM音频缓冲区流传输到音频接收器以进行播放。AudioRecord录制PCM数据是通过“read”形式读入缓冲区,那么AudioTrack则是通过"write"形式从缓冲区输出。AudioTrack实例可以在两种模式下运行...
2020-04-29 11:11:39 984
原创 Android音视频开发(六)MediaRecorder录制视频
简介安卓api提供了Camera类控制相机捕获图像,在api21以后,安卓也提供了Camera2,Camera变得过时了,但为了兼容性,这里还是使用Camera。使用使用Camera进行拍照摄像前,你得先申请权限:<!-- 相机权限 --><uses-permission android:name="android.permission.CAMERA" />&l...
2020-03-31 17:01:03 603
原创 Android音视频开发(五)AudioRecord录制音频
简介AudioRecord是安卓多媒体框架中用于录制音频的工具。它支持录制原始音频数据,即PCM数据,PCM数据不能被播放器直接播放,需要编码压缩成常见音频格式才能被播放器识别。而原生api也提供了AudioTrack播放PCM数据。录音流程AudioRecord是通过read方式不断读取来自音源输入的数据流(字节流),进而把数据流保存成PCM数据。开始录音的时候,AudioRecord需...
2020-03-26 11:18:42 873
原创 Android音视频开发(四)MediaRecorder录制音频
Android中,音频的采集通常使用AudioRecord相关的API,下面我来介绍一下AudioRecord:
2020-03-25 10:34:25 446
原创 安卓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 736
原创 对安卓开发者的一些建议
发展现状Android系统最早正式发布在2008年,但正式开始兴起大概是在2009年,到了2012年左右,安卓已经发展迅猛,涌现一大批安卓开发者,然而随着市场的饱和态逐渐呈现,加上各种跨平台技术的出现,到了今天,很多安卓开发者的担忧也出现了,市场到底是供不应求还是供过于求?说实话,这个问题我很难回答,因为你说市场不需要安卓开发者了吗?需要,但需求量确实不怎么高。如今,纯安卓原生开发可谓是越...
2020-03-16 11:05:02 320
原创 Android音视频开发(三)TextureView
简介TextureView与SurfaceView类似,可用于显示视频或OpenGL场景。与SurfaceView的区别SurfaceView不能使用变换和缩放等操作,不能叠加(Overlay)两个SurfaceView。TextureView不会创建单独的窗口,而是充当常规View。此特点允许对TextureView进行移动,转换,设置动画等操作。例如,可以设置透明度。TextureV...
2020-03-16 10:04:58 1066
原创 Android音视频开发(二)SurfaceView
简介官方API文档介绍:SurfaceView是View的子类,它内嵌了一个专门用于绘制的Surface,你可以控制这个Surface的格式和尺寸,Surfaceview控制这个Surface的绘制位置。surface是纵深排序(Z-ordered)的,这表明它总在自己所在窗口的后面。SurfaceView提供了一个可见区域,只有在这个可见区域内的surface内容才可见。surface的排版...
2020-03-12 10:02:28 916
原创 安卓项目框架搭建:Jetpack+协程+Retrofit
本文将给大家演示如何在安卓项目使用协程+Retrofit进行网络请求,包含了异常的封装处理,可以用在一个商用产品架构上。1.引入依赖//使用协程implementation "org.jetbrains.kotlinx:kotlinx-coroutines-android:1.3.2"//OkHttpimplementation 'com.squareup.okhttp3:okht...
2019-12-11 14:03:58 1474
原创 kotlin代替findViewById的方法
在安卓项目使用了Kotlin之后,发现Kotlin一个相当强大的地方,可以不用findViewById,引入布局,直接使用控件方式一:使用kotlin插件自动生成引入kotlin扩展插件apply plugin: ‘kotlin-android-extensions’引入kotlin自动生成的相关布局文件import kotlinx.android.synthetic...
2019-12-03 16:26:07 6363 1
原创 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 461
原创 安卓架构组件实战——ViewModel+LiveData
在谷歌官方提供的安卓架构组件中,有ViewModel、LiveData、Lifecycle、DataBinding等,他们共同组成了一个完整的MVVM架构,实现了视图与业务逻辑分离,并且提供友好的生命周期管理。本文不会涉及到这些组件的原理解析,百度能找到一堆的我就不重复造轮子了,直接上干货教你如何使用。在使用这些组件之前,我们先来了解下MVVM:一、MVVMMVVM即Model(数据...
2019-11-29 17:19:54 851
原创 安卓架构组件实战——Lifecycle
注:本文涉及代码请看:项目源码Lifecycle是谷歌推出的一个架构组件,用于感知组件生命周期,并赋予了非组件对象感知生命周期的能力Lifecycle组件用来响应另一个组件的生命周期状态变化,例如Activity和Fragment,可以帮助非生命周期组件跟Activity、Fragment或Service的生命周期关联在一起,从而在不同生命周期内执行相应操作。其他说明请参考谷歌官网文档Li...
2019-11-28 11:22:19 392
原创 使用Kotlin+MVP+AndroidX搭建安卓项目框架
最近深入学习了下kotlin,发现还是挺不错的,特别是其中的协程,改变了以往我对安卓开发使用线程的习惯,这东西用起来方便,省去了使用java而产生的各种回调和主子线程通讯的麻烦,当然如果你习惯了Java,要转kotlin并使用协程改造你的项目,成本还是挺大的。谷歌正在用kotlin逐步取代Java,同时也在用androidx替代androidsupport包,而MVP也是这两年非常流行的设计模式...
2019-11-27 15:27:26 2547
原创 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 264
原创 安卓开发错误记录(一)
1.AndroidStudio在Debug模式下安装应用报错:INSTALL_FAILED_TEST_ONLYTEST_ONLY的意思就是版本仅仅用于测试,查看一些资料之后有种说法是项目中所用的编译器版本和gradle版本不能为alpha版本,需要降低gradle版本等,查看了外网的一些资料也有说使用用的插件以及依赖库中不能使用alpha版本、不能使用instant run功能。我是用的是...
2019-07-26 15:15:28 318
原创 安卓APK瘦身
安卓开发中,打包生成的APK大小对于开发者来说,其实并没有多大影响,但在面向用户时,APK的大小就很重要了,APK过大会导致用户下载需要耗费更多时间与流量,从而影响用户体验与产品推广,特别是那种频繁更新的应用。因此,减少APK大小很重要,下面我将介绍如何给APK瘦身:1.APK资源组成在对APK进行“瘦身‘前,我们先来了解下APK的组成,我们可以把一个apk解压,目录结构一般如下所示:...
2019-07-24 15:50:11 770
原创 AndroidStudio配置kotlin
Kotlin出来有很长一段时间了,作为一个安卓开发党之前一直在使用java,当我接触到kotlin时,顿时就被它惊艳到了,原来代码可以如此简洁!工欲善其事必先利其器,废话少说,接下来我就给大家介绍一下如何在AndroidStudio配置支持kotlin:首先,我使用的是AndroidStudio版本是3.4.1(老版本玩家能升级就升级吧,但要注意Gradle与项目的兼容性),AS3.0及以上版...
2019-07-19 14:25:02 3962 3
原创 垃圾代码是如何写出来的
自我参加工作已经有几年了,接手过的项目也不少,包括安卓端和web前端的,在做这些项目的过程中,相当一部分的项目到最后都出现了一个现象:代码越写越乱,维护性越来越差。究其原因,我认为有如下几点:1.程序员自身能力出现问题,首先得从自己身上找原因,这是我的第一想法。我们知道,一个项目基本不可能是完全由一个人开发的,这其中就涉及到协作开发,而且IT行业的跳槽还是比较频繁的,这就导致了一个项目可能...
2019-07-18 11:37:57 1900 1
原创 搭建基于XMPP的即时通讯系统
1 参考资料XMPP官网XMPP中文xmpp基本概念 (作者:RiverLi,来源:简书)Openfire官网Openfiregithub地址Openfire教程网Smack github地址2 即时通讯的相关知识2.1 即时通讯的概述即时通讯(Instant Messaging)是目前Internet上最为流行的通讯方式,各种各样的即时通讯软件也层出不穷;服务提供商也提...
2019-06-03 11:30:55 6283
原创 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 588
原创 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 6534 3
安卓VLC播放视频,提供录制和截图功能
2023-05-11
安卓日记本app源码
2015-05-01
VisualStudioCode能否调试安卓WebView?
2018-08-02
TA创建的收藏夹 TA关注的收藏夹
TA关注的人