Android点滴
文章平均质量分 92
超低空MC
WeChat: hust-MC
华中科技大学 | 硕士 腾讯资深架构师 | 慕课高级讲师
展开
-
关于Handler你不知道的事
提到Handler,我们都会想到可以用来在子线程给UI线程发送消息,常用来子线程刷新UI。而往深了问,你一定还知道Handler会绑定到一个Looper,而每个Looper会和一个MessageQ关联,从而达到向指定线程发送消息的功能。除此之外,还了解多少?提到,就不得不聊到Android的消息处理机制。原创 2024-07-31 11:14:38 · 727 阅读 · 0 评论 -
你真的了解广播吗?
PAG是由腾讯推出的一套完整的动效工作流解决方案,目标是降低或消除动效相关的研发成本,能够一键将设计师在AE中制作的动效内容导出成素材文件,并快速上线应用于几乎所有的主流平台。设计师在 AE 上设计出动画后,可以通过导出插件导出 Pag 文件,同时可以在桌面端预览工具中实时预览效果,还可以通过桌面端进行性能检测。PAG 可以支持 Android、iOS、web、mac OS、Windows 和 Linux,涵盖了业界常用的终端平台,支持 AE 动画实时渲染、运行时编辑。原创 2024-07-31 11:08:21 · 386 阅读 · 0 评论 -
Android Gradle —— 从 Groovy 快速迁移到 Kotlin DSL
Kotlin 脚本 (KTS) 比 Groovy 更适合用于编写 Gradle 脚本,因为采用 Kotlin 编写的代码可读性更高,并且 Kotlin 提供了更好的编译时检查和 IDE 支持。Android Gradle 插件 4.0 支持在 Gradle build 配置中使用 KTS。本页介绍了有关将 Android 应用的 Gradle build 文件从 Groovy 转换为 KTS 的基本信息。我们建议您按照所列顺序执行这些步骤。另请参阅 Gradle 的和。原创 2024-07-20 22:32:08 · 1792 阅读 · 1 评论 -
腾讯PAG动效工具解析
PAG是由腾讯推出的一套完整的动效工作流解决方案,目标是降低或消除动效相关的研发成本,能够一键将设计师在AE中制作的动效内容导出成素材文件,并快速上线应用于几乎所有的主流平台。设计师在 AE 上设计出动画后,可以通过导出插件导出 Pag 文件,同时可以在桌面端预览工具中实时预览效果,还可以通过桌面端进行性能检测。PAG 可以支持 Android、iOS、web、mac OS、Windows 和 Linux,涵盖了业界常用的终端平台,支持 AE 动画实时渲染、运行时编辑。原创 2024-07-17 10:55:12 · 1354 阅读 · 0 评论 -
车载音视频App框架设计
统一播放器提供媒体播放一致性的交互和视觉体验,减少各个媒体应用和场景独自开发的重复工作量,实现媒体播放链路的一致性,减少碎片化的Bug。本文面向应用开发者介绍如何快速接入媒体播放器。要功能:1. 新设计的统一播放UI组件,视频支持的手势操作,包括左右滑拖动进度、左上下滑调节亮度、右上下滑调节音量、双击暂停/播放,同时对外暴露了长按手势接口应用可以实现类似快进快退功能;2. 支持方控、Mini播放器、PSD的播控和状态显示,应用只需要申请媒体中心权限的license即可,支持媒体中心的状态保持和语音控原创 2024-07-17 10:53:05 · 962 阅读 · 0 评论 -
车载音视频MediaPlayer优化方案
从手机到车载,在很多地方还是有很大的不同。各个音视频APP单独实现播控界面,播放链路不一致,使用的底层播放器和音频焦点管理逻辑也不一样,一方面导致界面显示和交互的一致性较差,另外播控相关的碎片化bug较多,各个模块的开发能力复用较少;每个模块都要单独接入媒体中心,新应用适配有一定接入联调成本,且存在连接时序、重连上的稳定性问题;RSD播控需要集成每个模块提供的aar开发包,各模块间耦合和复用较差,部分没有提供aar的比如carplay、在线音乐这些rsd的播控功能缺失。————————————————原创 2024-07-15 13:44:01 · 601 阅读 · 0 评论 -
Android Media3 技术应用详解
引用Google官网描述:可以简单解读下:1、是Jetpack的一部分,是一个新的媒体库,以可以提供更丰富的音视频体验;2、更简单的架构,更好的定制化、可靠性、优化能力,降低了碎片化带来的复杂度;官方链接:https://developer.android.google.cn/guide/topics/media/media3?hl=zh-cn。原创 2024-07-15 13:42:45 · 1367 阅读 · 0 评论 -
杜比全景声——空间音频技术
这也是很多设备并不支持的自己解码的原因。对于用户终端对于杜比全景声的回放处理,下面先看一张表,这张表整理了各个流媒体平台在各个硬件终端上对于杜比全景声的处理方式,表中撰写的状态,是APP从云端下发给终端设备的音源的规格。从2020年开始,安卓厂商们还陆续往手机里集成了Dolby格式的解码器,配合着杜比的效果调试(包扩DRC,人声增强,响度均衡,频响调整,声道互馈等),就统称为“杜比全景声”。由于双耳和音源的距离差异,也会造成此外,头部的遮挡,也会使得到达左耳与右耳声音的声压级是不同的,进一步形成声级差。原创 2024-07-10 15:13:27 · 1551 阅读 · 0 评论 -
Android 通用视频组件开发
为了适配更多的应用场景,我们将播放器下方最多5个Button开放两种定制方法。最左侧固定为播放按钮,不能修改,其余5个均可以自定义,如果不设置则默认不显示。对于只需要简单设置button的icon和点击事件的场景,可以直接使用方案一对于需要对Button做更多定制功能的,比如动效、动态替换、长按、双击事件等,需要使用方案二。原创 2024-07-10 15:07:44 · 756 阅读 · 0 评论 -
徒手绘制 Android 通用进度条
拖动条(FlexSeekBar),在Android的各个地方都非常常用,本文旨在自研一套通用的进度条,非常适合车载App使用。原创 2024-07-04 17:42:32 · 526 阅读 · 0 评论 -
YUV 颜色编码详解
YUV是被欧洲电视系统所采用的一种颜色编码方法(属于PAL),是PAL和SECAM模拟彩色电视制式采用的颜色空间。在现代彩色电视系统中,通常采用三管彩色摄影机或彩色CCD摄影机进行取像,然后把取得的彩色图像信号经分色、分别放大校正后得到RGB,再经过矩阵变换电路得到亮度信号Y和两个色差信号R-Y(即U)、B-Y(即V),最后发送端将亮度和色差三个信号分别进行编码,用同一信道发送出去。这种色彩的表示方法就是所谓的YUV,采用YUV色彩空间的重要性是它的亮度信号Y和色度信号U、V是分离的.原创 2024-07-04 17:37:12 · 1166 阅读 · 0 评论 -
车载双向认证框架设计
构建双向认证需要的对象。/*** TODO: demo调试的证书配置,对应的服务器是demo的测试云端;如果需要自己进行测试,需要使用自己的云端配置和修改* */// )//双向认证。原创 2024-06-26 18:56:34 · 641 阅读 · 0 评论 -
Android 多媒体开发——Media3与MediaSession最全使用指南
官方释义:ExoPlayerPlayer个人理解:媒体会话,即向系统公开正在播放的媒体信息,并对外开放控制端口。可以用它在多个App之间协调媒体控制的机制,通过创建一个中心化的会话来管理与音视频播放相关的各种操作。原创 2024-06-26 18:54:13 · 2740 阅读 · 0 评论 -
自研一套带双向认证的Android通用网络库
FlexNet 网络库是基于 Square 公司开源的 Retrofit 网络框架进行封装的。Retrofit 底层采用 OkHttp 实现,但相比于 OkHttp,Retrofit 更加便捷易用,尤其适合用于 RESTful API 格式的请求。在网络库内部,我们实现了双向认证功能。在初始化时,您可以选择是否开启双向认证,框架会自动切换相应的 URL,而业务方无需关注与服务端认证的具体细节。在请求之前需要根据接口协议的字段定义对应的数据Model,用来做Request或者Response的body。原创 2024-06-13 18:14:37 · 1110 阅读 · 0 评论 -
Flutter AOP 插桩项目实战
Flutter AOP 插桩项目实战项目背景项目简介系列文章目录项目背景Flutter依靠在跨平台方案的完美表现,深得终端开发者的心,然而在当下Flutter飞速迭代的同时,Flutter 的性能统计及用户行为统计的需求也随之提高。这几年在 Android 上有多种很成熟的插桩方式帮助我们完成这些任务,而在 Flutter 上还正处于探索阶段,本系列文章将会和大家一起探讨 Flutter 代码插桩的技术原理和基本应用,从0开始实现一个基于 Flutter 插桩的用户行为跟踪框架。项目简介Respec原创 2021-07-25 21:33:20 · 915 阅读 · 0 评论 -
Android NDK数据类型转换详解
/******************************************************************************************** * author:conowen@大钟转载 2014-07-07 20:39:19 · 1553 阅读 · 0 评论 -
Android 图像处理软件
原文出处:http://blog.csdn.net/mc_hust/article/details/43708163在机器视觉实验室呆了有一年半时间了,但由于自己“任性”。一直以来学习的内容都是自己来安排,我还是坚持认为没有最好和最简单的技术,只有自己喜欢的技术。不过说起来还是会觉得惭愧,经常听到师兄们谈论图像处理各种算法,可是一直到此软件诞生之前对机器视觉的知识可以说一概不知。自己研究的主要是An原创 2015-02-10 20:53:15 · 2904 阅读 · 9 评论 -
Android真正的静默安装
原文出处:http://write.blog.csdn.net/mdeditor#!postId=50609068关于Android应用程序的静默安装,很早以前我就做过一些了解,网上大多数给出的方案都是有严苛的要求:比如要获取root权限、或者是针对特殊的rom,甚至要自己刷机,这些方法即使能够达到目的但是看起来也不那么诱人,对于黑客技术而言几乎毫无用处。最近无意中看到了潭州教育的一个视频课程讲到静原创 2016-01-29 20:01:53 · 7016 阅读 · 32 评论 -
MP3歌词的同步与拖拽设计
原文地址:http://blog.csdn.net/mc_hust/article/details/51534901自从准备毕业论文开始,就没写过博客了,关注量也明显呈下滑趋势(虽然本来就少)。到现在已经入职一个多月了,抽空把之前做的一个项目整理一下,算是毕业后的第一篇博客吧。关于Mp3播放器,网上有各种实现方法,但是对于歌词的同步以及滑动更改播放进度的讲解却少之又少,所以我这里重点放在歌词的设计上原创 2016-05-30 00:06:31 · 6223 阅读 · 43 评论 -
210开发板Android系统串口程序
最近由于项目需要,花了两天时间在Android平台下编写了一个串口助手软件。硬件平台是友善之臂的tiny210开发板。起初的想法是首先基于Linux驱动做一些修改,然后自行编写HAL层代码,最后编写Android应用程序调用HAL Stub来实现和串口通信。后来在网上看到友善之臂为Android系统操作硬件资源专门开发了一个库文件:libfriendlyarm-hardware.so,通过它我们可原创 2014-12-19 21:12:18 · 1864 阅读 · 5 评论 -
浅谈android线程池
线程池的基本思想还是一种对象池的思想,开辟一块内存空间,里面存放了众多(未死亡)的线程,池中线程执行调度由池管理器来处理。当有线程任务时,从池中取一个,执行完成后线程对象归池,这样可以避免反复创建线程对象所带来的性能开销,节省了系统的资源。比如:一个应用要和网络打交道,有很多步骤需要访问网络,为了不阻塞主线程,每个步骤都创建个线程,在线程中和网络交互,用线程池就变的简单,线程池是对线程的一转载 2015-12-29 09:06:02 · 826 阅读 · 0 评论 -
Android工程师面试题大全
结束了难熬的校招,现在终于可以安安静静的做做项目看看书写写论文了。下面对这段时间面试遇到的问题并结合网上各位的大神秒下的面试题做个总结,本文会持续更新,希望能在面试中助各位一臂之力!Java基础:1、内存泄露的原因:资源对象没关闭。 如Cursor、File等资源。他们会在finalize中关闭,但这样效率太低。容易造成内存泄露。 SQLiteCursor,当数据量大的时候容易泄露使用Ada原创 2015-10-30 22:14:10 · 7686 阅读 · 5 评论 -
Android“上拉刷新/下拉加载”与“侧滑菜单”的兼容
在Android系统中,“上拉刷新/下拉加载更多”和“侧滑菜单”都是非常常用的操作界面,二者都比较容易,网上也有许多牛人做好的库可以直接使用。可是很少有讲解如何让两者并存的方法,前不久在一个项目中需要在已有侧滑菜单的应用中,对其中一个菜单项加入上拉/下拉菜单。由于都要捕捉触摸事件,这两者之间可能会产生一些冲突。这里记录一下我的解决方案和步骤,也希望能够为遇到同样问题的朋友们提供一些思路。1、侧滑菜单原创 2015-04-27 22:38:41 · 1884 阅读 · 2 评论 -
Android系统如何运行动态编译的程序
android系统底层使用了linux的内核,但在文件系统上与linux有所差异。我们可以通过谷歌提供的ADB工具进入android系统的linux命令终端。但是不能执行我们在PC上通过arm-linux-gcc等交叉编译器动态编译出来的应用程序,比如如下指令:arm-linux-gcc mc.c -o mc然后用adb push将可执行程序复制到android系统/data/local中,接着改变原创 2015-03-22 21:58:58 · 1743 阅读 · 0 评论 -
Android开发规范
一、Android 编码规范1.java 代码中不出现中文,最多注释中可以出现中文2.局部变量命名、静态成员变量命名只能包含字母,单词首字母除第一个外,都为大写,其他字母都为小写3.常量命名只能包含字母和_,字母全部大写,单词之间用_隔开4.layout中的id命名命名模式为:view缩写_模块名称_view的逻辑名称view的缩写详情如下LayoutView:转载 2014-11-28 11:08:31 · 954 阅读 · 0 评论 -
Linux Makefile与Kconfig文件详解
登录 | 注册ThinkKeep marching, Don't settle —— 把自己带到离梦想最近的地方!目录视图摘要视图订阅有奖征资源,博文分享有内涵 5月推荐博文汇总 第二届战神杯编程挑战月赛 2014 CSDN博转载 2014-06-23 15:47:13 · 8316 阅读 · 3 评论 -
Android NDK开发之Jni的数据类型
在前面的一篇博客《Android NDK开发简介》,我简单地说明了Android NDK开发的流程,以及其重要的一环:JNI层得开发。今天我再详细说明一下自己的学习经验。JNI是Java代码和C/C++代码通信的桥梁,其角色在某种意义上就是一个翻译员,从设计模式来看叫适配器。两者的沟通,首要的一定要对嘴型,对channel,沟通才能到位。计算机程序的基本组成,从狭义来讲,就是数据结构+转载 2014-07-07 19:05:08 · 1244 阅读 · 0 评论 -
Android即时通信软件设计(一)(网络通信)
——客户机、服务器连接通信最近刚做完一个基于Android的即时通信的项目工程,主要完成类似于QQ群的功能。项目涉及的知识面比较广,都是在网络通信上很实用的技术,非常适合初学者学习。其中也是遇到了各种错误、异常。在解决的过程中自己也收获了不少。在此分几个部分简述一下我的调试过程,也和大家分享一下我的收获,希望对大家有帮助。所要了解的主要知识点:TCP/IP网络协议文件IO流二进制I原创 2014-06-29 20:27:03 · 2233 阅读 · 2 评论 -
编译Android源码致命错误解决方案
编译Android内核过程及错误分析 相信各位和我一样正在研究android内核的朋友们在经过漫长的源码下载的等待后,喜悦的拿到了源代码开始编译。可是在编译过程中,也会和下载一样出现各种各样的不顺。在这里我记录了一下本人在编译过程中的所有问题,如有疏漏,欢迎朋友们指出。 下面是按照正常编译流程记录的所需步骤和操作,可能遇到的问题会在后面讲述。 步骤原创 2014-06-25 22:26:20 · 5198 阅读 · 1 评论 -
下载Android源代码错误汇总分析
配置下载Android源代码的过程及问题解决 最近在学习Android底层框架,今天打算研究一下Android源代码,源码的下载过程可没有想像的顺利。主要原因是网上的很多资料都是多年以前的,而一些网站都发生了变更,所以域名也会失效。OK,废话少说,我把遇到的各种问题和大家分享一下,希望大家能对号入座,避免浪费不必要的时间~ 以下是我按照正常下载过程总结出的步骤,原创 2014-06-22 10:51:43 · 9136 阅读 · 5 评论 -
Java与C/C++网络通信时的数据转换
最近做了一款Android应用,需要和PC端通过socket传递数据。Java Socket的接收与发送首先我们会建立一个socket连接,然后从中获取InputStream和OutputStream。在接收的时候我是用一个DataInputStream对Socket的InputStream进行包装,便于后面接收不同大小的数据类型。在发送时先通过DataOutputStream()对OutputStream进行原创 2015-05-13 17:01:33 · 1811 阅读 · 0 评论 -
Android action使用大全
1.Intent的用法:(1)Action跳转1、 使用Action跳转,当程序AndroidManifest.xml中某一个 Activity的IntentFilter定义了包含Action,如果恰好与目标Action匹配,且其IntentFilter中没有定义其它的Type或Category过滤条件,那么就正好匹配了。如果手机中有两个以上的Action程序匹配,那么就会弹出一个对话可框来提示说明转载 2015-06-01 10:32:48 · 9154 阅读 · 0 评论 -
难忘的面试周——百度校招面经
如果说准备招聘的复习过程如同准备考研一样单调而紧张,那笔试之后的面试过程就如没考上寻求调剂一般煎熬而痛苦。也许很多朋友没有体会过以上过程,还不能理解如何紧张如何煎熬。那么下面我把我一个月的紧张和一周的煎熬分享给大家,文章末尾会有一片android面试大全,这些只是我个人的经历,希望能让大家有所借鉴。一个月的复习首先我是做移动客户端的,简单说就是Android、Java等方向的编程。点击可以查看另一篇原创 2015-11-08 20:28:11 · 3682 阅读 · 3 评论 -
比spinner更轻量的下拉菜单——DropDownList控件
相信大家在Android应用程序中经常会用到下拉菜单,而Android源码中自带的spinner控件可以满足大多时候的需求。那么这里所说的DropDownList与之有什么不同,又轻量在哪里呢?下面我们来看看两者的差别。(点击下载DropDownList library)最近我在用spinner的时候发现了一个问题。我希望通过spinner来控制一个viewPager的切换,同时,当滑动viewPa原创 2015-10-23 21:43:15 · 2588 阅读 · 1 评论 -
Java多态性的理解
看过一些关于Java多态性的文章,参考了很多人的理解,加入了一些自己的看法,整理出来供大家参考,不一定完全正确,欢迎大家批评指正。(一)相关类class A ...{ public String show(D obj)...{ return ("A and D"); } public Str转载 2015-09-15 13:35:33 · 1341 阅读 · 0 评论 -
深入理解java异常处理机制
1. 引子 try…catch…finally恐怕是大家再熟悉不过的语句了,而且感觉用起来也是很简单,逻辑上似乎也是很容易理解。不过,我亲自体验的“教训”告诉我,这个东西可不是想象中的那么简单、听话。不信?那你看看下面的代码,“猜猜”它执行后的结果会是什么?不要往后看答案、也不许执行代码看真正答案哦。如果你的答案是正确,那么这篇文章你就不用浪费时间看啦。转载 2015-09-07 19:54:59 · 1211 阅读 · 2 评论 -
完整Android CAN总线程序开发
最近在研究一块TI公司的TMDEVM-AM3358开发板,这是一款硬件资源相当丰富并且性能非常好的工业评估板,我重点需要用到板上的网卡、串口以及CAN总线。众所周知,在android这样一款风靡全球的移动端操作系统内部,对于网卡的支持已经伴随这一系统本身的发展而相当完善。然而,串口线已经逐步淡出我们的视野,但是由于简单易用,在很多时刻依然派得上用场。其中最少见的应该就是CAN总线了,所以在调试CAN原创 2015-03-22 21:30:22 · 6633 阅读 · 0 评论 -
Integer.valueOf(String) 方法之惑
有个仁兄在 StackOverflow 上发起了一个问题,是这么问的:“ 我被下面的代码搞晕了,为什么它们会返回不同的值?”123System.out.println(Integer.valueOf("127")==Integer.valueOf("127"));System.out.println(Integer转载 2015-07-30 12:53:02 · 973 阅读 · 0 评论 -
《Android第一行代码》笔记
学习Android开发差不多有两年时间了,期间也做了大大小小的一些项目。近来抽出闲暇想把Android基础强化一下,之前在网上看到了郭霖郭大神的几篇博客,从中受益不少。于是花了近一周时间看完了郭神的一本Android教材——《Android第一行代码》。这本书相比其他教材个人感觉更为基础,内容很实用。看完之后我也有一些收获,学到了一些可以很好的运用到实际中的Android小技巧,下面从中选出我认为很原创 2015-06-03 22:05:17 · 2371 阅读 · 13 评论 -
Android个性闹钟——摇摇醒
花了一周时间突发奇想写了一个个性闹钟应用,名叫"摇摇醒"。顾名思义,当预设的闹钟时间到时,闹钟响起,并且等待用户摇晃手机。直到一定的阈值之后才能停下,经过不断的测试调整,基本上用户在关闭闹钟的时候能够保证清醒状态。可以为广大的起床困难户解决实际问题~当然应用中也有许多不足之处,我也会继续修改,同时及时在GITHUB上更新源代码也希望大家一起帮助整改。下面介绍一下整个应用的设计思路。应用中需要解原创 2014-10-30 22:34:11 · 3141 阅读 · 4 评论