Androidで現在の画面画像を切り取る

5182 ワード

この記事では、Androidの携帯電話やタブレットで現在の画面を切り取る機能をどのように実現し、切り取った画面をSDCardのディレクトリフォルダの下に保存するかを説明します.実装されるコードは次のとおりです.
 
    /**

     *             

     */

    private void GetandSaveCurrentImage()  

    {  

        //1.  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 );      

          

        //2.      

        View decorview = this.getWindow().getDecorView();   

        decorview.setDrawingCacheEnabled(true);   

        Bmp = decorview.getDrawingCache();   

        

        String SavePath = getSDCardPath()+"/AndyDemo/ScreenImage";

      

        //3.  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/AndyDemo/ScreenImage/ ", 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を操作するので、manifestで忘れないでください.xmlファイルには、SDCardに対する読み書き権限が付与されています.