Android MediaRecorder的prepare流程

最近在使用MediaRecord实现录屏功能,因为平台没有自带麦克风,是外接USB,遇到可不少坑。

跟踪这个流程原因是,有其他app已经在使用USB麦克风了,我再开启自己录屏的时候ANR,ANR的原因是MediaRecorder卡在prepare。

MediaRecorder的prepare流程如下:

1.\Android\framework\av\media\libmedia\MediaRecorder.cpp -> prepare
2.\Android\framework\av\media\libmediaplayerservice\StagefrightRecorder.cpp->prepare->prepareInternal-> etupMPEG4orWEBMRecording -> setupAudioEncoder -> createAudioSource
3. \Android\framework\av\media\libstagefright\AudioSource.cpp -> AudioSource
4. \Android\framework\av\media\libaudioclient\AudioRecord.cpp -> AudioRecord -> set-> openRecord_l
5.\ Android\framework\av\services\audiopolicy\managerdefault\AudioPolicyManager.cpp -> getInputForAttr-> getInputForDevice
6. \ Android\framework\av\services\audiopolicy\service\AudioPolicyClientImpl.cpp -> openInput
7. \ Android\framework\av\services\audioflinger\AudioFlinger.cpp -> openInput
8. \ Android\framework\av\media\libaudiohal \DeviceHalHidl.cpp -> openInputStream
9. \ Android\hardware\interfaces\audio\2.0\default\Device.cpp -> openInputStream
10. \ Android\hardware\libhardware\modules\usbaudio\Audio_hal.c -> adev_open_input_stream -> profile_read_device_info(in->profile)

一直到hardware层,系统运行到Audio_hal.c的adev_open_input_stre方法,在profile_read_device_info(in->profile)读取设备信息的时候一直没有响应

再往估计要去看硬件驱动层了

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值