android 添加一个音频

论坛 期权论坛 脚本     
匿名网站用户   2020-12-21 06:49   11   0

先熟悉下 音频设置的流程:

java层先check下streamvolumeindex

这样的话会用到 audiosystem.cpp中的getStreamVolumeIndex()

进而调用audiopolicyservice 接着就是调用audiopolicymanager

check完后,audiosystem.cpp开始setstreamvolume() 进入audiofling.cpp

设置进去。

那如果要添加一个音频的话,这几个类可定都有牵连

audiomanager是对外开放的入口,在这里添加音频类型,以供外部使用

public static final int STREAM_FM = AudioSystem.STREAM_FM;

public static final int[] DEFAULT_STREAM_VOLUME = new int[] {
4, // STREAM_VOICE_CALL
7, // STREAM_SYSTEM
4, // STREAM_RING
8, // STREAM_MUSIC
4, // STREAM_ALARM
4, // STREAM_NOTIFICATION
7, // STREAM_BLUETOOTH_SCO
7, // STREAM_SYSTEM_ENFORCED
11, // STREAM_DTMF
11, // STREAM_TTS
4, // STREAM_FM
};

当然AudioSystem里面也要添加。这个类就是一个公用的数据类定义一些数据常量。

public static final int STREAM_FM = 10;

private static final int NUM_STREAM_TYPES = 12;

/* These values must be kept in sync with AudioSystem.h */

看到这行注释,难道 .h里面也有设置还是以前的代码,已经调整代码了,但.h里面并没有关于这个的设置。

两个文件出了文件名一样外,我看不出有啥相同的地方。真实改改个明了,叫:audiountils.java更适合

还有一个无关紧要的地方就是 framwork 下面的settingprovider下面的settings.java 里面,添加上这个字符串

/**
* The mapping of stream type (integer) to its setting.
*/
public static final String[] VOLUME_SETTINGS = {
VOLUME_VOICE, VOLUME_SYSTEM, VOLUME_RING, VOLUME_MUSIC,
VOLUME_ALARM, VOLUME_NOTIFICATION, VOLUME_BLUETOOTH_SCO,"","","",VOLUME_FM,VOLUME_MATV
};


public static final String VOLUME_FM = "volume_fm";

这个类就是设置一些系统的默认值啥的。

还有个系统界面:volumepanel.java 就是系统调节音量的框

onShowVolumeChanged()里面添加:

case AudioManager.STREAM_FM: {

//这里你可以变幻icon或弹出提示等等,随你
break;
}

有的代码会在audioflinger文件夹下 添加 audio_custom_exp.h来初始化一些值

这一步不是必须的。

下面来添加 策略归属

在audioyusupolicymanager:getstrategy() 没有自定义就是在audiopolicymanagerbase下面吧

这个策略模式的添加就不说了,之前一篇关于音频策略的文章已经说了。




分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:1136255
帖子:227251
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP