2010-12-31 20 views
3

WebViewからバックグラウンドでオーディオを再生しようとしています。このオーディオはURLで与えられます。私はURLの読み込みをオーバーライドすることでこれに近づいた。そして、それはオーディオの再生を開始しますが、何度もMedia Playerが停止します。これは30%前後で発生し、このオーディオファイルは30秒を超えることはありません。MediaPlayerでオーディオが正しく再生されない

私はMP3、OGG、WAVで試してみましたが、いずれかの場合に発生しました。

私はまた、ファイルをダウンロードしてからストリーミングする代わりに再生しましたが、どちらも動作しませんでした。

これはコードの部分...それがどのように動作するかを示すことです:

public boolean shouldOverrideUrlLoading(WebView view, String url) { 
    if (url.endsWith(".ogg")){ 
     AudioLoader audioLoader = new AudioLoader(url); 
     audioLoader.start(); 
     return true; 
    } 
    else if (url.endsWith(".wav")){ 
     Uri tempPath = Uri.parse(url); 
     MediaPlayer player = MediaPlayer.create(interfazWeb, tempPath); 
     if (player != null){ 
      player.start(); 
     } else { 
      Log.e(TAG, "No se puede abrir el audio:" + url); 
     } 
     return true; 
    } 
    else if (url.endsWith(".mp3")){ 
     AudioLoader audioLoader = new AudioLoader(url); 
     audioLoader.start(); 
     return true; 
    }else{ 
     return super.shouldOverrideUrlLoading(view, url); 
    } 
} 

私は「AudioLoader」で保存した音声ファイルをチェックしましたし、それは完全に罰金です。そして、WAVのケースでは、私の最初の試合を使用して、ストリーミングで演奏します。

SoundPoolとAsyncPlayerも試してみました。

これまでのところ、私は通信、コーデック、またはバッファの問題はないと思います。私の唯一のヒントは、問題がすべての形式とすべてのアプローチで、たまたまTHAたびに繰り返されるため、これらのログエントリ、以下のとおりです。

12-31 09:41:49.284: WARN/AudioFlinger(59): write blocked for 160 msecs, 20 delayed writes, thread 0xd7a8 
12-31 09:41:49.554: WARN/TimedEventQueue(59): Event 6 was not found in the queue, already cancelled? 

誰もがいくつかの手掛かりを持ってくださいますか?または、私はバグ/ミスの直面している。 P

よろしく、マヌエルを:

は、あなたが私を助けることができるしている特別な場合には、幸せな2011年を持っています。

答えて

3

audioLoaderオブジェクトおよび/またはMediaPlayerオブジェクトをローカルに作成しています(これらのオブジェクトは関数shouldOverrideUrlLoadingのローカルです)。そのため、関数の中からいったんガベージコレクタが参照されていないオブジェクトをすべて集めようとすると、オブジェクトが破棄され、サウンドが停止します。

はグローバルオブジェクトとしてAudioLoaderとMediaPlayerのオブジェクトを宣言してみてください。

private AudioLoader audioLoader; 
private MediaPlayer player; 
public boolean shouldOverrideUrlLoading(WebView view, String url) { 
     if (url.endsWith(".ogg")){ 
      audioLoader = new AudioLoader(url); 
      audioLoader.start(); 
      return true; 
     } 
     else if (url.endsWith(".wav")){ 
      Uri tempPath = Uri.parse(url); 
      player = MediaPlayer.create(interfazWeb, tempPath); 
      if (player != null){ 
       player.start(); 
      } else { 
       Log.e(TAG, "No se puede abrir el audio:" + url); 
      } 
      return true; 
     } 
     else if (url.endsWith(".mp3")){ 
      audioLoader = new AudioLoader(url); 
      audioLoader.start(); 
      return true; 
     }else{ 
      return super.shouldOverrideUrlLoading(view, url); 
     } 
} 
+0

ヒュムは、面白そう、私は月曜日、グラシアスイエスにしようとします! – mdelolmo

+0

これは私がここに来たときに最初に試したことです... 20分前、そしてこれまでのところ完全に動作するようです!ありがとう。 – mdelolmo

+0

あなたはようこそ! –

関連する問題