Superpowered Android SDK

Hi, I want to create a player with super powerful sdk, but I can not get out of the loop. When the song ends, does he start playing again when he leaves?

C ++ void to start and pause playback;

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);
}

This void in 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");
}

And players initialize and reproduce parameters in 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]);
+4
source share
1 answer

Handle the playback state in your playerEventCallbackA method from

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

This is a callback for major player events. If you look at the SuperpoweredAdvancedAudioPlayer.h class, you will find

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

And when you get the SuperpoweredAdvancedAudioPlayerEvent_EOF event, you can pause or do whatever you want with playback.

eg.

    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();
        }
    }

, .

+6

Source: https://habr.com/ru/post/1612451/


All Articles