自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

MC 的技术空间

主页:http://www.jianshu.com/users/a0d978b30696/latest_articles

  • 博客(62)
  • 收藏
  • 关注

原创 Android 图像处理软件

原文出处:http://blog.csdn.net/mc_hust/article/details/43708163在机器视觉实验室呆了有一年半时间了,但由于自己“任性”。一直以来学习的内容都是自己来安排,我还是坚持认为没有最好和最简单的技术,只有自己喜欢的技术。不过说起来还是会觉得惭愧,经常听到师兄们谈论图像处理各种算法,可是一直到此软件诞生之前对机器视觉的知识可以说一概不知。自己研究的主要是An

2015-02-10 20:53:15 2860 9

原创 Android个性闹钟——摇摇醒

花了一周时间突发奇想写了一个个性闹钟应用,名叫"摇摇醒"。顾名思义,当预设的闹钟时间到时,闹钟响起,并且等待用户摇晃手机。直到一定的阈值之后才能停下,经过不断的测试调整,基本上用户在关闭闹钟的时候能够保证清醒状态。可以为广大的起床困难户解决实际问题~当然应用中也有许多不足之处,我也会继续修改,同时及时在GITHUB上更新源代码也希望大家一起帮助整改。下面介绍一下整个应用的设计思路。应用中需要解

2014-10-30 22:34:11 3094 4

原创 NRF24L01 无线通信模块使用方法

昨天登录百度账号,无意间发现漏看了好多朋友的私信,其中不少是找我探讨关于NRF2401模块的。从12年到14年的信件都有(平时很少注意系统提示信息。。。)。hust-MC.jpg实在不好意思,也许很多朋友已经搞定这个模块了,也许有的还在研究。用了半天的时间找出了相关资料并整理好,在这里统一共享给大家,希望能够帮到大家。NRF24L01是在2012年全国电子设计大赛中使用过的一款

2014-09-22 11:10:27 41025 227

原创 Android即时通信软件设计(一)(网络通信)

——客户机、服务器连接通信最近刚做完一个基于Android的即时通信的项目工程,主要完成类似于QQ群的功能。项目涉及的知识面比较广,都是在网络通信上很实用的技术,非常适合初学者学习。其中也是遇到了各种错误、异常。在解决的过程中自己也收获了不少。在此分几个部分简述一下我的调试过程,也和大家分享一下我的收获,希望对大家有帮助。所要了解的主要知识点:TCP/IP网络协议文件IO流二进制I

2014-06-29 20:27:03 2211 2

原创 下载Android源代码错误汇总分析

配置下载Android源代码的过程及问题解决        最近在学习Android底层框架,今天打算研究一下Android源代码,源码的下载过程可没有想像的顺利。主要原因是网上的很多资料都是多年以前的,而一些网站都发生了变更,所以域名也会失效。OK,废话少说,我把遇到的各种问题和大家分享一下,希望大家能对号入座,避免浪费不必要的时间~        以下是我按照正常下载过程总结出的步骤,

2014-06-22 10:51:43 9029 5

原创 Gradle依赖管理 & Kotlin DSL解析

公共组件库项目采用了单project多module针对问题一,可以采用通用的组件库,从而实现各个模块中外部依赖及版本统一. 当然目前依赖库还在试用阶段, 我们在使用的期间也踩过一些坑, 后面会详细跟大家分享.针对问题二, 我们通过使用定义模块动态依赖. 在CI/CD的基础上, 实现了根据开发/测试/发布阶段自动切换本地或远端依赖的功能.

2024-07-20 22:34:31 641

原创 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 1212

原创 腾讯PAG动效工具解析

PAG是由腾讯推出的一套完整的动效工作流解决方案,目标是降低或消除动效相关的研发成本,能够一键将设计师在AE中制作的动效内容导出成素材文件,并快速上线应用于几乎所有的主流平台。设计师在 AE 上设计出动画后,可以通过导出插件导出 Pag 文件,同时可以在桌面端预览工具中实时预览效果,还可以通过桌面端进行性能检测。PAG 可以支持 Android、iOS、web、mac OS、Windows 和 Linux,涵盖了业界常用的终端平台,支持 AE 动画实时渲染、运行时编辑。

2024-07-17 10:55:12 979

原创 车载音视频App框架设计

