如何在Blackberry 10 Dev Alpha Simulator中播放SystemSounds?

时间:2013-02-07 00:02:02

标签: qml blackberry-10 blackberry-cascades

我只是想尝试运行提供的示例代码,据我所知,该代码应该可以正常工作。我有什么遗漏或这是模拟器的限制。

如果有,是否有任何解决方法?

import bb.cascades 1.0
// To use the MediaPlayer, we must include
// the multimedia library.
import bb.multimedia 1.0

Page {
    Container {
        id: mainContainer
        layout: StackLayout {
            orientation: LayoutOrientation.TopToBottom
        }
        topPadding: 50.0
        Label {
            id: titleLbl
            text: qsTr("SystemSound and MediaPlayer\n Sample App")
            multiline: true
            textStyle.fontSizeValue: 9.0
            textStyle.fontWeight: FontWeight.Bold
            textStyle.fontFamily: "Verdana"
            textStyle.color: Color.DarkBlue
            textStyle.textAlign: TextAlign.Center
            horizontalAlignment: HorizontalAlignment.Center
        }
        // Part 1 of the sample: Playing system sounds.
        Container {
            id: systemSoundsContainer
            layout: StackLayout {
                orientation: LayoutOrientation.TopToBottom
            }
            topMargin: 100.0
            horizontalAlignment: HorizontalAlignment.Center
            DropDown {
                id: soundSelectorDropdown
                title: "Sound: "
                maxWidth: 600.0
                Option {
                    text: qsTr("Battery Alarm")
                    value: SystemSound.BatteryAlarm
                    selected: true
                }
                Option {
                    text: qsTr("Browser Start")
                    value: SystemSound.BrowserStartEvent
                }
                Option {
                    text: qsTr("Camera Shutter")
                    value: SystemSound.CameraShutterEvent
                }
                Option {
                    text: qsTr("Device Tether")
                    value: SystemSound.DeviceTetherEvent
                }
                Option {
                    text: qsTr("General Notification")
                    value: SystemSound.GeneralNotification
                }
            } // soundSelectorDropdown
            Button {
                id: systemSoundPlayButton
                text: qsTr("Play Selected System Sound")
                minWidth: 600.0
                onClicked: {
                    systemSound.play();
                }
            } // systemSoundPlayButton
        } // systemSoundsContainer
        // Part 2 of the sample: Playing custom sound files.
        Container {
            id: customSoundsContainer
            layout: StackLayout {
                orientation: LayoutOrientation.LeftToRight
            }
            topMargin: 100.0
            Button {
                id: customSoundPlayButton1
                text: qsTr("Play Sound 1")
                layoutProperties: StackLayoutProperties {
                    spaceQuota: 1.0
                }
                onClicked: {
                    // Here we could have created a second MediaPlayer object to
                    // use to play our sound, but instead we programmatically
                    // changed the sourceUrl property of the current myPlayer
                    // MediaPlayer object, and re-used it to play our sounds.
                    myPlayer.setSourceUrl("asset:///sounds/Doorbell_001.wav")
                    myPlayer.play()
                }
            } // customSoundPlayButton1
            Button {
                id: customSoundPlayButton2
                text: qsTr("Play Sound 2")
                layoutProperties: StackLayoutProperties {
                    spaceQuota: 1.0
                }
                onClicked: {
                    // Same as above, here we also could have created a second
                    // MediaPlayer object to use to play our sound, but instead
                    // we programmatically changed the sourceUrl property of the
                    // current myPlayer MediaPlayer object, and re-used it to
                    // play our sounds.
                    myPlayer.setSourceUrl("asset:///sounds/Doorbell_002.wav")
                    myPlayer.play()
                }
            } // customSoundPlayButton2
        } // customSoundsContainer
    } // mainContainer

    // The SystemSound and MediaPlayer objects are attached so
    // they can be used in our QML code to play sounds.
    attachedObjects: [        
        SystemSound {
            id: systemSound
            sound: soundSelectorDropdown.selectedValue
        },
        MediaPlayer {
            id: myPlayer
            // sourceUrl: < Set in the Button control's onClicked event handler. >
        }
    ] // Attached objects.
}

来源:https://developer.blackberry.com/cascades/documentation/design/audio_video/playing_sounds_code_sample.html

1 个答案:

答案 0 :(得分:1)

我怀疑系统声音实际上是内部的.mp3或.ogg文件,其中“Cowbell sample”和“Pull My Beard”正在使用.wav文件。这是一个已知问题,已在Blackberry开发人员论坛herehere以及here上进行了讨论,模拟器没有正确的编解码器来播放除.wav之外的任何声音文件。声音应该在实际硬件上正确播放。