Audio
文章平均质量分 81
bberdong
专攻音视频方向
展开
-
Android Nuplayer学习笔记
作为一个audio工程师,需要了解一些Nuplayer框架和audio framework之间的联系!先从熟悉的着手,先分析下Nuplayer对AudioTrack的使用Nuplayer是在如何使用AudioTrack的?先看一个类的继承关系//MediaPlayerService.hclass MediaPlayerService : public BnMediaPlayerService{ ... class AudioOutput : public MediaPlayerBase::原创 2020-07-21 09:53:44 · 1659 阅读 · 2 评论 -
Android audio不同设备输出不同音频研究(上)
目前Android平台,不同设备,输出相同音频是怎么做的比如说.Android平台接入新设备(3.5mm耳机插入,或者蓝牙耳机连接)之后status_t AudioPolicyManager::setDeviceConnectionStateInt(audio_devices_t device, ...原创 2018-06-27 10:56:38 · 6885 阅读 · 0 评论 -
Android audio 输出设备选择过程分析(下)
上篇的分析到audio_route,现在接个力,也算是7月的作业,再不交这个月就落下了。audio_route_apply_and_update_path分两个过程,从函数名字都能看出来,一个是apply,一个是updata:audio_route_apply_path/* Apply an audio route path by name */int audio_route_ap...原创 2018-07-25 21:27:26 · 12687 阅读 · 1 评论 -
Android O 收音机学习研究(基于Car)
应用层Demo路径:packages/apps/Car/RadioBootupReceiver类监听了ACTION_BOOT_COMPLETED,然后在onReceive里启动了RadioService.CarRadioActivity作为主Activity,在onCreate里创建了mRadioController.收音机主界面有个RadioDrawer(收音机抽屉...原创 2018-08-20 09:38:05 · 9726 阅读 · 4 评论 -
蓝牙电话(hfp)与Android audio hal的关联
通话的时候,需要打开音频通路,音频设备(上下行都要)我们从这里开始:packages/apps/Bluetooth/src/com/android/bluetooth/hfpclient// in Connected stateprivate void processAudioEvent(int state, BluetoothDevice device) { ... ...原创 2018-09-30 18:33:00 · 6814 阅读 · 2 评论 -
(没有最终结论)Android 为何无法将通话音量调到最低
捋一捋代码流程:上层流程之前有分析过,可以参考这个:https://blog.csdn.net/bberdong/article/details/51792319(抱歉,那时候写的太随意)咱们就从AudioPolicyManager::checkAndSetVolume说起:status_t AudioPolicyManager::checkAndSetVolume( a...原创 2018-10-16 10:04:59 · 3404 阅读 · 13 评论 -
Android中的PCM设备
Android上的应用一般都是通过AudioTrack类来播放音频,通过AudioRecord类来录制音频。AudioTrack类和AudioRecord类是Android Frameworks封装提供给应用使用的音频接口类。这些类经过层层的Binder、JNI等调用后会调用Audio HAL层提供的相关接口。这些接口实现了对音频设备、通路等一系列操作。就这样最终完成Android App和硬件...转载 2018-10-10 10:34:50 · 2090 阅读 · 0 评论 -
Android多声道录音研究
原生Android只支持2 channel的录音。可是偏偏会有多mic的需求,比如说语音识别。目前已知TDM协议可以将多mic数据从kernel送到hal,从内核空间搬运到用户空间中。可是原生AudioRecord接口是完全不支持多channel录音数据的采集的,怎么修改,才能让原生进行支持呢?我们就从AudioRecord的构造函数开始往下研究。无论行不行,都要研究出个所以然来!我们如果写...原创 2018-11-30 21:36:34 · 9531 阅读 · 3 评论 -
Android FM录音功能
最近有个需求,FM需要做听歌识曲,然后我就发现,Andoid原生就提供了一个这个://MediaRecorder.java/*** Audio source for capturing broadcast radio tuner output.* @hide*/@SystemApipublic static final int RADIO_TUNER = 1998; 那我就要试...原创 2018-12-05 10:11:48 · 2553 阅读 · 0 评论 -
Android录音的几个过程控制
1.如何监控其他app的录音行为? 经过一番查找,发现了这个API:android.media.AudioManager.AudioRecordingCallback使用方式,大体是这样:mAudioManger = (AudioManager)mContext.getSystemService(Context.AUDIO_SERVICE); mRecordingCal...原创 2019-01-04 10:47:17 · 5939 阅读 · 11 评论 -
给Android车载蓝牙音乐添加盘控控制功能
1. 方向盘事件转换假设方向盘是通过lin总线转换的,最终来到安卓侧就是标准的keyevent:/** Key code constant: Play/Pause media key. */public static final int KEYCODE_MEDIA_PLAY_PAUSE= 85;/** Key code constant: Stop media key. */ ...原创 2019-03-09 19:43:23 · 4868 阅读 · 8 评论 -
Android audio 输出设备选择过程分析(上)
众(搞音频的(此处应该有个笑哭的表情)所周知的,要播放一个声音,创建AudioTrack之后,set函数设置参数的时候,会调用createTrack_l函数。第一步:获取outputcreateTrack_l用binder去调用AudioFlinger的createTrack创建AudioFlinger::Track之前,首先会去调用getOutputForAttr:...原创 2018-05-28 16:50:09 · 29578 阅读 · 10 评论 -
qq视频聊天时的audio录音 Framework相关代码流程
qq视频聊天时,发起方的代码调用流程。一,设置:1.qq:com.tencent.sharp.jni.AudioDeviceInterface.InitRecording(ProGuard:308)2.framework:(构造AudioRecord对象)AudioRecord:AudioRecord():format = AudioFormat: props=7 enc=2 chan=0x10r...原创 2016-06-14 11:52:51 · 1661 阅读 · 0 评论 -
Android O Audio libaudiohal模块分析
Android O Audio模块,多了一个libaudiohal文件夹:Android.mk DeviceHalLocal.h DevicesFactoryHalLocal.h EffectHalHidl.h EffectsFactoryHalLocal.h StreamHalLocal.cppConversio...原创 2018-03-07 15:43:40 · 6343 阅读 · 1 评论 -
基于Android O平台Audio Focus分析(主要结合Car)(下)
Car相关经过一番查找,只有这个地方设置了mFocusListener,我们就拿Car来做研究吧packages/services/Car/service/src/com/android/car/CarAudioService.javapublic void init() { AudioPolicy.Builder builder = new AudioPolicy.Builder(mC...原创 2018-02-06 10:58:11 · 3380 阅读 · 0 评论 -
基于Android O平台Audio Focus分析(主要结合Car)(上)
基于Android O平台Audio Focus分析(主要结合Car)1.调用示例packages/apps/Car/LocalMediaPlayer/src/com/android/car/media/localmediaplayer/Player.javaprivate boolean requestAudioFocus(Runnable onSuccess) { int re...原创 2018-02-06 10:56:08 · 8326 阅读 · 1 评论 -
Android O(8.0)音频write数据流程变化(HIDL)
简单回顾下,Audio write数据流程, AudioTrack->write AudioFlinger::PlaybackThread::threadLoop_write() mNormalSink->write 而mNormalSink其实是NBAIO_Sink,实现类是:AudioStreamOutSink 那我们直接看 frameworks/av/media/li...原创 2017-10-25 21:06:53 · 9856 阅读 · 2 评论 -
Android蓝牙音频两个问题
1.qq通话,微信通话,打电话,铃声想起时,为何铃声只在手机端响起?而蓝牙耳机里只有嘟嘟声?(1)来电铃声播放streamType = 2(AUDIO_STREAM_RING)APM::AudioPolicyManager: startOutput() output 18, stream 2, session 24(2)Engine::getStrategyForStream()...原创 2016-11-04 16:42:10 · 14396 阅读 · 2 评论 -
#Android N Ringtone总结
10月份什么都没写,怪不好意思的,今天赶紧补上一篇。这博客我是先在haroopad(ubantu)上写完之后才贴到CSDN的markDown编辑器里的。效果非常棒,推荐1.出厂默认铃声设置:vendor/xiaomi(huawei and so on)/ config/common_full_phone.mk# Default ringtonePRODUCT_PROPERTY_...原创 2016-11-02 17:15:39 · 4210 阅读 · 0 评论 -
AudioTrack学习笔记
1.AudioTrackThread threadLoop函数里会调用 nsecs_t ns = mReceiver.processAudioBuffer(); mReceiver就是一个AudioTrack,接收者?天知道为嘛这么叫。 咱们先不说这个很重要的函数 processAudioBuffer,先来看看AudioTrackThread是在哪使用...原创 2016-08-09 11:48:22 · 5664 阅读 · 4 评论 -
Audio知识总结(Android)
人的耳朵能够听到的范围,是20Hz到20000Hz.就是指物体每秒中振动20-20000次。PCM16LE双声道数据中左声道和右声道的采样值是间隔存储的。每个采样值占用2Byte空间。采样率是指:声音信号在“模→数”转换过程中单位时间内采样的次数。采样值是指每一次采样周期内声音模拟信号的积分值。对于单声道声音文件,采样数据为八位的短整数(short int 00H-FFH),而对于双声道立...原创 2017-05-16 11:01:21 · 2548 阅读 · 0 评论 -
Andorid6.0音量调整(设置)流程
按文件分步骤,代码版本Android6.0.11.上层调用AudioManager的接口,要么是setStreamVolume(),要么是按了音量键adjustStreamVolume().2.AudioService.java: 1.1分两种情况 情况一:如果setStreamVolume()--------------------------应用层调用 (1)setStreamVo...原创 2016-06-30 17:57:26 · 9118 阅读 · 0 评论 -
音频输入在有线耳机和蓝牙耳机直接切换时候mediaplayer的时间戳流程
1.有线耳机:(mType:4,OFFLOAD)一个线程PlaybackThread::threadLoop()PlaybackThread::threadLoop_write()//获取时间戳的线程NuPlayer::Renderer::fillAudioBuffer()NuPlayer::Renderer::getPlayedOutAudioDurationUs()MediaPlayerSer...原创 2016-06-23 20:40:24 · 3243 阅读 · 0 评论 -
Android O配置audio_policy
Android 7.0之前一直是用device/<company>/<device>/audio/audio_policy.conf这个文件来描述音频设备.audio_policy_conf.h中定义了audio_policy.conf路径.AudioPolicyManager.cpp:40: #include "audio_policy_conf.h"AudioPolic...原创 2018-04-12 11:09:05 · 3538 阅读 · 0 评论