大家好,我是奶綠茶
今天來分享一下如果將 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
留言
剛剛載了你的檔可以成功存檔
我再來好好研究
太感謝了!