zoukankan      html  css  js  c++  java
  • android截图代码小记

    静态截图

    View Code
    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.media.MediaMetadataRetriever;
    import android.util.Log;
    import android.view.View;
    
    public class ScreenShot {
    
        // 获取指定Activity的截屏,保存到png文件
    
        static Bitmap takeScreenShot(Activity activity) {
    
            Log.i("TAG","tackScreenShot");
            // 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;
            Log.i("TAG", "statusBarHeight = " + 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 {
                Log.i("TAG","start savePic");
                fos = new FileOutputStream(strFileName);
                Log.i("TAG","strFileName = " + strFileName);
                if (null != fos) {
                    b.compress(Bitmap.CompressFormat.PNG, 90, fos);
                    fos.flush();
                    fos.close();
                    Log.i("TAG","save pic");
                }
            } catch (FileNotFoundException e) {
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    
    
        public static void shoot(Activity a,String b) {
            //ScreenShot.savePic(ScreenShot.takeScreenShot(a), "sdcard/xx.png");
            Log.i("TAG","shot");
            Bitmap bitmap = ScreenShot.takeScreenShot(a);
            ScreenShot.savePic(bitmap, b);
        }
    }

    动态截图

    View Code
        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;
        }
  • 相关阅读:
    显示文件本地文件夹
    Select Dependencies选择依赖项
    搜索小技巧
    783. Minimum Distance Between BST Nodes BST节点之间的最小距离
    5. Longest Palindromic Substring 最长的回文子串
    12. Integer to Roman 整数转罗马数字
    3. Longest Substring Without Repeating Characters 最长的子串不重复字符
    539. Minimum Time Difference 最小时差
    43. Multiply Strings 字符串相乘
    445. Add Two Numbers II 两个数字相加2
  • 原文地址:https://www.cnblogs.com/nikyxxx/p/2556139.html
Copyright © 2011-2022 走看看