大家好,我是奶綠茶
今天來分享一下如果將 Android 的畫面拍成圖檔並存在 SD Card 裡
首先要在 Manifest.xml 裡開啟 寫入的權限
uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"
接著要把 View 轉成 Bitmap 物件
再進入 Android 預設的圖片庫時,會找不到那張圖片
Google 了一下,發現要呼叫 MediaScannerConnection 來更新
讓 Android 知道
原文連結: 點我
這樣就完成啦。
轉載請註明出處 SourceCodeDownload
今天來分享一下如果將 Android 的畫面拍成圖檔並存在 SD Card 裡
首先要在 Manifest.xml 裡開啟 寫入的權限
uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"
接著要把 View 轉成 Bitmap 物件
final ViewGroup _v = (ViewGroup) findViewById(R.id.root); Bitmap bm = Bitmap.createBitmap(_v.getWidth(), _v.getHeight(), Bitmap.Config.RGB_565); _v.draw(new Canvas(bm));透過 File 來存檔 先檢查使用者有沒有 SD Card
public static boolean checkSDCard() {
if (Environment.getExternalStorageState().equals(
Environment.MEDIA_MOUNTED)) {
return true;
}
return false;
}
存檔
public static void saveBitmap(String pFolderPath, Bitmap pBitmap,
String pFileName) throws IOException {
String _folderPath = pFolderPath;
if (_folderPath.lastIndexOf("/") == -1) {
_folderPath += "/";
}
File _file = new File(_folderPath + pFileName);
OutputStream _outStream = new FileOutputStream(_file);
pBitmap.compress(Bitmap.CompressFormat.JPEG, 90, _outStream);
_outStream.flush();
_outStream.close();
}
// 自動檔名依日期
public static String getTimeName() {
Date _date = new Date(System.currentTimeMillis());
SimpleDateFormat _sdf = new SimpleDateFormat("yyyy_MM_dd_HH_mm_ss");
Random _random = new Random();
return _sdf.format(_date) + _random.nextInt(999);
}
其中會遇到一個小問題,當你這樣存檔時,再進入 Android 預設的圖片庫時,會找不到那張圖片
Google 了一下,發現要呼叫 MediaScannerConnection 來更新
讓 Android 知道
原文連結: 點我
這樣就完成啦。
轉載請註明出處 SourceCodeDownload
留言
剛剛載了你的檔可以成功存檔
我再來好好研究
太感謝了!