package com.printer.demo.utils;

import android.content.Context;
import android.content.Intent;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.net.Uri;
import android.os.Environment;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;

public class BitmapSaver {

    /**
     * 保存 Bitmap 到文件
     * @param bitmap 需要保存的 Bitmap 对象
     * @param fileName 文件名
     * @param context 上下文
     * @return 保存的文件路径
     */
    public static String saveBitmap(Bitmap bitmap, String fileName, Context context) {
        // 检查外部存储是否可用
        if (!isExternalStorageWritable()) {
            return null;
        }

        // 创建文件夹
        File directory = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES), "MyAppPictures");
        if (!directory.exists()) {
            directory.mkdirs();
        }

        // 创建文件
        File file = new File(directory, fileName);
        try {
            FileOutputStream out = new FileOutputStream(file);
            bitmap.compress(Bitmap.CompressFormat.PNG, 100, out); // 保存为 PNG 格式，质量为 100
            out.flush();
            out.close();
        } catch (IOException e) {
            e.printStackTrace();
            return null;
        }

        // 通知系统图库更新
        context.sendBroadcast(new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE, Uri.fromFile(file)));

        return file.getAbsolutePath();
    }

    /**
     * 检查外部存储是否可写
     * @return 是否可写
     */
    private static boolean isExternalStorageWritable() {
        String state = Environment.getExternalStorageState();
        return Environment.MEDIA_MOUNTED.equals(state);
    }
}