6

phonegap を使用してアプリケーションを開発しています。再生したいサウンド ファイルが www/Sounds/sound.mp3 のようなパスにあり、Phonegap の Media オブジェクトを使用してこのファイルにアクセスしようとしています。それを再生します。

Media オブジェクトを使用する JavaScript ファイル内で、このサウンド ファイルにアクセスするためのパスがわかりません。file:///www/Sounds/sound.mp3、相対パスなどのパスを試しましたが、アクセスできません。xcode 4で次のエラーが発生し続けます

Will attempt to use file resource 'file:///www/Sounds/sound.mp3'
Unknown resource 'file:///www/Sounds/sound.mp3'

ファイルにアクセスするには、どのパスを使用する必要がありますか? それとも、サウンド ファイルを www ディレクトリから Resources フォルダにコピーして、そこでアクセスする必要がありますか?

私のWWWフォルダーが参照されていますが、それが違いを生むかどうかはわかりません。

4

6 に答える 6

15

これは、iOSとAndroidの両方で機能するgetPhoneGapPathの修正バージョンです。また、ファイル名が10文字のファイルのみを処理することに制限されていません:)

getPhoneGapPath: function () {
    'use strict';
    var path = window.location.pathname;
    var phoneGapPath = path.substring(0, path.lastIndexOf('/') + 1);
    return phoneGapPath;
}

var resource = getPhoneGapPath() + 'audio/audio.mp3';

getPhoneGapPath()は以下を返します:

iOS: / var / mobile / Applications / {GUID} / {appName} / www /

Android: / android_asset / www /

于 2012-11-14T23:04:29.697 に答える
10

window.location.pathnameアプリケーションのパスを取得するために使用します。iPhone では次のように表示されます。

/var/mobile/Applications/{GUID}/{アプリ名}.app/www/index.html

そしてこれはAndroidで:

/android_asset/www/index.html

を取り除き/index.html、先頭file://に追加して、相対パスを追加しますSounds/sound.mp3

ここにあなたが始めるための何かがあります:

デモ: http://jsfiddle.net/ThinkingStiff/chNVY/

コード:

function getPhoneGapPath() {

    var path = window.location.pathname;
    path = path.substr( 0, path.length - 10 );
    return 'file://' + path;

};

var resource = getPhoneGapPath() + 'Sounds/sound.mps';
于 2012-06-24T07:24:36.917 に答える
2

Cordova 3.3+ の時点で、他の 2 つの回答は正しくありません。ファイル名を渡すだけでも機能するはずです。

ただし、ファイル拡張子が.wav.

これはうまくいきます:

var media = new Media('recording.wav', ...);

これはしません:

var media = new Media('recording.mp3', ...);
于 2014-07-15T15:02:41.017 に答える