ANDROID Audio音效的设置和控制(3)

2020-04-18 02:32

向Java提供native_write_byte和native_write_short接口〃它们一般是通过调用AudioTrack的write()函数来完成的〃只是在Java的数据类型和C++的指针中做了一步转换。

1.3.5 Audio系统的Java代码

Android的Audio系统的相关类在android.media包中〃Java部分的代码路径为: frameworks/base/media/java/android/media

Audio系统主要实现了以下几个类:android.media.AudioSystem、android.media. AudioTrack、android.media.AudioRecorder、android.media.AudioFormat。前面的3个类和本地代码是对应的〃AudioFormat提供了一些Audio相关类型的枚举值。

注意:在Audio系统的Java代码中〃虽然可以通过AudioTrack和AudioRecorder的write()和read()接口〃在 Java层对Audio的数据流进行操作。但是〃更多的时候并不需要这样做〃而是在本地代码中直接调用接口进行数据流的输入/输出〃而Java层只进行控制类操作〃不处理数据流。

ArcherMind Inc. Proprietary – For Internal Use Only

CONFIDENTIAL Date

Page 11 of 33

ArcherMind Inc. Proprietary – For Internal Use Only

CONFIDENTIAL Date

Page 12 of 33

2.0 音效设置及控制

2.1 不同类型声音资源的设置

(1)TCL项目的默认音频文件资源在

gin_wimdata_ng/wcustores/Audios/frameworks/base/data/sounds/下面〃其中有Alarm、Notification、Ringtones、Switch_On_Off、UI这几个文件夹〃分别存放不同类型的音频文件资源

(2)位置:frameworks/base/media/java/android/media/AudioService.java

/* Sound effect file names */

private static final String SOUND_EFFECTS_PATH = \; private static final String[] SOUND_EFFECT_FILES = new String[] { //PR-240541-Jingyang-Wang begin //\ \,

//PR-240541-Jingyang-Wang end \, \, \, \,

\//CR231720-Xiaodan-Fan-001 };

/* Sound effect file name mapping sound effect id (AudioManager.FX_xxx) to * file index in SOUND_EFFECT_FILES[] (first column) and indicating if effect * uses soundpool (second column) */ private int[][] SOUND_EFFECT_FILES_MAP = new int[][] { {0, -1}, // FX_KEY_CLICK

{0, -1}, // FX_FOCUS_NAVIGATION_UP

{0, -1}, // FX_FOCUS_NAVIGATION_DOWNa/audio/ui/ 目录下。 {0, -1}, // FX_FOCUS_NAVIGATION_LEFT {0, -1}, // FX_FOCUS_NAVIGATION_RIGHT {1, -1}, // FX_KEYPRESS_STANDARD {2, -1}, // FX_KEYPRESS_SPACEBAR {3, -1}, // FX_FOCUS_DELETE {4, -1} // FX_FOCUS_RETURN };

/**

* Loads samples into the soundpool. * This method must be called at when sound effects are enabled */

public boolean loadSoundEffects(){

ArcherMind Inc. Proprietary – For Internal Use Only

CONFIDENTIAL Date

Page 13 of 33

String filePath = Environment.getRootDirectory() + SOUND_EFFECTS_PATH + SOUND_EFFECT_FILES[SOUND_EFFECT_FILES_MAP[effect][0]];

return true;

}

private void playSoundEffect(int effectType, int volume) {

}

音效文件放在:/system/media/audio/ui/ 目录下。

2.2 拍照/录音时候的声音文件

位置:frameworks/base/services/camera/libcameraservices/CameraService.cpp下

void CameraService::loadSound() {

Mutex::Autolock lock(mSoundLock);

LOG1(\

if (mSoundRef++) return;

char value[PROPERTY_VALUE_MAX];

property_get(\

int disableSound = atoi(value); // [camera], daming.zou@jrdcom.com, Sep 13, 2011, // FR158416, add SDMID Def_shuttersound_enable

char soundPlayValue[PROPERTY_VALUE_MAX];

property_get(\

ArcherMind Inc. Proprietary – For Internal Use Only

CONFIDENTIAL Date

Page 14 of 33

if(!disableSound && !strncmp(soundPlayValue, \

mSoundPlayer[SOUND_SHUTTER] = newMediaPlayer(\

mSoundPlayer[SOUND_RECORDING] = newMediaPlayer(\

}

// create listener object

mSoundListener = new ShutterSoundListener();

if(mSoundPlayer[SOUND_SHUTTER].get() && mSoundListener.get())

{

mSoundPlayer[SOUND_SHUTTER]->setListener(mSoundListener); //setlistener

} }

2.3 默认铃声的设置

文件:frameworks/base/media/java/android/media/AudioService.java

TCL项目中默认的设置位于

?

gin_wimdata_ng/wprocedures/plf〃具体到Setting〃就是isdm_Settings.plf和isdm_SettingsProvider.plf这两个文件

例如isdm_Settings.plf中以下定义定义了iIncoming call默认铃声

ro_def_ringer_stream_uri_general

ro.def.ringer_stream_uri_general

ArcherMind Inc. Proprietary – For Internal Use Only

CONFIDENTIAL Date

Page 15 of 33


ANDROID Audio音效的设置和控制(3).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:二外法语讲义—词汇语法篇-1

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: