分享下静态截图的功能代码:

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);    }}


以下是对正在播放的视频进行截图的功能代码:

private 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;}





更多相关文章

  1. Android代码中运行shell命令
  2. Android获取cpu和内存信息、网址的代码
  3. Android Studio 配置SVN 及 代码管理
  4. Android实现发送短信功能实例详解
  5. Android中拍照、图片、录音、视频和音频功能的方法和代码
  6. 【Android休眠】之Android对PowerKey事件的处理(1)代码流程
  7. android声音调整源代码分析
  8. Android 用代码获取基站号(cell)和小区号(lac)
  9. Android第一行代码(第二版)

随机推荐

  1. React Native For Android(安卓)Windows
  2. ANDROID2.3改进
  3. Android(安卓)遍历Hashmap里面的key 和va
  4. Android检查网络是否可用及上网请求
  5. Android相机启动crash错误排查
  6. 【Android(安卓)MyEclipse】no projects
  7. Android(安卓)ActionBar使用
  8. android review--基础知识
  9. 如何让自己写的apk获得系统权限
  10. 常见android中的style