さて、Cordovaでビルドできるようになりました。が、問題がいくつか。
まず遅い。明らかにAndroidブラウザで動いている風なのにそれよりも遅め。
手持ちの30fpsのゲームが引っかかるくらいといったらわかるでしょうか。
あと、ローカルにおいた音声ファイルが再生できない。
URLアクセスしたファイルなら再生できるという話もありますが(確かめてない)、
普通のアプリと比べて不利なことは間違いないでしょう。
あきらめてましたが、Cordova Native Audioというプラグインがあるようなので
使わせてもらいました。AndroidだけでなくiOS、Windowsストアアプリ等、主な機種は対応しています。
音声再生のところだけネイティブコードで再生させて、
これはjavascript上から操作できます。再生、停止、ループ、フェードくらいですが十分でしょう。
(シークがないけど)
まず、Git(http://git-scm.com/)を導入します。インストーラとして使うようです。
コマンドプロンプト上で環境変数を追加します。
自分でバッチファイルに設定するなり、システムプロパティ→詳細設定→環境変数で設定するなりは自由に。
set Path = %Path%;C:\Program Files (x86)\Git\bin;
これでPlugin導入の準備はできました。
まず、すでにあるhelloプロジェクトにプラグインを導入するとします。
> cordova plugin add https://github.com/SidneyS/cordova-plugin-nativeaudio.git
これで、hello\www\index.htmlにAudio制御のコードを追加すればよいのですが、
とりあえず、ここはサンプルで上書きしておきましょう。
..\hello\plugins\de.neofonie.cordova.plugin.nativeaudio\examples\drumpad
にあるサンプルコードを、..\hello\wwwに上書きします。
で、おなじみのコマンドでビルドします。
> cordova build android
これでエラーはでませんでしたか?
でなければよし。
(誤)"xml": "<uses-permission name=\"android.permission.MODIFY_AUDIO_SETTINGS\" />",
(正)"xml": "<uses-permission android:name=\"android.permission.MODIFY_AUDIO_SETTINGS\" />",
(誤)"xml": "<uses-permission name=\"android.permission.WRITE_EXTERNAL_STORAGE\" />",
(正)"xml": "<uses-permission android:name=\"android.permission.WRITE_EXTERNAL_STORAGE\" />",
(誤)"xml": "<uses-permission name=\"android.permission.READ_PHONE_STATE\" />",
(正)"xml": "<uses-permission android:name=\"android.permission.READ_PHONE_STATE\" />",
hello\platforms\android\AndroidManifest.xml
(誤)<uses-permission name="android.permission.MODIFY_AUDIO_SETTINGS" />
(正)<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />
(誤)<uses-permission name="android.permission.WRITE_EXTERNAL_STORAGE" />
(正)<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
(誤)<uses-permission name="android.permission.READ_PHONE_STATE" />
(正)<uses-permission android:name="android.permission.READ_PHONE_STATE" />
この行の下に余分な<uses-permission name~があったら削除しておきます。
これでビルドが通ったはず。
こういうAndroidのトラブルシューティングが面倒なんでCordova使うのだけど‥‥まあ、音声使えるのはありがたい。