2011-08-12 70 views
4

任何人都可以解釋爲什麼從我的應用程序緩存目錄下載/播放視頻不起作用,但從我的SD卡下載/播放相同的視頻確實有效嗎?從應用高速緩存播放視頻目錄

注意:此視頻正在下載。在致電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