android截圖功能實現

yangxi_001發表於2014-07-02
在您使用手機時候,有時候會有這樣一個需求,你需要把當前手機的螢幕擷取下來儲存到儲存卡上,既然使用者會有這樣的需求,那麼我們開發者需要如何實現這樣的功能呢?本文為大家提供一個函式,這個函式可以幫您實現截圖功能,在您需要的地方直接呼叫這個函式即可將當前螢幕以圖片的形式儲存到SDCard中,函式如下:
/**
* 獲取和儲存當前螢幕的截圖
*/
private void GetandSaveCurrentImage()  
{  
//構建Bitmap  
WindowManager windowManager = getWindowManager();  
Display display = windowManager.getDefaultDisplay();  
int w = display.getWidth();  
int h = display.getHeight();  
Bitmap Bmp = Bitmap.createBitmap( w, h, Config.ARGB_8888 );      
//獲取螢幕  
View decorview = this.getWindow().getDecorView();   
decorview.setDrawingCacheEnabled(true);   
Bmp = decorview.getDrawingCache();   
//圖片儲存路徑
String SavePath = getSDCardPath()+"/Demo/ScreenImages";
//儲存Bitmap   
try {  
File path = new File(SavePath);  
//檔案  
String filepath = SavePath + "/Screen_1.png";  
File file = new File(filepath);  
if(!path.exists()){  
path.mkdirs();  
}  
if (!file.exists()) {  
file.createNewFile();  
}  
FileOutputStream fos = null;  
fos = new FileOutputStream(file);  
if (null != fos) {  
Bmp.compress(Bitmap.CompressFormat.PNG, 90, fos);  
fos.flush();  
fos.close();    
Toast.makeText(mContext, "截圖檔案已儲存至SDCard/ScreenImages/目錄下",Toast.LENGTH_LONG).show();  
}  
} catch (Exception e) {  
e.printStackTrace();  
}  
}  
/**
* 獲取SDCard的目錄路徑功能
* @return
*/
private String getSDCardPath(){
File sdcardDir = null;
//判斷SDCard是否存在
boolean sdcardExist = Environment.getExternalStorageState().equals(android.os.Environment.MEDIA_MOUNTED);
if(sdcardExist){
sdcardDir = Environment.getExternalStorageDirectory();
}
return sdcardDir.toString();
}

對SDCard的操作需要在AndroidManifest.xml檔案中賦以對SDCard的讀寫許可權,如下:
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>

相關文章