统一播放器提供媒体播放一致性的交互和视觉体验,减少各个媒体应用和场景独自开发的重复工作量,实现媒体播放链路的一致性,减少碎片化的Bug。本文面向应用开发者介绍如何快速接入媒体播放器。要功能:1. 新设计的统一播放UI组件,视频支持的手势操作,包括左右滑拖动进度、左上下滑调节亮度、右上下滑调节音量、双击暂停/播放,同时对外暴露了长按手势接口应用可以实现类似快进快退功能;2. 支持方控、Mini播放器、PSD的播控和状态显示,应用只需要申请媒体中心权限的license即可,支持媒体中心的状态保持和语音控

2024-07-17 10:53:05 914

原创 车载音视频MediaPlayer优化方案

从手机到车载,在很多地方还是有很大的不同。各个音视频APP单独实现播控界面,播放链路不一致,使用的底层播放器和音频焦点管理逻辑也不一样,一方面导致界面显示和交互的一致性较差,另外播控相关的碎片化bug较多,各个模块的开发能力复用较少;每个模块都要单独接入媒体中心,新应用适配有一定接入联调成本,且存在连接时序、重连上的稳定性问题;RSD播控需要集成每个模块提供的aar开发包,各模块间耦合和复用较差,部分没有提供aar的比如carplay、在线音乐这些rsd的播控功能缺失。————————————————

2024-07-15 13:44:01 564

原创 Android Media3 技术应用详解

引用Google官网描述:可以简单解读下:1、是Jetpack的一部分,是一个新的媒体库,以可以提供更丰富的音视频体验;2、更简单的架构,更好的定制化、可靠性、优化能力,降低了碎片化带来的复杂度;官方链接:https://developer.android.google.cn/guide/topics/media/media3?hl=zh-cn。

2024-07-15 13:42:45 1047

原创 杜比全景声——空间音频技术

这也是很多设备并不支持的自己解码的原因。对于用户终端对于杜比全景声的回放处理,下面先看一张表,这张表整理了各个流媒体平台在各个硬件终端上对于杜比全景声的处理方式,表中撰写的状态,是APP从云端下发给终端设备的音源的规格。从2020年开始,安卓厂商们还陆续往手机里集成了Dolby格式的解码器,配合着杜比的效果调试(包扩DRC,人声增强,响度均衡,频响调整,声道互馈等),就统称为“杜比全景声”。由于双耳和音源的距离差异,也会造成此外,头部的遮挡,也会使得到达左耳与右耳声音的声压级是不同的,进一步形成声级差。

2024-07-10 15:13:27 981

原创 Android 通用视频组件开发

为了适配更多的应用场景,我们将播放器下方最多5个Button开放两种定制方法。最左侧固定为播放按钮,不能修改,其余5个均可以自定义,如果不设置则默认不显示。对于只需要简单设置button的icon和点击事件的场景,可以直接使用方案一对于需要对Button做更多定制功能的,比如动效、动态替换、长按、双击事件等,需要使用方案二。

2024-07-10 15:07:44 714

原创 徒手绘制 Android 通用进度条

拖动条(FlexSeekBar),在Android的各个地方都非常常用,本文旨在自研一套通用的进度条,非常适合车载App使用。

2024-07-04 17:42:32 485

原创 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 1131

原创 车载双向认证框架设计

构建双向认证需要的对象。/*** TODO: demo调试的证书配置,对应的服务器是demo的测试云端;如果需要自己进行测试,需要使用自己的云端配置和修改* */// )//双向认证。

2024-06-26 18:56:34 596

原创 Android 多媒体开发——Media3与MediaSession最全使用指南

官方释义:ExoPlayerPlayer个人理解:媒体会话,即向系统公开正在播放的媒体信息,并对外开放控制端口。可以用它在多个App之间协调媒体控制的机制,通过创建一个中心化的会话来管理与音视频播放相关的各种操作。

2024-06-26 18:54:13 1355

原创 如何开发一款安全高效的Android网络库(详细教程)

根据很多网友及项目需要,我们针对Retrofit做了一层简单封装,包含了很多可插拔的功能,能够适应大多数项目的需要,这一期我们来分析以下如何设计一款安全高效的Android网络库——FlexNet。

2024-06-14 17:26:04 380

