Android中实现截图保存到指定目录或者系统图片,并支持批量删除

android中实现保存图片到指定目录,相册显示该目录里的图片

1 . 需求
最近要做一个简单的功能,目标是保存好截图后,打开微信扫一扫,打开相册可以直接看到自己创建的目录图片,之后批量删除之前保存的二维码,根据文件名来识别.

2.实现
因为功能不算太复杂,做了一下的简单测试代码

   // 获取屏幕
        View dView = getWindow().getDecorView();
        dView.setDrawingCacheEnabled(true);
        dView.buildDrawingCache();
        Bitmap bmp = dView.getDrawingCache();
        if (bmp != null) {
            saveImage(this, bmp);
        }

以上代码实现获取屏幕截图得到bitmap

最后saveImage方法如下:

 public  void saveImage(Context context, Bitmap bmp) {
        // 首先保存图片
        File appDir = new File(Environment.getExternalStorageDirectory(), "HCTrader");
        if (!appDir.exists()) {
            appDir.mkdir();
        }
        String fileName = System.currentTimeMillis() + ".jpg";
        File file = new File(appDir, fileName);
        try {
            FileOutputStream fos = new FileOutputStream(file);
            bmp.compress(Bitmap.CompressFormat.JPEG, 100, fos);
            fos.flush();
            fos.close();
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }

        // 最后通知图库更新
        Intent intent = new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE);
        Uri uri = Uri.fromFile(file);
        intent.setData(uri);
        context.sendBroadcast(intent);
    }

效果如下:
这里写图片描述

以上方式是保存到指定的目录然后通知相册更新指定文件(如果想更新指定目录的话,就可以这样fromFile(appDir)),如果想保存到系统图库里,可以把文件的地址插入到系统图库,通过以下方法实现:

        // 其次把文件插入到系统图库
        try {
            MediaStore.Images.Media.insertImage(context.getContentResolver(),
                    file.getAbsolutePath(), fileName, null);
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        }

效果如下:
这里写图片描述

批量删除的方法:

    File appDir = new File(Environment.getExternalStorageDirectory(), "HCTrader");
        if (appDir.exists() && appDir.isDirectory()) {
            File[] childFile = appDir.listFiles();
            for (File f : childFile) {
                if (f.getName().contains("人民币")) {
                    f.delete();
                }
            }
            // 最后通知图库更新指定目录
            Intent intent = new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE);
            Uri uri = Uri.fromFile(appDir);
            intent.setData(uri);
            this.sendBroadcast(intent);
        }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值