Android のNative Activity で実装したアプリからオーディオの再生ができたので、ミクさんが踊ってくれるメディアプレイヤー的なものにしてみました。

PMD とVMD のロード処理の修正

以前のソースコードがHDD の故障とともに消えてしまったので、コードやMakefile を書きなおしていたところ、うまくロードできないPMD、VMD があることに気が付きました。
BinaryReader のロード処理で、プロセッサ種別に依存してうまく取り込めない(ARM CPU で構造体のアラインメントが異なる)のが原因のようです。
以前のバージョンのコンパイラ+古いバージョンのAndroid デバイスでは動いていたような気がするのに。
原因は単純なので修正しておきました。

Native Activity からのWakeLock の制御

少し経つと画面が暗くなって、画面が非表示状態になります。
PowerManager のWakeLock を制御すれば良さそうです。
Android NDK のNative Activity の場合はJNI を経由してPower Manager へアクセスするのかな。
後で調べておこう。

画面インタフェース

  • パネル表示切替ボタン「⇅」
    画面下部の設定用のインタフェースの表示/非表示を切り替える。曲目リスト、モデルリスト、環境設定のタブがある。
  • ミュート切替ボタン「♪」
    音声の出力状態を切り替える。OpenSL ES の(*uriPlayerVolume)->SetMute()をコールしている。
  • 再生/停止切替ボタン「▶」
    モーションと音声の再生/停止を切り替える。アニメーションスピードの切り替えと(*uriPlayerPlay)->SetPlayState()をコールしている。モデルまたは曲を変更した場合は最初から開始する。
  • 終了ボタン「×」
    アプリケーションを終了する。
  • カメラ位置スクロールバー
    カメラの位置を前後させる。

TODO

  • state->onAppCmd にコールバック関数を設定しているのにキックされない原因を調べる。
  • pFileSystem->createFileList() が失敗する原因を調べる。
  • タスク復帰時に描画コンテキストをリストアする。
  • GUI のSkin を変更する。
  • Android 固有の入力イベントに対応する。