4

私はPhonegap 3.0でオーディオファイルを再生しようとしています.Windows、Androidプラットフォーム、Eclipseでデバッグしています。

エラーなしでアプリを 3.0 にアップグレードしようとしていますが、多くの問題があります。

たとえば、サウンドを再生すると、MediaRecorder API からの存在しない tmp ファイルでファイル名変更エラーが発生しますか?? ただし、名前の変更やレコードを呼び出しているわけではありません。

  • play sound コマンドの成功呼び出しが行われると、サウンド レコード API が呼び出されるようです。3.0 の動作方法にはいくつかの重大なエラーがあるはずです。

これがログです。ご覧のように、サウンド ファイルは問題なく再生されますが、何らかの理由で MediaRecorder が呼び出され、存在しない tmp ファイルの名前を変更しようとします。私のコードはアップグレード中に変更されていないので、これらのエラーの理由はありません。3.0 ドキュメントのメディア再生 API に従っています。また、新しいスレッド警告エラーも発生します。私が再生しているサウンド ファイルは、100KB 未満の短いクリップです。

CLI ツールを使用してプラグインを追加し、機能コードを config.xml ファイルに追加し、権限をマニフェスト ファイルに追加しました。他の人がこの問題を抱えていることを読みましたが、解決策はないようです。

09-08 15:06:07.821: D/webview(9279): [WebView::UPDATE_SELECTION] ====== start
09-08 15:06:07.951: V/MediaRecorderJNI(9279): setup
09-08 15:06:07.951: V/MediaRecorderJNI(9279): setMediaRecorder E: mr = mr
09-08 15:06:07.951: V/MediaRecorderJNI(9279): setMediaRecorder X

09-08 15:06:07.961: W/PluginManager(9279): THREAD WARNING: exec() call to Media.create blocked the main thread for 31ms. Plugin should use CordovaInterface.getThreadPool().

09-08 15:06:07.961: I/AudioSystem(9279): getting audio flinger
09-08 15:06:07.961: I/AudioSystem(9279): returning new audio session id
09-08 15:06:07.971: D/MediaPlayer(9279): setDataSource(FileDescriptor fd) in
09-08 15:06:07.981: D/dalvikvm(9279): GC_CONCURRENT freed 421K, 49% free 3166K/6151K, external 0K/0K, paused 2ms+3ms
09-08 15:06:08.021: D/MediaPlayer(9279): setDataSource(FileDescriptor fd) out

09-08 15:06:08.041: W/PluginManager(9279): THREAD WARNING: exec() call to Media.startPlayingAudio blocked the main thread for 78ms. Plugin should use CordovaInterface.getThreadPool().

09-08 15:06:08.041: D/CordovaLog(9279): file:///android_asset/www/js/test.js: Line 1463 : maxTempCount: 1
09-08 15:06:08.041: I/Web Console(9279): maxTempCount: 1 at file:///android_asset/www/js/test.js:1463
09-08 15:06:08.041: D/AudioPlayer(9279): Send a onStatus update for the new seek
09-08 15:06:08.041: D/MediaPlayer(9279): start() in
09-08 15:06:08.051: D/MediaPlayer(9279): start() out
09-08 15:06:11.465: D/AudioPlayer(9279): on completion is calling stopped

09-08 15:06:11.545: D/CordovaLog(9279): file:///android_asset/www/js/test.js: Line 1391 : playAudio():Audio Success: sound.mp3
09-08 15:06:11.545: I/Web Console(9279): playAudio():Audio Success: sound.mp3 at file:///android_asset/www/js/test.js:1391

09-08 15:06:11.555: D/MediaPlayer(9279): release() in
09-08 15:06:11.565: D/MediaPlayer(9279): release() out
09-08 15:06:11.565: V/MediaRecorderJNI(9279): native_reset

09-08 15:06:11.565: V/MediaRecorderJNI(9279): getMediaRecorder E
09-08 15:06:11.565: V/MediaRecorderJNI(9279): process_media_recorder_call
09-08 15:06:11.565: D/AudioPlayer(9279): renaming /mnt/sdcard/tmprecording.3gp to /mnt/sdcard/Downloaded/sound.mp3

09-08 15:06:11.565: E/AudioPlayer(9279): FAILED renaming /mnt/sdcard/tmprecording.3gp to /mnt/sdcard/Downloaded/sound.mp3

09-08 15:06:11.565: V/MediaRecorderJNI(9279): release
09-08 15:06:11.565: V/MediaRecorderJNI(9279): setMediaRecorder E: mr = null
09-08 15:06:11.575: V/MediaRecorderJNI(9279): setMediaRecorder X

09-08 15:06:11.575: W/PluginManager(9279): THREAD WARNING: exec() call to Media.release blocked the main thread for 19ms. Plugin should use CordovaInterface.getThreadPool().

09-08 15:06:11.585: D/CordovaLog(9279): file:///android_asset/www/js/test.js: Line 1628 : ==LOG== flag: sound.mp3 result: 3
09-08 15:06:11.585: I/Web Console(9279): ==LOG== flag: sound.mp3 result: 3 at file:///android_asset/www/js/test.js:1628
4

1 に答える 1

1

あなたの痛みが分かります。私は、PhoneGap アプリで iOS と ANDROID でオーディオとビデオの再生を機能させるのに多くの時間を費やしました。その反対側に着いたら、将来再訪/再利用できるように、コア機能をスタンドアロンのファイルセットに抽出するためにできることをしました。必要に応じて、自由に見てテストしてください。

ところで - ここでの機能は、可能な場合、オーディオに PhoneGap Media API を使用します。これがまったく役立つかどうか教えてください。

于 2014-03-05T20:22:48.427 に答える