原创 自研一套带双向认证的Android通用网络库

FlexNet 网络库是基于 Square 公司开源的 Retrofit 网络框架进行封装的。Retrofit 底层采用 OkHttp 实现,但相比于 OkHttp,Retrofit 更加便捷易用,尤其适合用于 RESTful API 格式的请求。在网络库内部,我们实现了双向认证功能。在初始化时,您可以选择是否开启双向认证,框架会自动切换相应的 URL,而业务方无需关注与服务端认证的具体细节。在请求之前需要根据接口协议的字段定义对应的数据Model,用来做Request或者Response的body。

2024-06-13 18:14:37 1078

原创 10 网格布局——GridLayout

今天要学的布局和上一节的 TableLayout 很类似,是在 Android 4.0 版本引入的布局方式。GridLayout 很有意思,自从引入之后在 Android 开发圈有以下特点:大部分的开发者可能都不知道有这个布局方式的存在有些开发者虽然知道,但是很多时候不会去使用这个布局方式很少的开发者会花时间研究这个布局方式,也不会灵活的使用之所以会花一个章节来讲,是希望大家能够引起重视1. GridLayout 的特性顾名思义 GridLayout 可以帮助你完成各式各样的网格形式的布局,

2021-09-05 19:29:05 1794

原创 9 表格布局——TableLayout

学完了 Android 两个经典布局,是不是觉得已经可以应对大多数场景了?我记得当我学完 LinearLayout 和 RelativeLayout 之后,我觉得 UI 布局已经可以出师了,在本人从事了多年的 Android 研究之后,可以很负责任的告诉你,的确可以出师了。大多数场景都可以通过这两个布局方式组合出来,不过光靠这两招出师可能会走不少弯路,因为 Google 还为我们提供了很多实用的 Layout,比如今天要学的 TableLayout,它是一种表格样式,在很多 App 里面都会用到。当然你完全

2021-09-01 15:16:19 799

原创 8 相对布局——RelativeLayout

在上一节中我们讲到了 LinearLayout,这也是大家学到的第一个布局方式。它支持将多个 View 通过线性的方式(水平或垂直)组合起来,其中最实用的就是 weight 属性,用好 weight 可以让你的线性布局更灵活美观。然而,在上一节的例子中我们发现,如果需要在多个方向上进行布局,就要嵌套多个 LinearLayout,可以想象如果我们的 UI 足够复杂,那么从工作量和性能上都将是一场噩梦。所以这里要引出另一种布局方式——RelativeLayout(相对布局),很多时候需要嵌套多个 Linear

2021-08-24 12:40:56 1520

原创 7 线性布局——LinearLayout

在上一节中,我们讲到了所有的 Layout 都是从 ViewGroup 继承而来,它可以包含若干 View 并按照指定的规则将这个 View 摆放到屏幕上。那么接下来的章节我们就来学习一下 Android 的 UI 布局,Android 原生有六大布局,分别是: LinearLayout(线性布局)、RelativeLayout(相对布局)、TableLayout(表格布局)、FrameLayout(帧布局)、AbsoluteLayout(绝对布局)、GridLayout(网格布局),我们从最简单实用的一个

2021-08-15 19:01:55 2303

原创 6 Android 的 UI 根基——View 与 ViewGroup

好了,到这里要恭喜你正式进入 Android 基础的学习,在后面的章节会陆续出现很多 Android 原生 API,在学习之前向大家推荐 Google 官方文档,里面有很全的 API 功能描述、使用说明及使用示例。当然,如果英文原版大家上不去,可以访问中文站点:Google官方中文文档(无需VPN),英语盲不要高兴的太早,说是中文文档,但其实内容几乎都是直接 copy 的英文。不过还是建议大家在学习过程中多多查阅官方文档。基础知识将从 Android UI(User Interface)开始,因为 UI

2021-08-11 15:25:57 189

原创 5 Android程序签名打包

在上一章,我们创建了自己的 Android 工程,并成功的在模拟器中运行起来。同时提到,工程目录中有一个 bin 目录,运行之后我们可以在此目录下找到我们的apk。那么不难想到,我们在点“Run”之后,系统会编译我们的代码,并结合配置文件打出一个 apk。众所周知 apk 是 Android 系统的安装包,在我们编写完代码,打包成apk之后,就可以将 apk 发布到应用市场,用户下载 apk 后就可以安装运行了。这一切看似简单但暗藏玄机,我们的 apk 一旦到了纷繁复杂的市场,就需要考虑很多问题。比如如何

2021-08-10 11:36:08 275

原创 4 Android工程解析及使用

在上一章中已经搭建好了 Android 开发环境,本章我们将一起通过 Eclipse 创建我们的第一个 Android App。1. 创建 Android 工程首先打开 Eclipse,在菜单栏依次选择“New” -> “Android App Project”。如果是第一次创建,可能没有“Android App Project”,那么可以选择“Other”->“Android”。主要有三个参数需要我们设置:应用名: 即我们App的名字,也是最终会显示在设备桌面上的名称;工程名: 项目

2021-07-26 10:02:14 157

原创 Flutter AOP 插桩项目实战

Flutter AOP 插桩项目实战项目背景项目简介系列文章目录项目背景Flutter依靠在跨平台方案的完美表现,深得终端开发者的心,然而在当下Flutter飞速迭代的同时,Flutter 的性能统计及用户行为统计的需求也随之提高。这几年在 Android 上有多种很成熟的插桩方式帮助我们完成这些任务,而在 Flutter 上还正处于探索阶段,本系列文章将会和大家一起探讨 Flutter 代码插桩的技术原理和基本应用,从0开始实现一个基于 Flutter 插桩的用户行为跟踪框架。项目简介Respec

2021-07-25 21:33:20 795

原创 3 Genymotion的安装与使用

在上一章中我们在 Eclipse 当中创建了 AVD,由于性能差只适合测试小型 App。这里将推荐一款性能更佳的 Android 模拟器—— Genymotion。首先我们看看 Genymotion 好在哪里。1. Genymotion 优势Genymotion 相对于内置模拟器有如下优势:运行速度快、画面流畅,性能甚至优于部分真机;支持拖拽安装APK;支持 OpenGL 3D加速,可以流畅玩大型3D游戏支持多种虚拟传感器,如电池状态、GPS、NFC、重力加速器等模拟,支持摄像头、蓝牙等设备

2021-07-25 17:41:41 2101 4

原创 2 Android开发环境搭建

在学习 Android 应用开发之前,我们先要完成环境的搭建,它将帮助我们将 Java 代码编译打包生成最终的 Android 安装包。本教程在 Mac 下完成安装,Windows 和 Linux 步骤类似,不同之处会着重区分。1. 文件清单Java SE Development Kit 8u241: 后文称 JDK。Java运行环境,使用 JDK 5 以上版本即可,本教程采用 JDK 8 作为开发环境。Android SDK : 后文称 SDK。Android 开发工具包,内含我们开发中使用的常用

2021-07-25 17:33:05 326

原创 1 Android 系统背景及结构概述

Android 系统背景及结构概述1. Android的历史Android一词的本意指“人形机器人”,安迪•鲁宾 (Andy Rubin) 在2003年以此名创办了Android公司并开始召集团队研发Android系统。后于 2005 年被 Google 收购,安迪•鲁宾随后任Google 工程部副总裁,继续负责Android项目的研发工作。安卓系统(Android)是一款基于Linux内核的自由开源的操作系统,主要使用于移动设备,如智能手机和平板电脑。 Google 在 2007 年 11 月 5

2021-07-25 17:31:01 635 1

原创 MP3歌词的同步与拖拽设计

原文地址:http://blog.csdn.net/mc_hust/article/details/51534901自从准备毕业论文开始,就没写过博客了,关注量也明显呈下滑趋势(虽然本来就少)。到现在已经入职一个多月了,抽空把之前做的一个项目整理一下,算是毕业后的第一篇博客吧。关于Mp3播放器,网上有各种实现方法,但是对于歌词的同步以及滑动更改播放进度的讲解却少之又少,所以我这里重点放在歌词的设计上

2016-05-30 00:06:31 6143 43

原创 Android真正的静默安装

原文出处:http://write.blog.csdn.net/mdeditor#!postId=50609068关于Android应用程序的静默安装,很早以前我就做过一些了解,网上大多数给出的方案都是有严苛的要求:比如要获取root权限、或者是针对特殊的rom,甚至要自己刷机,这些方法即使能够达到目的但是看起来也不那么诱人,对于黑客技术而言几乎毫无用处。最近无意中看到了潭州教育的一个视频课程讲到静

