抓取屏幕截图

转载:

http://www.cnblogs.com/-OYK/archive/2011/05/31/2064775.html

android屏幕截图 
  
    import java.io.FileNotFoundException;   
    import java.io.FileOutputStream;   
    import java.io.IOException;   
        
    import android.app.Activity;   
    import android.graphics.Bitmap;   
    import android.graphics.Rect;   
    import android.view.View;   
        
    public class ScreenShot {   
        // 获取指定Activity的截屏,保存到png文件   
        private static Bitmap takeScreenShot(Activity activity){   
            //View是你需要截图的View   
            View view = activity.getWindow().getDecorView();   
            view.setDrawingCacheEnabled(true);   
            view.buildDrawingCache();   
            Bitmap b1 = view.getDrawingCache();   
                
            //获取状态栏高度   
            Rect frame = new Rect();     
            activity.getWindow().getDecorView().getWindowVisibleDisplayFrame(frame);     
            int statusBarHeight = frame.top;     
            System.out.println(statusBarHeight);   
                
            //获取屏幕长和高   
            int width = activity.getWindowManager().getDefaultDisplay().getWidth();     
            int height = activity.getWindowManager().getDefaultDisplay().getHeight();     
            //去掉标题栏   
            //Bitmap b = Bitmap.createBitmap(b1, 0, 25, 320, 455);   
            Bitmap b = Bitmap.createBitmap(b1, 0, statusBarHeight, width, height - statusBarHeight);   
            view.destroyDrawingCache();   
            return b;   
        }   
            
        //保存到sdcard   
        private static void savePic(Bitmap b,String strFileName){   
            FileOutputStream fos = null;   
            try {   
                fos = new FileOutputStream(strFileName);   
                if (null != fos)   
                {   
                    b.compress(Bitmap.CompressFormat.PNG, 90, fos);   
                    fos.flush();   
                    fos.close();   
                }   
            } catch (FileNotFoundException e) {   
                e.printStackTrace();   
            } catch (IOException e) {   
                e.printStackTrace();   
            }   
        }   
            
        //程序入口   
        public static void shoot(Activity a){   
            ScreenShot.savePic(ScreenShot.takeScreenShot(a), "sdcard/xx.png");   
        }   
    } 


    public Bitmap createVideoThumbnail(String filePath) {
        Bitmap bitmap = null;
        android.media.MediaMetadataRetriever retriever = new android.media.MediaMetadataRetriever();
        try {// MODE_CAPTURE_FRAME_ONLY
//            retriever
//                    .setMode(android.media.MediaMetadataRetriever.MODE_CAPTURE_FRAME_ONLY);
//            retriever.setMode(MediaMetadataRetriever.MODE_CAPTURE_FRAME_ONLY);
            retriever.setDataSource(filePath);
//            bitmap = retriever.captureFrame();
            String timeString = retriever.extractMetadata(MediaMetadataRetriever.METADATA_KEY_DURATION);
            long time = Long.parseLong(timeString) * 1000;
            Log.i("TAG","time = " + time);
            bitmap = retriever.getFrameAtTime(time*31/160); //按视频长度比例选择帧
        } catch (IllegalArgumentException ex) {
            // Assume this is a corrupt video file
        } catch (RuntimeException ex) {
            // Assume this is a corrupt video file.
        } finally {
            try {
                retriever.release();
            } catch (RuntimeException ex) {
                // Ignore failures while cleaning up.
            }
        }
        return bitmap;
    }




猜你喜欢

转载自justwyy.iteye.com/blog/1727853