2016-05-20 4 views
1

私はhtml5/JSアプリケーションを構築するためにCordovaを使用しています。ios9のコルドバ録音オーディオが動作しません

オーディオを録音して再生する必要があるので、Media &ファイルプラグインを使用しますが、iOSで動作させるには問題があります。

マイ手順:

1)

私はプラットフォーム(AndroidまたはiOS)を検出します。

Androidの場合、何も設定する必要はありませんが、動作します。

イオスが、私は(Raymond Camden articleを読んだ後) '../Library/NoCloud/' にファイルURIを設定した場合、

その後、私は録音する前に、ファイルを作成します。

var mediaBaseUrl = ''; 
if(app.isIOS){ 
      mediaBaseUrl ='../Library/NoCloud/'; 
      createFileSystem(); 
} 

私のCreateFile関数であります:

createFileSystem : function(){ 
     var fileName= mediaBaseUrl+[myFileName]; 

     //asking for a new space 
     window.requestFileSystem(
      LocalFileSystem.PERSISTENT, 
      0, 

      //success 
      function(fileSystem){ 

       fileSystem.root.getFile(

        fileName, 
        { create: true, exclusive: false }, 

        //success callback 
        function(){ 
         console.log('ok file created'); 
        }, 
        null 
       ); 
      }, 

      // error 
      function() { 
       console.log("***log: failed in creating media file in requestFileSystem"); 
      } 
     ); 
    }, 

2)ファイルが作成されたら、私はメディアのコンストラクタで記録されたファイルを作成:

var recordedFile = new Media(
       mediaBaseUrl + [myFileName], 

       // success callback 
       function() {}, 

       // error callback 
       function (err) { 
        console.log("recorded file error "); 
        console.log(err) 
       } 
      ); 

3)設定XMLでは、私はクラウドで保存iOSのライブラリフォルダに記録するには、このラインを持っている、そして無:

<preference name="iosPersistentFileLocation" value="Library" /> 
    <preference name="BackupWebStorage" value="none" /> 

私の問題:Androidデバイス上で

、すべての罰金です私はその後、オーディオファイルを聞くことができます。

しかし、iOSデバイス上(のipad2)、いくつかのものは奇妙です:私のファイル名 "../Library/NoCloud/myFileName" と

  • 、私はfileSystem.root.getFile機能のための成功コールバックを持っていません、しかし私はファイルが空であることを除いて、私のipadライブラリ/ NoCloudフォルダ、の良い名前と良い場所でファイルを見ることができます。したがって、Mediaコンストラクタはファイルを再生できず、エラーを返します。

  • i「がmyFileName」としてmyFileNameを設定した場合、私は、ファイルの作成(「作成OKファイル」)のコールバックを持っていますが、メディアのコンストラクタは、ファイルにアクセスし、エラーを返すことができません。

    message: "Cannot use audio file from resource 'test.wav'", code: 1 
    

私はipadのマイクをチェックしました、このアプリのために有効になっています。私はそれがipadのiOSアップデート(今のiOS 9.3.2)の前に働いたと信じています。 私は間違っていたことがあるのですか、それとも新しい処理方法がありますか?

ありがとうございました!

あなたがcdvfileを含める必要が
+0

後、私は混乱している

を次の - あなたがファイルを作成しない理由*前*録音?まったく逆のはずはありませんか? –

+0

でも、私は混乱しています:)私は、プロセスについて考える方法が全く間違っていたと思います。私は、iOSが記録されたデータを "書き込む"前にファイルの場所を書き込む必要があると思っていました。しかし目に見えることにそうではありません。だから私は今理解している:システムがオーディオデータを記録した、私は私の記録データを保存するためにfileSystem関数を要求する必要がありますか?ありがとう! –

+0

実際には、コードを書く前にいくつかの記事を読んでいます。たとえば、この記事のようにhttp://stackoverflow.com/questions/9241157/using-phonegap-to-record-audio-to-documents-folder-on-iosそれはメディアファイルの作成の前にファイル参照を作成すると言われています。すでに存在するsrcが必要です...そのため、私はそのコードを書いたのです... –

答えて

0

:cdvfileです// localhostの/ライブラリ-NOSYNC//ライブラリ/ NoCloudで

を:// localhost /をライブラリ-NOSYNC //ライブラリ/ NoCloudは、URLで指定する必要がありますsorce

URLを覚えていますが、ライブラリフォルダを仮定すると、WWWフォルダ内で与えられ、それはこの問題はios9からそこにいるされており、

+0

ありがとう、私はそれを試してみよう! –

+0

最後に、これはあなたのトリックでは機能しません。一方、問題はここにはなかった。私はファイルの作成に成功しましたが、同時に再生された別のメディアファイル(オーディオ)のため、メディアのプラグインが録音されませんでした。このファイルを再生しなかったとき、録音は正常です(前にファイルを作成した場合)。コードソメディアプラグインを使用して同時に録音して再生することはできません。ご協力いただきありがとうございます。 –

関連する問題