7.10.2012

ボリュームボタンでメディアの音量を調節できるようにする

OpenSL ESでサウンドを再生していて、音を再生しているときにしか音量がボリュームボタンで変更できなかったので調べた。

メディアの音量変更を有効にするには、ActivityのsetVolumeControlStreamAudioManager.STREAM_MUSICを渡すことで設定できるようになる。
他にも STREAM_ALARM, STREAM_DTMF, STREAM_NOTIFICATION, STREAM_RING, STREAM_SYSTEM, STREAM_VOICE_CALLがある。via(AndroidDevelopers.AudioManager)
あとはJNIを使用してJava側に作ったメソッドを呼び出せばよい。

const char* methodName = /*Java側に作成したメソッド名*/;
struct android_app* androidApp = /*android_mainの引数をあらかじめ保存しておく*/;

JavaVM* vm = androidApp->activity->vm;
jobject clazzObj = androidApp->activity->clazz;
JNIEnv* env;
vm->AttachCurrentThread( &env, NULL );
jclass clazz = env->GetObjectClass( clazzObj );
jmethodID methodID = env->GetMethodID( clazz, methodName, "()V" );
env->CallVoidMethod( clazzObj, methodID );
vm->DetachCurrentThread();

初期化のタイミングなどにコールすればいいだろう。

0 件のコメント:

コメントを投稿