zoukankan      html  css  js  c++  java
  • 【推荐】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 设置振铃。
  • 相关阅读:
    Spring Session Logout
    VC6.0 error LNK2001: unresolved external symbol _main解决办法
    JDBC数据库编程基本流程
    JDBC连接SQL Server2008
    JDK的下载、安装及环境变量的配置
    奇数阶幻方口诀
    ping: sendto: Network is unreachable
    new/delete和malloc/free的区别
    MFC的消息管理
    VC++之自定义消息
  • 原文地址:https://www.cnblogs.com/secbook/p/2655535.html
Copyright © 2011-2022 走看看