【推荐】BREW中 - 声音相关问题

a. ISoundPlayer 似乎在我的设备上不工作。 为什么?
适用版本: 1.0, 1.1, 2.0
使用 ISoundPlayer 接口要求设备上有多媒体支持(QUALCOMM 的 Compact Multimedia Extension - CMX 或类似)。 例如,Kyocera 3035 没有 CMX,因而不支持 ISoundPlayer 接口。

b. 如何在音调序列中插入一段静音?
适用版本: 1.0, 1.1, 2.0
在 BREW SDK® 1.1 以上版本中,可以使用 AEESoundTone AEE_TONE_SILENCE 插入一段静音。 BREW SDK® 版本 1.0 不支持静音插入。 如果您使用的是 SDK 1.0,则可以选择与静音相似的音调,或者停止播放一段时间,然后再继续播放。

c. ISOUND_Vibrate 似乎在我的电话上不工作。 为什么?
适用版本: 1.0, 1.1, 2.0
此功能要求 OEM 支持。 实施此功能不要求 OEM。

d. BREW 是否支持 MP3 播放?
适用版本: 1.0, 1.1, 2.0
是,只要设备芯片集和上面的多媒体层(CMX 或类似)(带 MP3 解码器)存在,BREW 就可以支持通过 ISoundPlayer 接口播放 MP3 文件。

有关不同设备功能的详细信息,请参阅电话资料。

e. BREW 支持哪些 MIDI 格式?
适用版本: 1.0, 1.1, 2.0
所有 BREW 版本都支持 MIDI 格式 SMF0(标准 MIDI 格式)和 SMF1。

f. BREW 是否支持 WAV 文件播放? 如何创建 QCP 格式的文件?
适用版本: 1.0, 1.1, 2.0
BREW 1.0、1.1 和 2.0 版本都不支持播放 WAV 格式文件。 随 BREW SDK® 1.1 以上版本提供的 PureVoice Convertor Utility Tool 可以将 .WAV 文件转换成 .QCP(反之亦然)。

g. BREW 是否支持 PMD 格式?
适用版本: 1.0, 1.1, 2.0
PMD 文件包含音频和(或)视频。 BREW 2.0 可以播放混和音频和视频的 PMD 文件。 BREW 1.0 和 1.1 只能播放音频文件。 在设备上播放 PMD 文件要求 OEM 支持。

h. 如何获取有关 CMX 的详细信息?
适用版本: 1.0, 1.1, 2.0
请访问以下链接: http://www.cdmatech.com/solutions/pdf/cmx_faq.pdf。 要在模拟器中播放 CMX 文件,您需要安装 CMX 播放器(可在开发者外联网的开发者工具下找到)。

i. 如何获取有关 Yamaha MMF 格式的详细信息?
适用版本: 全部
有关 Yamaha SMAF 格式(.mmf 文件)的详细信息,请参阅 http://smaf-yamaha.com

j.是否可以在 BREW SDK® 中模拟播放 Yamaha SMAF 格式的文件?
适用版本: 2.1
可以在 BREW 2.1 SDK 中模拟播放 SMAF。为了启用此功能,首先要从 http://smaf-yamaha.com/brew/ 下载 SMAF 模拟组件,然后将下载的文件复制到以下目录中:

ma3smwemu.dll to $BREWDIR/bin/Modules
Jazz35s.mid and Jazz35s.mmf to $BREWDIR/bin/DataFiles

(其中的 $BREWDIR 表示 BREW SDK® 2.1 的根目录)

k. 为什么使用 ISOUNDPLAYER 时会产生内存死区错误?
适用版本: 1.0, 1.1, 2.0
在 BREW 1.1 和 2.0 版本中,调用 ISOUNDPLAYER_SetInfo() 可以从内部为文件名(如果从文件播放)或缓冲区(如果从缓冲区播放)分配内存。 一旦声音播放器不再需要此内存,就必须将其释放。 这可以通过调用 ISOUNDPLAYER_SetInfo(..., NULL) 来完成。

l. 似乎在以固定音量播放声音文件。 可以使用哪个 API 控制音量?
适用版本: 1.0, 1.1, 2.0
使用 ISOUND_SetVolume() 控制音量。 要将声音传到外部扬声器(如果手持设备配有),需要将振铃/按键蜂鸣声的 AEESoundInfo.method 设置为 AEE_SOUND_METHOD_RING / AEE_SOUND_METHOD_BEEP 并使用 ISOUND_Set() 和 ISOUND_SetDevice() 将 AEESoundInfo.eDevice 设置为 AEE_SOUND_DEVICE_HANDSET。

m. 是否可以同时播放多个音调?
适用版本: 1.0, 1.1, 2.0
BREW 版本 2.0 可以使用 IMEDIA 接口在基于 CMX 2.x 的设备上同时播放多个 QCP 文件(最多 4 个)。 此外,还可以在播放 4 个 QCP 文件的同时播放 1 个 MIDI 文件,即可以同时播放 5 (4QCP + 1MIDI) 个不同文件。 要实现此操作,可以调用 ISHELL_CreateInstance(....,AEECLSID_MEDIAMIDIOUTQCP) 为MIDIOutQCP 创建 4 个 IMedia 对象。 再调用 IMEDIA_SetMediaData 使用其各自数据初始化每个对象,然后使用 IMEDIA_Play() 播放。

BREW 版本 1.0 和 1.1 不能同时播放音调和文件。 如果第一个音调完成播放前进行调用要求播放第二个音调,则第一个音调会中止。

n. 如何在不超出最大文件数限制的情况下加载多个声音文件?
适用版本: 1.0, 1.1, 2.0
一种可行的解决办法是将多个声音文件存储为一个文件。 您可以将相应的声音剪辑加载到一个缓冲区中,然后使用 ISOUNDPLAYER_SetStream 从该缓冲区播放。

例如:
//打开文件阅读并存储到应用程序文件指针。
pMe->m_pIFile = IFILEMGR_OpenFile(pMe->m_pIFileMgr, pMe->MultipleMidiFile, _OFM_READ);

if (!pMe->m_pIFile)
return FALSE;

// 计算 DESIRED_OFFSET (未显示)

if (IFILE_Seek(pMe->m_pIFile, _SEEK_START, DESIRED_OFFSET) != SUCCESS )
return FALSE;

// 函数非同时地触发 AEE_SOUNDPLAYER_STATUS 回调。
ISOUNDPLAYER_SetStream(pMe->m_pISoundPlayer, (IAStream *)pMe->m_pIFile);

o. 何处可以存储振铃文件? IRINGERMGR_Create() 函数创建的振铃文件在何处?
适用版本: 1.0, 1.1, 2.0
手持设备使用的振铃声音文件应该存储在 AEE_RINGER_DIR 目录下。此目录由 OEM 决定且相应的路径也由 OEM 存储在此常量中。 IRINGERMGR_Create 函数根据 AEE_RINGER_DIR 常量定义,在振铃目录中创建文件。

创建振铃时,请确保您的应用程序具有相应的权限级别:
在 Brew v 1.0 中: 请选中“共享目录的写入权限”复选框。
在 Brew v 1.1 以上版本中: 请选中“振铃目录的写入权限”复选框。

p. 是否可以使用 BREW API 设置设备上的振铃?
适用版本: 1.0, 1.1, 2.0
可以使用 IRINGERMGR_SetRinger API 设置振铃。 但此功能仍然要求 OEM 支持。 部分 OEM 不支持此功能,因此您需要使用本地 UI 设置振铃。
posted @ 2006-03-24 12:34  MXi4oyu  阅读(186)  评论(0编辑  收藏  举报