2016-01-29 20:01:53 6845 32

转载 浅谈android线程池

线程池的基本思想还是一种对象池的思想,开辟一块内存空间,里面存放了众多(未死亡)的线程,池中线程执行调度由池管理器来处理。当有线程任务时,从池中取一个,执行完成后线程对象归池,这样可以避免反复创建线程对象所带来的性能开销,节省了系统的资源。比如:一个应用要和网络打交道,有很多步骤需要访问网络,为了不阻塞主线程,每个步骤都创建个线程,在线程中和网络交互,用线程池就变的简单,线程池是对线程的一

2015-12-29 09:06:02 795

原创 难忘的面试周——百度校招面经

如果说准备招聘的复习过程如同准备考研一样单调而紧张,那笔试之后的面试过程就如没考上寻求调剂一般煎熬而痛苦。也许很多朋友没有体会过以上过程,还不能理解如何紧张如何煎熬。那么下面我把我一个月的紧张和一周的煎熬分享给大家,文章末尾会有一片android面试大全,这些只是我个人的经历,希望能让大家有所借鉴。一个月的复习首先我是做移动客户端的,简单说就是Android、Java等方向的编程。点击可以查看另一篇

2015-11-08 20:28:11 3662 3

原创 Android工程师面试题大全

结束了难熬的校招,现在终于可以安安静静的做做项目看看书写写论文了。下面对这段时间面试遇到的问题并结合网上各位的大神秒下的面试题做个总结,本文会持续更新,希望能在面试中助各位一臂之力!Java基础:1、内存泄露的原因:资源对象没关闭。 如Cursor、File等资源。他们会在finalize中关闭,但这样效率太低。容易造成内存泄露。 SQLiteCursor,当数据量大的时候容易泄露使用Ada

2015-10-30 22:14:10 7574 5

原创 比spinner更轻量的下拉菜单——DropDownList控件

相信大家在Android应用程序中经常会用到下拉菜单,而Android源码中自带的spinner控件可以满足大多时候的需求。那么这里所说的DropDownList与之有什么不同,又轻量在哪里呢?下面我们来看看两者的差别。(点击下载DropDownList library)最近我在用spinner的时候发现了一个问题。我希望通过spinner来控制一个viewPager的切换,同时,当滑动viewPa

2015-10-23 21:43:15 2540 1

转载 Java多态性的理解

看过一些关于Java多态性的文章,参考了很多人的理解,加入了一些自己的看法,整理出来供大家参考,不一定完全正确,欢迎大家批评指正。(一)相关类class A ...{           public String show(D obj)...{                  return ("A and D");           }            public Str

2015-09-15 13:35:33 1314

转载 深入理解java异常处理机制

1. 引子       try…catch…finally恐怕是大家再熟悉不过的语句了,而且感觉用起来也是很简单,逻辑上似乎也是很容易理解。不过,我亲自体验的“教训”告诉我,这个东西可不是想象中的那么简单、听话。不信?那你看看下面的代码,“猜猜”它执行后的结果会是什么?不要往后看答案、也不许执行代码看真正答案哦。如果你的答案是正确,那么这篇文章你就不用浪费时间看啦。

2015-09-07 19:54:59 1200 2

转载 Integer.valueOf(String) 方法之惑

有个仁兄在 StackOverflow 上发起了一个问题,是这么问的:“ 我被下面的代码搞晕了,为什么它们会返回不同的值?”123System.out.println(Integer.valueOf("127")==Integer.valueOf("127"));System.out.println(Integer

2015-07-30 12:53:02 943

原创 《Android第一行代码》笔记

学习Android开发差不多有两年时间了,期间也做了大大小小的一些项目。近来抽出闲暇想把Android基础强化一下,之前在网上看到了郭霖郭大神的几篇博客,从中受益不少。于是花了近一周时间看完了郭神的一本Android教材——《Android第一行代码》。这本书相比其他教材个人感觉更为基础,内容很实用。看完之后我也有一些收获,学到了一些可以很好的运用到实际中的Android小技巧,下面从中选出我认为很

2015-06-03 22:05:17 2338 13

空空如也

空空如也

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

TA关注的人

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