IMEDIA_SetVolume

A5509T で、

IMEDIA_SetVolume( pMedia , volume );
IMEDIA_Play( pMedia );

こういうプログラムを書いても、音量は変わってくれない(A5509T だけじゃなくて、BREW2.1 全部かも)。
どうやら、再生中以外は IMEDIA_SetVolume() に失敗するようだ。


なので、

IMEDIA_Play( pMedia );
IMEDIA_SetVolume( pMedia , volume );

こういう順番で書く必要がある。


ただ、これをやると、W31T(BREW3.1 全部かも) で、最初の一瞬だけボリュームがデフォルトのまま流れてしまう。
なんでかというと、再生→ボリューム変更の順番で行っているから、コールバックリストには、再生→ボリューム変更の順番で入ってくる。
すると最初の一瞬だけボリュームがおかしくなってしまうのだ。
これを解決するには、IMEDIA_Play() より前に IMEDIA_SetVolume() を呼び出せばいい。
どうやら W31T は IMEDIA_Play() の前に実行しても正常に動作するようだ。


で、自分の最終的な実装は、

IMEDIA_SetVolume( pMedia , volume );
IMEDIA_Play( pMedia );
IMEDIA_SetVolume( pMedia , volume );

こうなりました(ノ∀`)