dちょっとハマりかけたので、備忘録としてまとめ。
昨日ご紹介した、Cordova アプリで音楽ファイルを扱うためのプラグイン「cordova-plugin-media」の音楽ファイルのパスの指定方法についてです。
なお、昨日の記事はこちらから。
で、ハマりかけたのは、Android での音楽ファイルのパスの指定方法についてです。
単純に、画像ファイルなんかと同じように、www ディレクトリ以下のパスを指定すればOKかと思ったら、それでは動かず、Code: 1
のエラーが発生しました。
なお、エラーコード 1 は、MediaError.MEDIA_ERR_ABORTED
というエラーとのことです。
Aborted は「中止」という意味なので、エラーで途中で中断したという感じかな?
で、色々検索したところ、下記の記事がヒットしました。
【Monaca】Mediaプラグインを使う時に気をつけたいこと【Cordova】|webico
https://blog.webico.work/monaca-cordova02
その中で、下記のようにファイルパスを取得している関数があり、それを音楽ファイルの頭につけていたので、それを参考に修正しました。
// パス取得の関数 function getPath() { let str = location.href; let i = str.lastIndexOf('/'); return str.substring(0, i+1); }
私の場合、Android の時は音楽ファイルの頭に file:///android_asset/www/
を付けるようにしたら問題なく動作するようになりました!
なお、iOS の場合、単に www ディレクトリからのパスだけでOKだったので、cordova-plugin-device を利用して、プラットフォームごとに処理を切り替えるようにしましょう。
最終的なコードは下記のようになりました。
playMedia() { let src = '[www からの音楽ファイルのパス]'; if (window.device.platform == 'Android') { src = 'file:///android_asset/www/' + src; } let media = new window.Media(src); media.play(); }
なお、前の記事でも書きましたが、Android の場合はリリースの処理をきちんと行いましょう。
私は…今から追加します。
以上、cordova-plugin-media の音楽ファイルのパスの指定方法でした。
お困りの方がいましたら、参考にしていただければと思います。