android
zuguorui
这个作者很懒,什么都没留下…
展开
-
Android native音频:录制播放的实现以及低延迟音频方案
文章目录1. 前言2. 工程准备3. 低延迟音频原理及功能实现方案4. 使用OpenSL ES4.1 播放器实现4.2 录音器实现4.3 Echo实现5. 使用AAudio5.1 播放器实现5.2 录音器实现5.3 Echo实现6. 使用Oboe7. 功能配置1. 前言Android提供了很多的多媒体接口,通常在java层,我们常用的就是AudioTrack和MediaPlayer进行音频播放。MediaPlayer不光可以播放音频,也可以播放视频,并支持少部分的解码。而由于音视频通常计算量都很大,所原创 2020-08-09 23:40:53 · 3246 阅读 · 0 评论 -
Android音乐播放器-使用FFmpeg及OpenSLES
文章目录一、准备工作二、目标三、整体架构四、OpenSLES五、解码六、状态通知在之前的文章《FFmpeg解码音频代码》中,已经实现了使用FFmpeg解码音频为PCM。这次我们利用FFmpeg以及OpenSLES来实现一个简单的音乐播放器。一、准备工作在开始之前,我们需要使用之前文章中编译的Android版本的FFmpeg库,如果不清楚如何编译,请查看我的文章《最新版FFmpeg移植An...原创 2020-04-27 22:24:16 · 683 阅读 · 0 评论 -
Kotlin协程的迷惑
Kotlin作为谷歌强力推广的Android编程语言,是运行在jvm上的,在很多地方可以看做java语言披了一层语法糖,很多地方其实和java是相通的,包括各种库的使用。不过倒是有一个新东西:协程,这个对于java程序员来说可能就比较陌生。我也是研究了一下协程,作为一个备忘。1. 关键概念1.1什么是协程?协程是轻量级的线程这是官方文档给的定义。虽然它和线程的关系看起来很像线程和进程的...原创 2019-09-16 19:39:16 · 765 阅读 · 2 评论 -
Android NDK开发: 通过C/C++调用第三方so库
上一篇打包so库及jar包的博客我讲了如何将自己的代码打包成so库,并且配合jar包供他人调用。但那种方式仅适合对方从java层调用,如果算法是比较核心的,而又为了效率必须从native来调用,那种方式就不合适了。本篇讲如何打包我们自己的核心代码供他人在native调用,如果对方愿意,也可以自己封装然后从java来调用,灵活性更高。并且在调试的时候更加方便。这种方式是更接近纯C/C++工程的集成...原创 2019-07-21 01:31:52 · 11190 阅读 · 1 评论 -
备忘:gcc在linux下打包so库并调用
环境:Ubuntu, GCC切换到准备编译的代码文件夹中,输入g++ *.cpp -fPIC -shared -o libname.so,name随便起,这时会生成一个libname.so文件。把so文件复制到准备用的工程中。在该工程位置打开终端,首先在ubuntu环境下要设置库的路径:export LD_LIBRARY_PATH=./,否则在运行时会出现找不到库的错误,别的环境下是否需要暂...原创 2019-07-17 17:20:02 · 3014 阅读 · 0 评论 -
Android NDK开发:打包so库及jar包供他人使用
Android的NDK开发相信各位已经精通各种姿势了。不过基本上都是那种native代码和java代码都在同一个工程中,因为应用从头到脚都是我们自己的,也不需要分离。但有时候可能需要我们自己把某些库打包起来供别人使用,或者使用别人提供给我们的库。本篇文章及下篇文章就讲讲so库如何打包。一、目标及方式这篇文章会讲第一种方式来打包so库,这种方式是基于jni层的,需要我们同时提供接口的jar包...原创 2019-07-12 09:32:46 · 13143 阅读 · 8 评论 -
Android在string.xml中定义html文档并加载显示,以及拦截WebView链接事件
一、如何在string.xml中定义html文档首先最好自己在外部新建一个html文件,然后开始写自己的内容。并且在浏览器中预览效果。首先预先编写一个简单的html文档:<html> <head> <style type="text/css"> body { color: #1...原创 2019-07-11 15:39:56 · 1065 阅读 · 0 评论 -
Android中动态初始化布局参数以及ConstraintLayout使用中遇到的坑
Android中动态初始化布局以及ConstraintLayout遇到的一个坑ConstraintLayout是Android中的一个很强大的布局,它通过控件之间的相对定位,来完成一个layout中的所有view的布局,但布局方法相对于RelativeLayout更为灵活。能够大幅减少布局嵌套,提升性能。这次遇到的问题是在Activity中动态对Fragment进行布局和动画效果,难点在于...原创 2018-05-16 11:15:02 · 9044 阅读 · 0 评论 -
Android的滑动分析
Android的滑动分析 滑动应该可以说是Android中最常见的一种视觉效果,也是View编写中的关键,本篇文章就来分析一下Android中滑动的实现方式。滑动通常分为计算位移以及执行滑动两部分,本篇将会涉及这两个方面。对于计算部分,通常有三种方式,1:阻塞;2:通过各种Scroller;3:属性动画。其中1和2其实是差不多的,因为要省事的话,都会需要Scroller来执行计算任务原创 2017-11-23 16:02:06 · 534 阅读 · 0 评论 -
优雅的嵌套滑动解决方式-NestedScroll
优雅的嵌套滑动解决方式-NestedScroll嵌套滑动相信大家一定经常遇到,最烦人的就是我们有两层view,它们都能在同一个方向上滑动,这时候滑动的判断就是个头疼的问题。不过这也还好说,毕竟只要根据业务需要来决定上层layout相对于下层的layout滚动的优先级,然后决定是否拦截滑动事件即可。最最让人绝望的,就是在同一个事件流中要分别让两层view滑动!!!比如滑动时,前半段上层滑动,上层原创 2017-11-30 22:56:42 · 6298 阅读 · 0 评论 -
Android自定义view之事件传递机制
Android自定义view之事件传递机制本文是自定义view入门的第二篇文章,主要讲解Android的事件分发流程,结合上一篇的绘制等流程,基本就可以掌握自定义view的核心内容。后续我会写一些实际的小例子,加深理解。原创 2017-08-08 23:27:25 · 1476 阅读 · 2 评论 -
Android自定义view之ViewPager指示器——2
Android自定义view之ViewPager指示器——2上一篇《Android自定义view之ViewPager指示器——1》中我们一起写了测量和布局的流程。本篇我们继续讲解事件分发,以及其他的功能性方法。原创 2017-08-24 11:11:54 · 715 阅读 · 0 评论 -
Android自定义view之ViewPager指示器——1
Android自定义view之ViewPager指示器——1ViewPager应该是我们平日里接触很多的控件,但是官方却一直没有个方便的指示器来使用。本篇文章就带领大家一步一步自定义一个Indicator。本篇为第一部分,第二部分将会讨论事件分发以及提供代码下载。原创 2017-08-21 17:13:01 · 781 阅读 · 0 评论 -
Android自定义view之measure、layout、draw三大流程
自定义view之view显示流程 一个view要显示出来,需要经过测量、布局和绘制这三个过程,本章就这三个流程详细探讨一下。View的三大流程具体分析起来比较复杂,本文不会从根源详细地分析,但是可以保证能达到实用的地步。原创 2017-04-13 17:39:24 · 10272 阅读 · 2 评论 -
Android自定义view之基础知识
Android自定义view之基础知识 虽然Android已经自带了很多实用的view和layout,加以调教能实现很美观的界面,但是有一些情况下,需要实现特殊的界面效果,比如我们比较熟悉的各种播放器的滑动条环节音量的界面,不同的音量对应不同的格数,但是不必要为每个格都单独开辟一个ImageView,如果只使用一个ImageView,那么又需要准备很多的图片,这样显然是不划算的,这个时候就需要自原创 2017-04-13 17:27:30 · 855 阅读 · 0 评论