android开发
文章平均质量分 80
aqi00
好好做技术,认真写博文
展开
-
【送书活动】《FFmpeg开发实战:从零基础到短视频上线》迎新送书啦
其中,第1~5章是基础部分,主要讲解FFmpeg的环境搭建、FFmpeg的开发基础、FFmpeg的编解码、FFmpeg处理图像和FFmpeg处理音频;值此《FFmpeg开发实战:从零基础到短视频上线》出版上架之际,即日起特推出送书活动,凡购买《FFmpeg开发实战:从零基础到短视频上线》且符合下列条件的朋友,可获赠图书《Android App开发进阶与项目实战》一本。《FFmpeg开发实战:从零基础到短视频上线》随书提供了9大实战项目,其中包括卡拉OK音乐短片、桌面影音播放器、仿剪映的视频剪辑等实用工具。原创 2024-04-13 08:00:00 · 532 阅读 · 4 评论 -
《Android Studio开发实战 从零基础到App上线(第3版)》资源下载和内容勘误
下面是《Android Studio开发实战 从零基础到App上线(第3版)》一书用到的工具和代码资源:1、本书使用的Android Studio版本为Android Studio Dolphin(小海豚版本),最新的安装包可前往。2、本书使用的Android NDK版本为r23b,最新的安装包可前往。3、本书提供所有示例源码的demo工程下载,源码(适配Android5.0到Android12)的下载方式见该书前言末尾的二维码,获取ppt课件同样扫描前言末尾的二维码。原创 2023-04-05 08:00:00 · 9672 阅读 · 35 评论 -
Android开发笔记(一百九十)增强了日志功能的第二版Logcat
从Android Studio Dolphin开始,查看应用日志的Logcat全面升级,堪称Logcat 2.0版本。下面就让我们看看LogcatV2.0究竟带来了什么新特性吧。对于Android Studio的老用户来说,小海豚版本新出的LogcatV2.0在用法上有不小的差异,一开始会让人比较茫然。有些老用户可能更习惯之前的Logcat,可以通过以下办法关闭LogcatV2.0,重新启用旧的Logcat功能。原创 2022-12-30 08:00:00 · 1169 阅读 · 0 评论 -
《Android App开发进阶与项目实战》资源下载和内容勘误
下面是《Android App开发进阶与项目实战》一书用到的工具和代码资源:1、本书使用的Android Studio版本为4.2,最新的安装包可前往。2、本书提供所有示例源码的demo工程下载,源码(适配Android4.4到Android11)的下载方式见该书前言末尾的二维码,获取ppt课件同样扫描前言末尾的二维码。最新的源码也可访问我的github获取,github地址是,服务端的github地址是。原创 2022-12-10 09:00:00 · 1101 阅读 · 0 评论 -
参加CSDN编程竞赛,赢取《Android Studio开发实战:从零基础到App上线(第3版)》 实体书
《Android Studio开发实战:从零基础到App上线(第3版)》是一部Android开发的实战教程,由浅入深、由基础到高级,带领读者一步一步走进App开发的神奇世界。参加CSDN编程竞赛,排名第 1 - 3 名的参赛者可获得欧阳燊老师@aqi00赞助的亲笔签名实体书《Android Studio开发实战:从零基础到App上线(第3版)》× 1。转载 2022-12-01 08:00:00 · 790 阅读 · 1 评论 -
《Android Studio开发实战 从零基础到App上线(第3版)》出版后记
可以这么说,《Android Studio开发实战 从零基础到App上线(第3版)》是国内第一本基于Android12和Android Studio Dolphin编写的安卓书籍,因此第3版的读者学到的就是目前最新的安卓开发。第3版还着力描述了App开发的几个热门方向,例如在线直播涉及到的WebRTC、WebSocket、原始音频、视频通话等,人工智能涉及到的语音识别、语音合成、人脸识别、活体检测等,物联网涉及到的NFC、红外、低功耗蓝牙、快速扫码等。现在看第3版的图书,学习安卓开发就更方便了。原创 2022-11-20 13:03:30 · 3559 阅读 · 4 评论 -
Android开发笔记(一百八十九)利用LAME录制MP3音频
无论是普通音频的amr和aac格式,还是原始音频的pcm格式,都不能在电脑上直接播放,也不能在苹果手机上播放,因为它们属于安卓手机的定制格式,并非通用的音频格式。若想让录音文件放之四海而皆能播放,就得事先将其转为通用的MP3格式,虽然Android官方的开发包不支持MP3转换,不过借助第三方的LAME库,能够将原始音频转存为MP3文件。原创 2022-11-07 08:00:00 · 1250 阅读 · 2 评论 -
Android开发笔记(一百八十八)工作管理器WorkManager
Android11不光废弃了AsyncTask,还把IntentService一起废掉了,对于后台的异步服务,官方建议改为使用工作管理器WorkManager。其实除了IntentService之外,Android也提供了其它后台任务工具,例如工作调度器JobScheduler、闹钟管理器AlarmManager等等。当然这些后台工具的用法各不相同,徒增开发者的学习时间而已,于是乎谷歌索性把它们统一起来,在Jetpack库中推出了工作管理器WorkManager。原创 2022-10-25 08:00:00 · 1639 阅读 · 0 评论 -
Android开发笔记(一百八十七)利用估值器实现弹幕动画
如今上网看电影电视越发流行了,追剧的时候经常看到视频上方数行评论向左边飘去,犹如子弹那样飞快掠过,这些评论文字因此得名“弹幕”。弹幕评论由正在观看的网友们即兴发表,故而连绵不绝从画面右端不断涌现,直到漂至画面左端才隐没消失。原创 2022-09-21 01:00:00 · 425 阅读 · 0 评论 -
Android开发笔记(一百八十六)管理SQLite的利器——应用检查器App Inspection
从Android Studio Bumblebee开始,Android Studio正式全面开启了数据库管理功能。首先确保已经安装了最新版的Android Studio Bumblebee,打开电脑上的Android Studio,并通过USB数据线连接待调试的设备(设备上同时启动待调试的应用)。然后依次选择菜单“View”→“Tool Windows”→“App Inspection”,Android Studio界面下方会弹出“App Inspection”窗口。...原创 2022-09-01 14:00:00 · 2287 阅读 · 0 评论 -
Android开发笔记(一百八十五)使用设备浏览器Device File Explorer导出存储卡的文件
只要打开了手机的USB调试功能,还是有办法拿到测试应用的数据文件。在上图所示的窗口中依次展开各级目录,一路进到/data/data/com.example.chapter06/shared_prefs,在该目录下看到了参数文件share.xml。原创 2022-08-15 01:00:00 · 1213 阅读 · 0 评论 -
Android开发笔记(一百八十四)利用TBS浏览各种文档
虽然使用POI库可以解析并显示Office文档,但这需要开发者自己搭个服务器,确实多有不便。倘若只是简单的浏览文档内容,完全可以利用第三方的开发包直接渲染,比如腾讯的TBS服务(全称Tencent Browser Service,即腾讯浏览服务)。通过集成TBS服务,App能够直接打开下列文件格式:doc、docx、ppt、pptx、xls、xlsx、pdf、txt、epub,可谓中小开发者的一大福音。TBS官网的接入说明网址为https://x5.tencent.com/docs/access.htm.原创 2022-04-14 01:00:00 · 1344 阅读 · 1 评论 -
Android开发笔记(一百八十三)利用HMS轻松扫描二维码
扫描二维码是HMS的一项基础服务,虽然谷歌公司也提供了zxing扫码框架,但是zxing框架的集成步骤不够简洁,而且它的识别速度偏慢,识别准确率也不高,远不如HMS的扫码服务来得好用。下面介绍如何在App工程中集成HMS的扫码服务。原创 2022-03-17 01:00:00 · 1612 阅读 · 2 评论 -
Android开发笔记(一百八十二)使用CameraX录像
通过CameraX实现录像功能的话,初始化相机的步骤与拍照时大同小异,区别在于增加了对视频捕捉器VideoCapture的处理。需要修改的代码主要有三个地方,分别说明如下。第一个地方是在AndroidManifest.xml里补充声明录音权限,完整的权限声明配置如下所示:<!-- 相机 --><uses-permission android:name="android.permission.CAMERA" /><!-- 录音 --><uses-perm原创 2022-02-16 01:00:00 · 1999 阅读 · 9 评论 -
Android开发笔记(一百八十一)使用CameraX拍照
常言道,眼睛是心灵的窗户,那么相机便是手机的窗户了,主打美颜相机功能的拍照手机大行其道,可见对于手机App来说,如何恰如其分地运用相机开发至关重要。Android的SDK一开始就自带了相机工具Camera,从Android5.0开始又推出了升级版的camera2,然而不管是初代的Camera还是二代的camera2,编码过程都比较繁琐,对于新手而言有点艰深。为此谷歌公司在Jetpack库中集成了增强的相机库CameraX,想让相机编码(包括拍照和录像)变得更加方便。CameraX基于camera2开发,它原创 2022-02-11 01:00:00 · 3043 阅读 · 3 评论 -
Android开发笔记(一百八十)使用Glide加载特殊图像
Android从9.0开始增加了新的图像解码器ImageDecoder,该解码器支持直接读取GIF文件的图形数据,结合图形工具Animatable即可在图像视图上显示GIF动图。虽然通过ImageDecoder能够在界面上播放GIF动画,但是一方面实现代码有些臃肿,另一方面在Android9.0之后才支持,显然不太好用。现在有了Glide,轻松加载GIF动图不在话下,简简单单只需下面一行代码:Glide.with(this).load(R.drawable.happy).into(iv_cover)原创 2022-01-20 01:00:00 · 1323 阅读 · 0 评论 -
Android开发笔记(一百七十九)避免方法数过多的问题
一个大规模的App工程,往往引入了数量繁多的第三方开发库,其中既有官方的Jetpack库,也有第三方厂商的开源包。有时候运行这种App会报错“Cannot fit requested classes in a single dex file (# methods: 65894 > 65536)”,意思是App内部引用的方法数量超过了65536个,导致App异常退出。原来Android的每个App代码都放在一个dex文件中,系统会把内部方法的索引保存在一个链表结构里,由于这个链表的长度变量是short原创 2022-01-12 01:00:00 · 445 阅读 · 0 评论 -
Android开发笔记(一百七十八)更安全的数据仓库DataStore
虽然SharedPreferences用起来比较方便,但是在一些特殊场景会产生问题。比如共享参数保存的数据较多时,初始化共享参数会把整个文件加载进内存,加载耗时可能导致主线程堵塞。又如调用apply方法保存数据时,频繁apply容易导致线程等待超时。为此Android官方推出了数据仓库DataStore,并将其作为Jetpack库的基础组件。DataStore提供了两种实现方式,分别是Preferences DataStore 和Proto DataStore,前者采用键值对存储数据,后者采用自定义类型存储原创 2021-12-30 13:28:50 · 2187 阅读 · 6 评论 -
《Android App开发进阶与项目实战》出版后记
《Android App开发入门与项目实战》刚写完,我马上着手编写它的姊妹篇《Android App开发进阶与项目实战》,因为开发入门一书比较基础,还需要一本讲解高级开发与新技术的进阶书籍。App开发入门与App开发进阶两本图书同时也是对《Android Studio开发实战 从零基础到App上线(第2版)》的全面升级,堪称《Android Studio开发实战》的第3版。开发实战原有16章内容,而App开发入门有15章,App开发进阶有13章,两本相加总共28章,比起开发实战足足多出了12章内容,可谓原创 2021-11-04 03:00:00 · 1572 阅读 · 3 评论 -
Android开发笔记(一百七十七)借助FileProvider安装应用
除了发送彩信需要文件提供器,安装应用也需要FileProvider。不单单彩信的附件图片能到媒体库中查询,应用的APK安装包也可在媒体库找到。查找安装包依然借助于内容解析器,具体的实现过程和查询图片类似,比如事先声明如下的对象变量:private List<ApkInfo> mApkList = new ArrayList<ApkInfo>(); // 安装包列表private Uri mFilesUri = MediaStore.Files.getContentUri("e原创 2021-11-02 01:00:00 · 646 阅读 · 1 评论 -
Android开发笔记(一百七十六)借助FileProvider发送彩信
通过系统相册固然可以获得照片的路径对象,却无法知晓更多的详细信息,例如图片名称、文件大小、文件路径等等都不知道,也就无法进行个性化的定制开发。为了把更多的文件信息开放出来,Android设计了专门的媒体共享库,允许开发者通过内容组件从中获取更详细的媒体信息。就图片而言,相册媒体库的路径为MediaStore.Images.Media.EXTERNAL_CONTENT_URI,于是通过内容解析器即可从媒体库依次遍历得到图片列表详情。为便于代码管理,首先要声明如下的对象变量:private List&l原创 2021-10-27 01:00:00 · 808 阅读 · 0 评论 -
《Android App开发入门与项目实战》资源下载和内容勘误
下面是《Android App开发入门与项目实战》一书用到的工具和代码资源:1、本书使用的Android Studio版本为4.1,最新的安装包可前往。2、本书提供所有示例源码的demo工程下载,源码(适配Android4.4到Android11)的下载方式见该书前言末尾的二维码,获取ppt课件同样扫描前言末尾的二维码。最新的源码也可访问我的gitee获取。原创 2021-06-07 14:42:29 · 3200 阅读 · 13 评论 -
Android开发笔记(一百七十五)利用Room简化数据库操作
虽然Android提供了数据库帮助器,但是开发者在进行数据库编程时仍有诸多不便,比如每次增加一张新表,开发者都得手工实现以下代码逻辑:1、重写数据库帮助器的onCreate方法,添加该表的建表语句;2、在插入记录之时,必须将数据实例的属性值逐一赋给该表的各字段;3、在查询记录之时,必须遍历结果集游标,把各字段值逐一赋给数据实例;4、每次读写操作之前,都要先开启数据库连接;读写操作之后,又要关闭数据库连接;上述的处理操作无疑存在不少重复劳动,数年来引得开发者叫苦连连。为此各类数据库处理框架纷纷涌现,原创 2021-06-01 10:30:16 · 844 阅读 · 4 评论 -
5G时代的Android App开发入门与项目实战
随着移动互联网的持续发展,Android系统从智能手机逐步拓展到平板电脑、智能电视、车载大屏、智能家居、智能手表等诸多设备,Android开发依然是前景可期的IT岗位。当然,整个社会正在迈向5G时代,这对新手学习Android开发构成了不小的挑战,如果新手仍旧按照几年前的Android书籍学习,就会发现学完之后学不到什么新技术。即使是Android初中级工程师,可能局限于平时的工作内容,也不容易接触新理念新潮流。在5G时代,Android App开发需要发挥5G优势给用户带来新体验、增添新功能、用得更省原创 2021-03-26 13:16:23 · 1150 阅读 · 0 评论 -
Android开发笔记(一百七十四)图像解码器ImageDecoder
早期的Android只支持三种图像格式,分别是JPEG、PNG和GIF,虽然这三类图片都能在ImageView上显示,但对于GIF格式来说,图像视图仅能显示动图的初始画面,无法直接播放动画效果。此外,由于JPEG、PNG和GIF三兄弟历史悠久,当时的图像压缩算法不尽完美,并且手机摄像头的分辨率越来越高,导致一张高清照片动辄几M乃至十几M大小,使得手机的存储空间越发吃紧,这也要求更高效的压缩算法。目前智能手机行业仅剩安卓和iOS两大阵营,为了争夺移动互联网时代的技术高地,两大阵营的盟主纷纷推出新的图像压缩算原创 2021-03-03 12:15:50 · 2876 阅读 · 0 评论 -
《Android App开发入门与项目实战》出版后记
《Android Studio开发实战:从零基础到App上线》自面世以来,承蒙众多朋友的抬爱,该书一直保持不错的销量,其中第一版的出货量突破一万,第二版的出货量即将突破两万。对于一个程序员来说,这是对其劳动成果的极大肯定。 回想五年多前我在CSDN输出技术文章,当时仅仅是想分享自己的学习经验,又怎么会料到成为技术书籍的作者呢?首先要感谢CSDN网站,不但给技术人提供了展露才华的平台,而且我的博客专栏 《Android开发笔记》曾被放在CSDN首页数月之久,CSDN编辑正是我写作道路上的第一位伯乐。其原创 2021-01-03 18:02:29 · 2355 阅读 · 3 评论 -
Android开发笔记(一百七十三)给安装包APK文件瘦身
App不但要求功能完善,其他方面也得综合考虑,比如APK安装包的文件大小就是很重要的因素。具备同样功能的两个安装包,一个很大很占用空间,另一个较小不怎么占空间,用户的选择结果自然不言而喻。如何减少打包后的APK文件大小,也就是所谓的APK瘦身,这涉及到很多技术手段,最常用的主要有四块:去除冗余功能、精简无用资源、减少图片大小、过滤无用的so文件,分别介绍如下:一、去除冗余功能每当开发者创建新的Android项目,打开模块的AndroidManifest.xml,看到默认的application节点是原创 2020-09-07 22:22:34 · 892 阅读 · 1 评论 -
Android开发笔记(一百七十二)第二代翻页视图ViewPager2
正如RecyclerView横空出世取代ListView和GridView那样,Android也推出了二代翻页视图ViewPager2,打算替换原来的翻页视图ViewPager。与ViewPager相比,ViewPager2支持更丰富的界面特效,包括但不限于下列几点:1、不但支持水平方向翻页,还支持垂直方向翻页;2、支持RecyclerView.Adapter,允许调用适配器对象的notifyItem***方法,从而动态刷新某项视图;3、除了当前页,也支持展示左右两页的部分区域;4、支持在翻页过程中原创 2020-06-23 22:44:24 · 2049 阅读 · 3 评论 -
Android开发笔记(一百七十一)使用Glide加载网络图片
如何方便而又快速地显示网络图片,一直是安卓网络编程的热门课题,前些年图片缓存框架Picasso、Fresco等等大行其道,以至于谷歌按捺不住也开发了自己的Glide开源库。由于Android本身就是谷歌开发的,Glide与Android系出同门,因此Glide成为事实上的官方推荐图片缓存框架。不过Glide并未集成到Android的SDK当中,开发者需要另外给App工程导入Glide库,也就是修改模块的build.gradle,在dependencies节点内部添加如下一行依赖库配置: impl..原创 2020-05-25 22:31:51 · 2265 阅读 · 0 评论 -
Android开发笔记(一百七十)给App的应用页面注册快捷方式
元数据不单单能传递简单的字符串参数,还能传送更复杂的资源数据,从Android7.1开始新增的快捷方式便用到了这点,譬如在手机上桌面长按支付宝图标,会弹出如下图所示的菜单。点击菜单项“扫一扫”,直接打开支付宝的扫码页面;点击菜单项“付钱”,直接打开支付宝的付款页面;点击菜单项“收钱”,直接打开支付宝的收款页面。如此不必打开支付宝首页,即可迅速跳转到常用的App页面,这便是所谓的快捷方式。那么Android7.1又是如何实现快捷方式的呢?那得再琢磨琢磨元数据了。原来元数据的meta-data标签除了前原创 2020-05-10 22:57:25 · 932 阅读 · 0 评论 -
Android开发笔记(一百六十九)利用BottomNavigationView实现底部标签栏
在Android Studio上创建官方默认的首屏标签页面很方便,首先右击需要添加标签栏的模块,在弹出的右键菜单中依次选择“New”——“Activity”——“Bottom Navigation Activity”,弹出下图所示的活动创建页面。在创建页面的“Activity Name”一栏填写新活动的名称,再单击页面右下角的Finish按钮,Android Studio就会自动创建该活动的...原创 2020-04-25 12:20:02 · 2439 阅读 · 0 评论 -
Android开发笔记(一百六十八)为应用绑定通知渠道并展示消息角标
为了分清消息通知的轻重缓急,从Android8开始新增了通知渠道,并且必须指定通知渠道才能正常推送消息。一个应用允许拥有多个通知渠道,每个渠道的重要性各不相同,有的渠道消息在通知栏被折叠成小行,有的渠道消息在通知栏展示完整的大行,有的渠道消息甚至会短暂悬浮于屏幕顶部,有的渠道消息在推送时会震动手机,有的渠道消息在推送时会发出铃声,有的渠道消息则完全静默推送,这些提示差别都有赖于通知渠道的特征管理。...原创 2020-04-12 16:44:49 · 2015 阅读 · 2 评论 -
Android开发笔记(二)颜色的使用
颜色的编码Android中颜色值的定义是由透明度alpha和RGB(红绿蓝)三原色来定义的,有八位十六进制数与六位十六进制数两种编码,例如八位FFEEDDCC,前两位FF表示透明度,后面两位EE表示红色的浓度,再后面两位表示绿色的浓度,最后两位表示蓝色的浓度。透明度为FF时表示完全不透明,为00时表示完全透明。六位编码默认不透明(即透明度为FF),博主经常把透明度弄反了,所以着重记一下。原创 2015-11-30 17:12:59 · 5988 阅读 · 4 评论 -
Android开发笔记(二十六)Java的容器类
容器的分类集合(Set/HashSet)集合中的元素是没有顺序的,而且不可以重复。这意味着,集合只能遍历而无法通过索引访问指定元素,并且如果重复添加相同值将不会增大集合。因为Set只是接口,所以实际用的是它的一个派生类HashSet。集合的常用方法如下:add : 添加元素clear : 清空容器contains : 判断容器中是否存在该元素iterator : 获取第原创 2015-12-24 14:50:11 · 3838 阅读 · 0 评论 -
Android开发笔记(五十二)通知推送Notification
PendingIntent准备工作复习一下PendingIntent,前面的博文《Android开发笔记(五十)定时器AlarmManager》已经提到了它。PendingIntent意即延迟的Intent,主要用于非立即响应的通信场合。上回的博文,博主介绍了PendingIntent的用法,下面再列出有用到它的场合:1、用于定时器AlarmManager,处理时刻到达后的提醒动作2、原创 2016-01-19 10:32:43 · 2545 阅读 · 0 评论 -
Android开发笔记(五十三)远程接口调用AIDL
AIDL概述AIDL全称是“Android Interface Definition Language”,即Android的接口定义语言。AIDL用来协助开发者来处理进程间通信,在之前的博文《Android开发笔记(五十一)通过Messenger实现进程间通信》中,我们知道可以使用Messenger完成进程间通信。但是Messenger每次调用都只能传递一个消息包,不能很好的完成一些复杂的调用原创 2016-01-19 16:32:10 · 1976 阅读 · 0 评论 -
Android开发笔记(四十五)手势事件
手势事件的流程基本手势事件基本的手势事件主要有如下三个方法:dispatchTouchEvent : 判断该事件是否需要下发。返回true表示需要下发给下级视图,返回false表示不需要下发(交给自身的onTouchEvent处理)。但是否最终下发,还需根据onInterceptTouchEvent的拦截结果。onInterceptTouchEvent : 判断当前容器是否需要拦截原创 2016-01-12 15:58:32 · 3591 阅读 · 0 评论 -
Android开发笔记(八)神奇的shape
shape意即形状,是Android中描述规则几何图形的定义,ShapeDrawable其实就是Drawable的一个子类。用好shape,可以让APP页面不再呆板;用好shape,可以节省不小的美工工作量。shape的定义文件是xml,以shape元素为根节点。根节点下定义了六个节点:corners(圆角)、gradien(渐变)、padding(间隔)、size(尺寸)、solid原创 2015-12-02 17:16:34 · 4684 阅读 · 0 评论 -
Android开发笔记(五)日期的处理
日期格式转换文本字符串的处理,数字格式是第一常见的,日期格式就是第二常见的了。日期的格式转换,主要是四种:Date转String、String转Date、Date转Calendar、Calendar转Date。 Date转String,先设置要转换的日期格式,再做格式化,代码如下:SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMd...原创 2015-11-24 14:04:33 · 5371 阅读 · 13 评论 -
Android开发笔记(一)像素的单位
像素类型老子曾说“天下难事必作于易,天下大事必作于细”,其实Android开发也是如此。博主一开始学android的时候,对像素单位不知其所以然,只知一根筋的填数字,结果在模拟器上跑好好的界面,拿到真机上就显示得东倒西歪,害得自己使劲的找bug,这都是没打好基础的缘故呀。所以一开始就把像素这种基础概念弄清楚,后面会少走很多弯路,开发起来也会更加得心应手。android支持如下像素单位:px原创 2015-11-25 16:01:03 · 12681 阅读 · 6 评论