サウンド処理は非同期で その3
2013-11-30


サウンド管理でコマンドを javaに送る処理、そしてキューの中身を受け取ってサウンドプレイヤーの処理を実行する部分を作成します。これでサウンドの非同期処理の実装完了となります。


Sound.cpp
/**********
    終了
 **********/
void    SoundManager::quit(void)
{
        {                               // コマンド停止
                JNIEnv*         env;
                Bool            attach_flag = FALSE;

                if ( g_JavaVM-&gtGetEnv((void**)&ampenv, JNI_VERSION_1_6) < 0 ) {
                        if ( g_JavaVM-&gtAttachCurrentThread(&ampenv, NULL) < 0 ) {
                                goto error;
                        }
                        attach_flag = TRUE;
                }

                jclass  clazz = env-&gtFindClass("sys/SoundManager");

                if ( clazz ) {
                        jmethodID       mid = env-&gtGetStaticMethodID(clazz, "stop_command", "()V");

                        if ( mid ) {
                                env-&gtCallStaticVoidMethod(clazz, mid);
                        }
                }
                if ( attach_flag ) {
                        g_JavaVM-&gtDetachCurrentThread();
                }
        }

error :
        if ( player ) {
                delete[]        player;
                player = NULL;
        }
        SoundPlayer::quit_engine();                                                     // サウンドエンジン終了
}

サウンド管理終了時、まだキューにコマンドが残っている可能性がありますので java側の関数を呼んでクリアしています。


続きを読む

[Android プログラミング]

コメント(全0件)
コメントをする


記事を書く
powered by ASAHIネット