【问题标题】:Superpowered SDK Android超级强大的 SDK Android
【发布时间】:2015-10-20 14:43:09
【问题描述】:

您好,我想用超级强大的 sdk 创建一个播放器,但我无法退出循环。当歌曲结束时,他又开始演奏,因为它被删除了?

С++ void 用于开始和暂停播放;

void SuperpoweredExample::onPlayPause(bool play) {
pthread_mutex_lock(&mutex);
if (!play) {
    playerA->pause();
    playerB->pause();
} else {
    bool masterIsA = (crossValue <= 0.5f);
    playerA->play(!masterIsA);
    playerB->play(masterIsA);
};
pthread_mutex_unlock(&mutex);
}

JAVA 中的这个空白

public void SuperpoweredExample_PlayPause(View button) {  // Play/pause.
    playing = !playing;
    onPlayPause(playing);
    Button b = (Button) findViewById(R.id.playPause);
    b.setText(playing ? "Pause" : "Play");
}

C++ 中播放器初始化和播放选项

SuperpoweredAdvancedAudioPlayer *playerA = *((SuperpoweredAdvancedAudioPlayer **)clientData);
    playerA->setBpm(126.0f);
    playerA->setFirstBeatMs(1);
    playerA->setPosition(playerA->firstBeatMs, false, false);
    playerA->exitLoop(); // not work
    playerA->looping = false; // not work
    playerA->togglePlayback();

    playerA = new SuperpoweredAdvancedAudioPlayer(&playerA , playerEventCallbackA, samplerate, 0);
    playerA->open(path, params[0], params[1]);

【问题讨论】:

    标签: java android c++


    【解决方案1】:

    在您的方法 playerEventCallbackA 中处理播放状态来自

    playerA = new SuperpoweredAdvancedAudioPlayer(&playerA , playerEventCallbackA, samplerate, 0);
    

    它是主要玩家事件的回调。 如果您查看 SuperpoweredAdvancedAudioPlayer.h 类,您会发现

    typedef enum SuperpoweredAdvancedAudioPlayerEvent {
        SuperpoweredAdvancedAudioPlayerEvent_LoadSuccess,
        SuperpoweredAdvancedAudioPlayerEvent_LoadError,
        SuperpoweredAdvancedAudioPlayerEvent_EOF,
        SuperpoweredAdvancedAudioPlayerEvent_JogParameter,
        SuperpoweredAdvancedAudioPlayerEvent_DurationChanged,
    } SuperpoweredAdvancedAudioPlayerEvent;
    

    当您收到 SuperpoweredAdvancedAudioPlayerEvent_EOF 事件时,您可以暂停或做任何您想做的播放。

    例如

        static void playerEventCallbackA(void *clientData, SuperpoweredAdvancedAudioPlayerEvent event, void *value) {
            SuperpoweredAdvancedAudioPlayer *playerA = *((SuperpoweredAdvancedAudioPlayer **)clientData);
            if (event == SuperpoweredAdvancedAudioPlayerEvent_LoadSuccess) {
                // handle player prepared
            } else if (event == SuperpoweredAdvancedAudioPlayerEvent_LoadError) {
                // handle error with player
            } else if (event == SuperpoweredAdvancedAudioPlayerEvent_EOF && !loopingA) {
                playerA->pause();
            }
        }
    

    希望对你有帮助。

    【讨论】:

    • OOO 男士们,非常感谢!
    猜你喜欢
    • 2018-07-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多