
Android 开发
文章平均质量分 89
hanpfei
实时音视频开发。
展开
-
Android Automotive 调节音量的过程
Android Automotive OS (AAOS) 是在核心 Android 系统的基础之上打造而成,以支持将 Android 系统用作车辆信息娱乐系统的场景。AAOS 的音频系统对核心 Android 音频系统做了扩充,创建了新的概念和抽象,如音区等,提供了新的 API 接口,添加了的新的服务,以支持智能座舱的特殊需要。Google Android 官方文档和提供了对 AAOS 系统架构和 AAOS 音频子系统架构的清晰而权威描述。原创 2023-03-04 08:24:31 · 2433 阅读 · 0 评论 -
在 Android C/C++ 代码中接入 breakpad
本文概述在 Android 的 C++ 代码中使用 Breakpad 的方法。原创 2022-07-10 09:35:35 · 985 阅读 · 0 评论 -
一种 Android 用户事件的自适应分发方法
Android 设备的远程操作控制中,用户可以在控制端看到远程 Android 设备的屏幕,并通过在控制端执行操作,控制远端 Android 上应用程序及系统的行为。控制端可以是任意的系统及平台,如 Windows,Android 等。控制端捕获用户操作的事件,将事件传输到远端的 Android 系统中,控制远端的 Android 系统。控制端和远程 Android 设备之间的通信中,用户事件通过事件的类型和点击/触摸事件的归一化屏幕坐标描述。在控制端支持多点触控的情况下,用户事件可能同时产生于两个不同原创 2021-08-31 07:44:38 · 156 阅读 · 0 评论 -
Android OpenSL ES 对象结构
OpenSL ES 是 Khronos Group 为嵌入式系统开发的调优的免版权费、跨平台、硬件加速的音频 API 规范。Android 提供了这一 API 规范的 Android 专有实现,并允许应用程序通过 NDK 调用这些 API。Android 应用可以借助这一 API,使用 C 或 C++ 实现高性能、低延迟的音频。OpenSL ES™ 标准与 Android Java 框架中的 MediaPlayer 和 MediaRecorderAPI 提供类似的音频原创 2020-11-10 23:09:34 · 545 阅读 · 0 评论 -
Android Studio 构建
获得源码分支当前我们具有如下老版本 Android Studio 的分支: dev branch release branch IntelliJ Notes studio-1.0-dev studio-1.0-release idea13-dev 这是 1.0 的分支,已经关闭 studio-1.1-dev studio-1.1-release idea13翻译 2017-12-27 09:48:38 · 452 阅读 · 0 评论 -
使用 GDB 调试 Android 应用
GNU 工程调试器(GDB)是一个常用的 Unix 调试器。本文详述使用 gdb 调试 Android 应用和进程的方法。调试运行中的应用或进程gdbclient 是源码库中的一个 shell 脚本调试工具,它位于 android-7.1.1_r22/development/scripts/gdbclient。该脚本将根据 Android 源码库的根目录,设置端口转发,在设备上启动适当原创 2018-01-31 09:49:15 · 1567 阅读 · 1 评论 -
关于 ADB 实现的说明
I.总体概述Android 调试桥(ADB)用于:跟踪所有连接的或运行于给定开发者主机上的 Android 设备和模拟器实例。为客户端(命令行用户,或像 DDMS 这样的辅助程序)实现各种控制命令(比如,”adb shell”,”adb pull”,等等)。这些命令在 ADB 中称为 ‘service’。总的来说,一切工作通过以下组件完成:ADB server这是一个翻译 2018-01-31 12:20:53 · 535 阅读 · 0 评论 -
OpenCV4Android JavaCameraView实现
OpenCV4Android中,主要用 org.opencv.android.JavaCameraView(后面用JavaCameraView 指代)、org.opencv.android.NativeCameraView(后面用NativeCameraView 指代)及 org.opencv.android.CameraBridgeViewBase(后面用CameraBridgeViewBase原创 2018-02-04 12:42:26 · 4275 阅读 · 0 评论 -
Android low memory killer 机制
Android中,进程的生命周期都是由系统控制的。即使用户在界面上关掉一个应用,切换到了别的应用,那个应用的进程依然是存在于内存之中的。这样设计的目的是为了下次启动应用能更加快速。当然,随着系统运行时间的增长,内存中的进程可能会越来越多,而可用的内存则将会越来越少。Android Kernel会定时执行一次检查,杀死一些进程,释放掉内存。那么,如何来判断,哪些进程是需要杀死的呢?答案就是:lo原创 2018-02-04 13:01:20 · 2961 阅读 · 0 评论 -
Android 根证书管理与证书验证
PKI 体系依赖证书执行极为关键的身份验证,以此确认服务端的可信任性。证书验证在 SSL/TLS 握手过程中完成,验证过程通常包含三个步骤:验证证书的合法性:这一步主要是验证证书是由合法有效的 CA 签发的。在客户端预先保存一个可靠的 CA 的根证书库,比如 FiexFox、Chrome、Android、Microsoft 等都有维护自己的根证书库,并据此验证服务端证书链的合法性。PKI 体...原创 2018-03-22 16:30:20 · 11822 阅读 · 2 评论 -
为 Android 编译 MuPDF 查看器
先决条件你需要一个 工作的 Android 开发环境,它由 Android SDK 和 Android NDK 组成。建立这一环境最简单的方式就是使用 Android Studio 下载并安装 SDK 和 NDK。确保 Android/Sdk/tools 和 Android/Sdk/ndk-bundle 目录在你的 PATH 上。你也需要 Oracle 的 Java JDK(OpenJDK...原创 2018-06-08 14:05:11 · 5944 阅读 · 1 评论 -
mupdf-android-viewer 设计与实现浅析
目前在 Android 应用开发中,可用的 PDF 文档展示的开源项目好几个,最为方便的是 AndroidPdfViewer,它基于 PdfiumAndroid 开发而来,而后者则是由 AOSP 中的 pdfium 封转而来。另外一个 PDF 文档显示的开源项目 mupdf 也非常强大。本文简单分析 MuPDF 库的 Android 封装。MuPDF 是一个用于查看和改变 PDF,XPS 和 ...原创 2018-06-27 14:11:00 · 4769 阅读 · 0 评论 -
Android 模拟器下载、编译及调试
Android 模拟器源码下载Android 模拟器源码的下载与 Android AOSP 源码库的下载过程类似,可以参考 Google 官方提供的 Android 源码下载文档 来了解这个过程。 不同的地方在于,下载 Android 源码,在初始化 repo 客户端,初始化对某个分支的下载时,通过如下的命令指定该 Android 分支:$ repo init -u https://andro原创 2017-09-11 13:33:23 · 2616 阅读 · 3 评论 -
Chromium Android编译指南
先决条件需要有一台装有Linux操作系统环境的主机来做编译,这个环境的搭建配置方法可以参考Linux-specific build instructions。目前还不支持在其它(Mac/Windows)平台上来为Android编译Chromium。获取代码首先需要下载并安装depot_tools包。在一个适当得目录下clone depot_tools包:$ git clone https:原创 2017-08-17 10:36:59 · 945 阅读 · 0 评论 -
Android 硬件 OpenGL ES 模拟设计概述
简介Android 平台的 OpenGL ES 模拟由多个组件实现,它们是:一些宿主机的 “翻译器” 库。它们实现了由 Khronos 定义的 EGL,GLES 1.1 和 GLES 2.0 ABIs,并把对应的函数调用翻译为适当的桌面 API,比如:实现 EGL 接口的是 GLX (Linux),AGL (OS X) 或 WGL (Windows)实现 GLES 1.1 和 GLES 2.0翻译 2017-09-16 15:43:01 · 2331 阅读 · 0 评论 -
Simpleperf介绍
什么是simpleperfSimpleperf是Android平台的一个本地层性能分析工具。它的命令行界面支持与linux-tools perf大致相同的选项,但是它还支持许多Android特有的改进。Simpleperf是Android开源项目(AOSP)的一部分。其源代码 位于。其最新的文档 位于。Bugs 和 功能需求可以提交到 githb上。Simpleperf是如何工作的现代的C原创 2017-08-17 10:38:39 · 9118 阅读 · 0 评论 -
Android app native代码性能分析
分析我们app中native层的C/C++代码性能,能够方便我们找出其中的性能瓶颈,并在稍后做有针对性的优化。下载android-ndk-profiler工欲善其事,必先利其器,我们先要有良好的工具来支持我们做性能分析的愿望。android-ndk-profiler就是目前我们可用的比较好的工具。原来这个项目是托管在google的代码托管服务器的,地址,但现在它已经被迁移到gihub。访问原来原创 2017-08-17 10:38:36 · 506 阅读 · 0 评论 -
Chromium Android开发的Eclipse配置
单次的Eclipse配置这一节包含第一次启动Eclipse时需要的设置步骤。你应该只需浏览这个部分一次,即使你切换了workspaces。启动Eclipse。它可以通过如下的两种方式启动:在Ubuntu的主菜单,选择 Applications > Programming > Eclipse 4.5在命令行中,输入 eclipse45选择你硬盘上的某个位置作为 workspac原创 2017-08-17 10:38:01 · 290 阅读 · 0 评论 -
使用LeakTracer检测android NDK C/C++代码中的memory leak
Memory issue是C/C++开发中比较常遇到,经常带给人比较大困扰,debug起来又常常让人无从下手的一类问题,memory issue主要又分为memory leak,野指针,及其它非法访问等问题。在android平台上,使用NDK开发C/C++ code,由于没有其它成熟的平台,如Windows,Linux等上面可用的许多工具,使得memory issue变得更为棘手。问题存在,那解原创 2017-08-17 10:37:58 · 1074 阅读 · 1 评论 -
在Android中使用FlatBuffers
总览先来看一下 FlatBuffers 项目已经为我们提供了什么,而我们在将 FlatBuffers 用到我们的项目中时又需要做什么的整体流程。如下图::.jpg在使用 FlatBuffers 时,我们需要以特殊的格式定义我们的结构化数据,保存为 .fbs 文件。FlatBuffers 项目为我们提供了编译器,可用于将 .fbs 文件编译为Java文件,C++文件等,以用于我们的项目。F原创 2017-08-17 10:37:49 · 1692 阅读 · 0 评论 -
在Android中使用Protocol Buffers
网络性能优化的终极手法就是不通过网络传输,但这常常是不可能的。但我们还是可以通过对网络传输的数据本身做优化,来获得更好的性能,性能就应该从每一个可能的地方榨取。这里来看一下 Protocol Buffers 。Protocol Buffers 是一个序列化结构数据的灵活、高效且自动化的机制——类似于XML,但更小,更快,更简单。定义一次结构化数据的方式,然后就可以使用专门生成的代码简单地写入,或原创 2017-08-17 10:37:46 · 1042 阅读 · 0 评论 -
在Android中使用FlatBuffers - 简介
JSON - 可能每个人都知道这个轻量的数据格式几乎被用在了所有的现代服务器中。相对于过去流行的一些东西,如可怕的XML,它更轻量,更可读,对开发更友好。JSON是语言独立的数据格式,但解析和格式转化,比如转为Java对象,耗费了我们的时间和内存资源。几天以前,Facebook宣布,在它的Android app中的数据处理部分获得了巨大的性能提升。那与 几乎在整个app中丢弃JSON格式,而用F原创 2017-08-17 10:37:14 · 502 阅读 · 0 评论 -
用FlatBuffers提升Android平台上Facebook的性能
在Facebook上,人们可以通过阅读状态更新和查看照片同他们的家人和朋友来往。在我们的后端,我们保存了组成这些连接的社交图谱的所有数据。在我们的移动客户端,我们不能下载完整的图谱,而是以一个本地的树结构的形式下载一个节点及它的一些连接。下面的图片描述了在一个含有照片附件的story中这是如何工作的。在这个例子中,John创建了一个story,他的朋友们很喜欢它并加了评论。图片的左边是社交图谱,原创 2017-08-17 10:37:17 · 500 阅读 · 0 评论 -
懒人chromium net android移植指南
Chromium浏览器的网络库是一个功能非常强大的网络库,它支持的网络协议非常多,除了常见的HTTP/1.1,它还支持HTTP/2,QUIC等比较新的协议。这里我们尝试将Chromium net网络库移植到Android平台,在我们的Android应用中跑起来。移植Chromium net网络库有两种方式,一是将Chromium net网络库及其依赖的所有其它库编译为动态链接库,将这些so导入我原创 2017-08-17 10:37:11 · 3571 阅读 · 0 评论 -
chromium net android移植
Chromium net是chromium浏览器及ChromeOS中,用于从网络获取资源的模块。这个网络库是用C++编写的,且用了大量的C++11特性。它广泛地支持当前互联网环境中用到的大量的网络协议,如HTTP/1.1,SPDY,HTTP/2,FTP,QUIC,WebSockets等;在安全性方面也有良好的支持,如SSL等;同时,针对性能,它也有诸多的优化,如引入libevent的基于事件驱动的原创 2017-08-17 10:37:08 · 2550 阅读 · 0 评论 -
JNI 技巧
JNI 是指 Java 本地层接口(Java Native Interface)。它为用 Java 语言编写的受控代码定义了一种与本地层代码(用 C/C++ 编写)交互的方式。它是厂商无关的,其支持从动态共享库加载代码,尽管有时笨重,但它仍是有效的。如果你对它还不熟悉,可以阅读 JNI规范(Java Native Interface Specification) 来获得对它的更多了解,了解 JNI翻译 2017-08-16 19:51:02 · 1806 阅读 · 0 评论