2015年3月11日 星期三

[Android] 如何利用Assets目錄夾帶檔案

很多時候,我們會在安裝完apk檔後,需要存取自己的檔案,
例如,我們可能想要播放自己預設的mp3檔,
有一個簡單的作法就是在開發時,將想要的檔案放在assets目錄裡,
這個目錄裡的資料,在你開發時,它不會發生任何事,
但當你包裝apk時,裡面的資料會同時包進去,
那麼,安裝完apk後,如何存取它呢?
有些人可能會用"file://android_asset/"來存取它,
不過,建議還是用AssetManager, 使用方式也很簡單,
假設你本來在assets目錄放了一個t.mp3,
AssetManager assetManager = getAssets();      
InputStream in = null;
OutputStream out = null;
File sdCardDir = Environment.getExternalStorageDirectory();    
in = assetManager.open("t.mp3");
out = new FileOutputStream(new File(sdCardDir+"/myFolder", "t.mp3"));    
byte[] buffer = new byte[1024];
int read;
while((read = in.read(buffer)) != -1)
{
  out.write(buffer, 0, read);
}    
in.close();
in = null;
out.flush();
out.close();
out = null;

上面的方式是將assets裡的檔案copy到"/myFolder",
然後我們就可以用FileInputStream等檔案存取的方法來存取它,

當然,還有不同的方式,例如,你想要直接播放它的話:
AssetFileDescriptor fileDescriptor = getAssets().openFd("t.mp3");   

MediaPlayer mp = new MediaPlayer();

mp.setDataSource(fileDescriptor.getFileDescriptor());

沒有留言:

張貼留言