Android
文章平均质量分 81
njuitjf
不积跬步无以致千里
展开
-
在 ubuntu 下编译 android 找不到头文件问题解决
在 ubuntu 下编译 android 找不到头文件问题解决在 ubuntu 下编译 android 的时候, 发现编译错误, 有些头文件找不到, 如:致命错误: alsa/asoundlib.h: 没有那个文件或目录网上搜索了一下, 原因是某些库没安装导致。可以使用 apt-file 查看该头文件在什么库中, 找到相应的库, 安装即可。安装 apt-file :sudo原创 2015-02-06 15:17:46 · 4924 阅读 · 0 评论 -
Android Audio延迟(latency)
最近在看Android中播放延迟的问题,看了下代码,发现AudioTrack类中的函数latency有以下注释: /* Returns this track's latency in milliseconds. * This includes the latency due to AudioTrack buffer size, AudioMixer (if any)原创 2012-06-06 10:19:25 · 12777 阅读 · 6 评论 -
用C++ AudioTrack播放超短文件
用C++ AudioTrack播放超短文件所谓的超短文件,就是特别短的文件。有多短?就是比min buffer还短。用过Android中AudioTrack的大虾都应该对min buffer不陌生。Java中可以通过调用函数getMinBufferSize获得。C++中可以通过调用getMinFrameCount函数,然后算的。超短文件播放有个什么问题呢原创 2012-04-26 21:07:27 · 3358 阅读 · 3 评论 -
MODE_STATIC模式AudioTrack的使用方法
使用MODE_STATIC模式的AudioTrack时,遇到了播放不正常的问题。使用比较短的文件,发现开始几次,声音都没出来,到最后一次,感觉是把前面几次积累的声音一次播放出来了。后来查了下资料,发现使用MODE_STATIC模式的AudioTrack的方法不对。正确使用的方法如下:... if (NULL == mAudioOut) {原创 2012-04-11 17:47:19 · 5704 阅读 · 1 评论 -
Android Audio代码分析26 - Audio Strategy
在看示例代码 testPlaybackHeadPositionIncrease 的时候,我们对 play 函数进行了研究。不过,当时对 Android 中声音竞争策略相关的内容,并没有详细分析。今天就以 AudioTrack 的播放为引子,来仔细看看 Anroid 中各种声音是以什么样的策略来竞争的。从 Java 侧类 AudioTrack 的 play 函数到函数 Audio原创 2011-10-25 18:22:36 · 6765 阅读 · 2 评论 -
Android Audio代码分析25 - JNI callback
今天来说说 native 中的代码是如何调用 java 侧代码的。在看 setEnabled 代码的时候,我们了解到,最终在函数 EffectHandle::setEnabled 中会调用 java 侧的函数, 将状态改变的事件通知到 java 侧。今天就以 AudioEffect 中的 native 侧调用 java 函数作为例子,来说明 JNI 中的 callback 函数。原创 2011-10-21 15:48:37 · 3254 阅读 · 0 评论 -
Android Audio代码分析24 - AudioEffect::setEnabled函数
之前已经看过,通过接口getEnabled可以取得effect的enable状态。今天来看看如何来改变enable状态。*****************************************源码************************************************* //Test case 2.0: test setEnabled()原创 2011-10-21 12:20:29 · 3839 阅读 · 0 评论 -
Android Audio代码分析20 - queryEffects函数
今天开始看看AudioEffect相关的接口。这个类,之前有看过。不过当时只是从类的定义出发,了解了一下基本的内容。这次从测试代码使用的接口出发,逐步撕开AudioEffect的面纱。*****************************************源码*************************************************原创 2011-10-20 17:35:02 · 2680 阅读 · 0 评论 -
Android Audio代码分析19 - setPosition函数
之前我们看过get position,今天来看看set position。*****************************************源码************************************************* //Test case 3: setPlaybackHeadPosition() on paused track原创 2011-10-19 17:33:15 · 4136 阅读 · 0 评论 -
Android Audio代码分析18 - setSampleRate函数
今天来看看playback rate相关的接口。包括set和get。*****************************************源码************************************************* //Test case 6: setPlaybackRate() accepts values twice the outp原创 2011-10-19 16:58:33 · 5515 阅读 · 0 评论 -
Android Audio代码分析17 - setvolume函数
下面来看看音量设置相关的接口。*****************************************源码************************************************* //Test case 1: setStereoVolume() with max volume returns SUCCESS @LargeTest原创 2011-10-19 15:50:02 · 7455 阅读 · 6 评论 -
Android Audio代码分析16 - testPlaybackHeadPositionAfterPause函数
play, stop, flush这几个函数,今天来看看pause函数。*****************************************源码************************************************* //Test case 4: getPlaybackHeadPosition() is > 0 after play()原创 2011-10-19 15:03:10 · 1887 阅读 · 0 评论 -
Android Audio代码分析15 - testPlaybackHeadPositionAfterFlush
上次看到的testPlaybackHeadPositionIncrease函数中,先play了一会,然后获取position。今天看个复杂点的,先play,然后stop,之后在flush,此时再获取position会是什么情况呢?*****************************************源码**********************************原创 2011-10-19 14:22:11 · 2787 阅读 · 0 评论 -
Android Audio代码分析27 - Strategy 优先级
status_t AudioFlinger::PlaybackThread::Track::start(){ status_t status = NO_ERROR; LOGV("start(%d), calling thread %d session %d", mName, IPCThreadState::self()->getCallingPid原创 2011-11-07 17:42:01 · 7179 阅读 · 1 评论 -
AudioTrack::setMarkerPosition函数的使用方法
AudioTrack::setMarkerPosition函数的使用方法这两天在调查一个问题,就是想知道一段音频是什么时候播放结束的。查了些资料,知道AudioTrack类中有一个setMarkerPosition函数。在构造AudioTrack对象的时候,传一个回调函数指针,然后再通过setMarkerPosition函数设置一个响应点,当播放到这一点时,回调函数就会被执原创 2012-04-26 21:08:20 · 3719 阅读 · 1 评论 -
类AudioTrack的函数getMinFrameCount(java侧为getMinBufferSize)
以前看这个函数的时候,对min frame是如何计算得来的,并不是很了解。今天又看了看,终于有点头绪了。status_t AudioTrack::getMinFrameCount( int* frameCount, int streamType, uint32_t sampleRate){ int afSampleRate;原创 2012-06-06 16:13:52 · 4463 阅读 · 0 评论 -
启动MixerThread
今天想改变一下MixerThread的优先级。看了下,原来在Thread的run函数中可以指定线程的优先级。接下来就需要找到哪个地方调用了MixerThread的run函数,也就是启动了MixerThread。想到,调用AudioTrack的start函数,可以开始播放。MixerThread的启动是不是由这儿驱动的呢?看了下函数AudioTrack::start,原创 2012-06-15 18:03:41 · 3199 阅读 · 0 评论 -
移植alsa-lib遇到的问题
移植alsa-lib遇到的问题linux audio alsa lib VERSIONED_SYMBOLS这两天移植alsa lib时遇到了一个问题,被困住了好久。做个记录,以后再被同样问题困住。问题背景是这样的,有个项目,客户要求使用新的alsa-lib库。到alsa官网上看了下,最新的是1.0.28。既然可以要用新的,咱们就彻底满足客户,用个最新的。接下原创 2014-10-28 19:15:26 · 5755 阅读 · 1 评论 -
repo init - gpg: 无法检查签名:找不到公钥
今天在取android代码时,发现repo init提示以下错误:在网上搜索了一下,在下面这个帖子到帮助下,解决了问题:http://bbs.csdn.net/topics/390705429该帖子中提到的解决方法有:方法一:出现此问题是repo版本不对的问题,具体原因可网上搜索下,据说是google 代码传错导致。我更换过repo后,问题已经解决。curl h原创 2014-08-05 16:12:43 · 8250 阅读 · 0 评论 -
linux内核休眠与唤醒
转自:http://blog.csdn.net/zhandoushi1982/article/details/5759050 在Linux中,休眠主要分三个主要的步骤:(1)冻结用户态进程和内核态任务;(2)调用注册的设备的suspend的回调函数;(3)按照注册顺序休眠核心设备和使CPU进入休眠态。 冻结进程是内核把进程列表中所有的进程的状态都设置为停止,并且保存下转载 2014-01-08 11:36:22 · 3791 阅读 · 0 评论 -
Android的休眠与唤醒 && 实例
转自:http://blog.csdn.net/zhandoushi1982/article/details/5765219 Android 休眠(suspend),在一个打过android补丁的内核中,state_store()函数会走另外一条路,会进入到request_suspend_state()中,这个文件在earlysuspend.c中。这些功能都是android系统转载 2014-01-08 10:57:20 · 1449 阅读 · 0 评论 -
/proc/sysrq-trigger文件的强大功能
/proc/sysrq-trigger文件的强大功能/proc/sysrq-trigger该文件能做些什么事情呢? # 立即重新启动计算机 (Reboots the kernel without first unmounting file systems or syncing disks attached to the system)echo "b" > /proc/转载 2013-09-26 12:09:10 · 3091 阅读 · 0 评论 -
Android Audio代码分析2 - 函数getMinBufferSize (补充)
最近在看android audio部分代码时,对getMinBufferSize有了一点新体会,之前的疙瘩终于解开了。也要感谢ldh_123456兄弟的回复,帮助我对此进行了理解。详细的调用过程就不说了,简单说一下下面几行代码的理解。 // Ensure that buffer depth covers at least audio hardware latency原创 2013-08-13 11:55:38 · 4671 阅读 · 3 评论 -
AudioTrack中write函数size疑问
对AudioTrack::write函数中,copy数据时,数据size相关的理解。只是看AudioTrack::write代码,可能会存在copy到无效数据的情况。但是通过对AudioTrack::obtainBuffer函数的分析,可知,这种问题已经在代码中被有效规避。原创 2013-08-20 10:57:55 · 6707 阅读 · 0 评论 -
android的init过程分析
转自:http://blog.csdn.net/windskier/article/details/6416547 前言Android系统是运作在linux kernal上的,因此它的启动过程也遵循linux的启动过程,当linux内核启动之后,运行的第一个进程是init,这个进程是一个守护进程,它的生命周期贯穿整个linux 内核运行的始终, linux中所有其他的进程的共同始祖均为转载 2013-07-11 16:17:41 · 1136 阅读 · 0 评论 -
Android.mk简介
转自:http://blog.csdn.net/hudashi/article/details/7059006文章参照:http://blog.sina.com.cn/s/blog_67d8d7060100q8un.html Android.mk文件是GNU Makefile的一小部分,它用来对Android程序进行编译。因为所有的编译文件都在同一个 GNU转载 2012-08-16 15:49:55 · 834 阅读 · 0 评论 -
Android上网彩信设置
转自:http://hmu081157.chinaw3.com/article-36.html设置→无线和网络→移动网络设置→接入点名称首先选择重置为默认值,然后重启手机,在进入【接入点名称】后,新建新接入点中国移动连接互联网设置:名称:GPRS连接互联网接入点名称:cmnet彩信协议:WAP 2.0MCC:460MNC:00接入点名称类型:defaul转载 2012-08-19 20:39:51 · 1099 阅读 · 0 评论 -
LOCAL_PRELINK_MODULE和prelink-linux-arm.map
转自: http://blog.csdn.net/evilcode/article/details/6872487LOCAL_PRELINK_MODULE Prelink利用事先链接代替运行时链接的方法来加速共享库的加载,它不仅可以加快起动速度,还可以减少部分内存开销, 是各种Linux架构上用于减少程序加载时间、缩短系统启动时间和加快应用程序启动的很受转载 2012-08-16 15:51:00 · 902 阅读 · 0 评论 -
android 属性系统,SystemProperties 的简介---转载
每个属性都有一个名称和值,他们都是字符串格式。属性被大量使用在Android系统中,用来记录系统设置或进程之间的信息交换。属性是在整个系统中全局可见的。每个进程可以get/set属性。在系统初始化时,Android将分配一个共享内存区来存储的属性。这些是由“init”守护进程完成的,其源代码位于:device/system/init。“init”守护进程将启动一个属性服务。属性服务在“init转载 2012-07-17 21:22:52 · 1033 阅读 · 0 评论 -
Android 属性设置失败
今天想在system server进程下设置一个属性,ro.media.mine,发现没有设置成功。后来查了下,原来设置属性之前,会做一个权限判断,判断依据就是一段一段的前缀。判断用的结构体如下: struct { const char * prefix; unsigned int uid; } prope原创 2012-07-17 21:18:36 · 1906 阅读 · 0 评论 -
Android Audio代码分析23 - attachAuxEffect函数
今天来看看如何将AudioEffect与AudioTrack关联起来。*****************************************源码************************************************* //Test case 1.7: test auxiliary effect attachement on AudioTr原创 2011-10-20 21:43:11 · 3636 阅读 · 0 评论 -
Android Audio代码分析22 - AudioEffect::getEnabled函数
今天来看看AudioEffect中enable相关的接口。*****************************************源码************************************************* //Test case 1.3: test getEnabled() failure when called on released原创 2011-10-20 19:42:21 · 2047 阅读 · 0 评论 -
Android音频数据传输
MediaPlayer那边就不看了,从AudioTrack开始研究。1、AudioTrack::write函数调用函数obtainBuffer获取到一块buffer,然后把传入的数据copy到获取的buffer中。2、AudioTrack::obtainBuffer函数该函数的主要功能就是对传入的audioBuffer进行赋值。看看audioBuffer的类型:原创 2012-04-11 22:32:14 · 8911 阅读 · 0 评论 -
setStreamMute无法Mute部分stream
最近在写Android的Audio代码时发现,setStreamMute对一些stream type没有效果。例如alarm stream。后调查发现,在set stream mute的时候会调用函数isStreamAffectedByMute来判断指定的stream是否可以mute。函数isStreamAffectedByMute中使用mMuteAffectedStrea原创 2011-11-30 19:03:29 · 8304 阅读 · 4 评论 -
Android Audio相关 AudioFlinger类
1、继承自BinderService和BnAudioFlinger。2、定义了一些枚举常量。hardware_call_state : AUDIO_HW_OUTPUT_OPEN等track_state : RESUMING等3、类 Playback原创 2011-08-15 09:50:24 · 6197 阅读 · 0 评论 -
AudioSystem类
1、白手起家,没有父类。2、定义了一堆枚举,包括stream类型,音频格式,音频channel等。3、函数get_audio_flinger中,会获取AudioFlinger,然后创建一个AudioFlingerClient对象,并调用AudioFling原创 2011-08-11 18:16:36 · 6044 阅读 · 0 评论 -
Android媒体相关开发应用程序接口
翻译自:http://developer.android.com/guide/topics/media/index.htmlMediaAndroid框架支持各种普通media类型的编解码,因此你可以很容易地把音频,视频和图片整合到你的应用程序中。通过使用M翻译 2011-08-11 16:01:56 · 7418 阅读 · 0 评论 -
Ubuntu 10.4下安装source navigator 一步一步教你如何安装
转自:http://hi.baidu.com/lblaotou/blog/item/385d860a15cfec29b0351d6e.html习惯了在windows下用vc看工程代码,若是再装上个vc助手,那就相当的爽了!在Linux环境下呢,百度了下,看到了sour转载 2011-08-07 21:50:19 · 1216 阅读 · 0 评论 -
Ubuntu上怎么安装Eclipse Android 开发环境
http://www.bananawolf.com/html/2011/06/628.html最近Android 不是很热么,我们公司也有相关业务,老总叫我也学习一下!我么当然很乐意去学习这样一个热门的东西,就去书店买一本《Android SDK 开发范例大全》,转载 2011-08-07 15:00:24 · 7770 阅读 · 0 评论 -
命令行创建android avd指定屏幕大小
打算创建一个横800纵480的avd。这个在eclipse下很容易实现,创建的时候在选框中指定即可。这次想在命令行的模式下创建。看了下www.android.com上的介绍,也没说到如果指定屏幕大小。不过貌似可以在出现以下提示:Do you wish to cre原创 2011-08-07 10:00:44 · 4708 阅读 · 0 评论