2011-08-12 20 views
4

私のアプリケーションキャッシュディレクトリからビデオをダウンロード/再生することはできませんが、私のsdcardから同じビデオをダウンロード/再生するのはなぜですか?アプリケーションキャッシュディレクトリからビデオを再生

注:このビデオはダウンロード中です。私はVideoView.setVideoPath(...)に電話する前に、メモリに保存しています。

// Works 
File file = new File(Environment.getExternalStorageDirectory(), "vid-test.3gp"); 

// Does not work 
File file = new File(getCacheDir(), "vid-test.3gp"); 

それぞれのケースで問題のファイルが存在しありません。

VideoView.setVideoURI(...)を呼び出して、ビデオを「VideoView」に「ストリーム」しようとすると、それはうまく動作するかどうかを忘れてしまいます。

誰でもこの動作を説明できますか?

+0

https://code.google.com/p/android/issues/detail?id=10197 – user60108

答えて

2

おそらく許可の問題です。ここで働いて切り取られる:

InputStream in = connection.getInputStream(); 

File file = new File(getApplicationContext().getCacheDir() ,fileName); 

if(!file.exists()){ 
    file.setReadable(true); 

    file.createNewFile(); 


    if (file.canWrite()){ 

     FileOutputStream out = new FileOutputStream(file); 

     byte[] buffer = new byte[1024]; 
     int len1 = 0; 
     while ((len1 = in.read(buffer)) > 0) { 
      out.write(buffer,0, len1); 
     } 

     out.close(); 
    } 

    in.close(); 

    Runtime.getRuntime().exec("chmod 755 "+getCacheDir() +"/"+ fileName);      

} 
+0

それは間違いなく、アクセス許可の問題ではありません。ファイルが書き込まれて再生されることもありますが、キャッシュが急激に大きくなりすぎると一見消去されるように見えます。私はこれを確認していませんが、論理的に意味をなさないのは唯一のことです。 –

+0

私の場合、chmodが助けになりました。 – bk138

関連する問題