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

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 第15天 -使用SQLiteOpenHelper获取用于操作数据库的
  2. 简单的 Android(安卓)拍照并显示以及获取路径后上传
  3. Android获取cpu和内存信息、网址的代码
  4. Android之使用RatingBar设置游戏难度并保存
  5. Android获取设备唯一标识
  6. Android的第二个应用---电话拨号器
  7. android API key 如何获取
  8. 详解Android获取系统内核版本的方法与实现代码
  9. Android(安卓)用代码获取基站号(cell)和小区号(lac)

随机推荐

  1. 浅谈android:clipChildren属性
  2. Android异步加载图像小结
  3. Android(安卓)Wear 控件——WearableList
  4. android 系统级 bug audio latency
  5. android中从图库中选取图片
  6. Android中Message机制的灵活应用
  7. Android中获取屏幕相关信息(屏幕大小,状态
  8. Android(安卓)基础总结:(四)Activity(Instan
  9. Android异步更新UI-线程池-Future-Handle
  10. Android纠正Activity横竖屏切换的生命周