2012-08-02 45 views
1

我使用android應用程序動態生成midi文件(在緩存目錄中)。Android MediaPlayer在安裝時需要文件

生成後,我在同一個應用程序中使用MediaPlayer播放文件。

第一次運行應用程序時,它已經需要文件在緩存目錄中(應用程序崩潰)。如果我使用filemanager首先在其中放置一個虛擬文件,它將在模擬器上工作。我怎樣才能繞過這個?

我需要該應用第一次在平板電腦上運行,而不需要該文件。

我使用這些命令現在:

try { 

      filePath = getCacheDir() + "/optimuse" + song + ".mid"; 
      file = new File(filePath); 

      inputStream = new FileInputStream(file); 
      if (inputStream.getFD().valid()) { 
       System.out.println("Valid!"); 
      } 
     } catch (Exception e1) { 
      e1.printStackTrace(); 
      System.exit(-1); 
     } 

     try { 
      mediaPlayer = new MediaPlayer(); 
      mediaPlayer.setDataSource(inputStream.getFD()); 
      inputStream.close(); 
     } catch (Exception e1) { 
      e1.printStackTrace(); 
      System.exit(-1); 
     } 

     try { 
      mediaPlayer.prepare(); 
     } catch (IllegalStateException e) { 
      e.printStackTrace(); 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } 

有沒有解決這個辦法嗎?

謝謝!

回答

1

也許在使用前檢查文件是否存在?您可以使用File#exists()方法實現此目的。

首先,您使用Context#getFileStreamPath(String)方法 - 其中String是您嘗試訪問的文件的文件名。然後你可以在返回的對象上調用File#exists()

+0

謝謝!我只是加了if(file.exists()){在第三行之後。 – dorien 2012-08-02 13:12:31