1de2f182fdb522689e05280e449a39ec2c1b53e1fCindy Wang/*
2de2f182fdb522689e05280e449a39ec2c1b53e1fCindy Wang * Copyright (C) 2015 The Android Open Source Project
3de2f182fdb522689e05280e449a39ec2c1b53e1fCindy Wang *
4de2f182fdb522689e05280e449a39ec2c1b53e1fCindy Wang * Licensed under the Apache License, Version 2.0 (the "License");
5de2f182fdb522689e05280e449a39ec2c1b53e1fCindy Wang * you may not use this file except in compliance with the License.
6de2f182fdb522689e05280e449a39ec2c1b53e1fCindy Wang * You may obtain a copy of the License at
7de2f182fdb522689e05280e449a39ec2c1b53e1fCindy Wang *
8de2f182fdb522689e05280e449a39ec2c1b53e1fCindy Wang *      http://www.apache.org/licenses/LICENSE-2.0
9de2f182fdb522689e05280e449a39ec2c1b53e1fCindy Wang *
10de2f182fdb522689e05280e449a39ec2c1b53e1fCindy Wang * Unless required by applicable law or agreed to in writing, software
11de2f182fdb522689e05280e449a39ec2c1b53e1fCindy Wang * distributed under the License is distributed on an "AS IS" BASIS,
12de2f182fdb522689e05280e449a39ec2c1b53e1fCindy Wang * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13de2f182fdb522689e05280e449a39ec2c1b53e1fCindy Wang * See the License for the specific language governing permissions and
14de2f182fdb522689e05280e449a39ec2c1b53e1fCindy Wang * limitations under the License.
15de2f182fdb522689e05280e449a39ec2c1b53e1fCindy Wang */
16de2f182fdb522689e05280e449a39ec2c1b53e1fCindy Wang
174cead8034aab0e20e402baee87cbe9129db00192Stephen Hinespackage com.android.rs.refocus;
18de2f182fdb522689e05280e449a39ec2c1b53e1fCindy Wang
19de2f182fdb522689e05280e449a39ec2c1b53e1fCindy Wangimport android.content.Context;
20de2f182fdb522689e05280e449a39ec2c1b53e1fCindy Wangimport android.content.Intent;
21de2f182fdb522689e05280e449a39ec2c1b53e1fCindy Wangimport android.graphics.Bitmap;
22de2f182fdb522689e05280e449a39ec2c1b53e1fCindy Wangimport android.net.Uri;
23de2f182fdb522689e05280e449a39ec2c1b53e1fCindy Wangimport android.os.Build;
24de2f182fdb522689e05280e449a39ec2c1b53e1fCindy Wangimport android.os.Environment;
25de2f182fdb522689e05280e449a39ec2c1b53e1fCindy Wang
26de2f182fdb522689e05280e449a39ec2c1b53e1fCindy Wangimport java.io.File;
27de2f182fdb522689e05280e449a39ec2c1b53e1fCindy Wangimport java.io.FileNotFoundException;
28de2f182fdb522689e05280e449a39ec2c1b53e1fCindy Wangimport java.io.FileOutputStream;
29de2f182fdb522689e05280e449a39ec2c1b53e1fCindy Wangimport java.io.IOException;
30de2f182fdb522689e05280e449a39ec2c1b53e1fCindy Wang
31de2f182fdb522689e05280e449a39ec2c1b53e1fCindy Wang/**
32de2f182fdb522689e05280e449a39ec2c1b53e1fCindy Wang * Utility class to save images into android image database
33de2f182fdb522689e05280e449a39ec2c1b53e1fCindy Wang */
34de2f182fdb522689e05280e449a39ec2c1b53e1fCindy Wangpublic class MediaStoreSaver {
35de2f182fdb522689e05280e449a39ec2c1b53e1fCindy Wang    public static final String savePNG(Bitmap bitmap,
36de2f182fdb522689e05280e449a39ec2c1b53e1fCindy Wang                                       String folderName,
37de2f182fdb522689e05280e449a39ec2c1b53e1fCindy Wang                                       String imageName,
38de2f182fdb522689e05280e449a39ec2c1b53e1fCindy Wang                                        Context mContext) {
39de2f182fdb522689e05280e449a39ec2c1b53e1fCindy Wang        File folder = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES);
40de2f182fdb522689e05280e449a39ec2c1b53e1fCindy Wang        String folder_path = folder.getAbsolutePath();
41de2f182fdb522689e05280e449a39ec2c1b53e1fCindy Wang        String file_path = folder_path + "/" + folderName;
42de2f182fdb522689e05280e449a39ec2c1b53e1fCindy Wang        File dir = new File(file_path);
43de2f182fdb522689e05280e449a39ec2c1b53e1fCindy Wang
44de2f182fdb522689e05280e449a39ec2c1b53e1fCindy Wang        if (!dir.exists()) {
45de2f182fdb522689e05280e449a39ec2c1b53e1fCindy Wang            System.out.println("make directory: " + dir.getAbsolutePath());
46de2f182fdb522689e05280e449a39ec2c1b53e1fCindy Wang            dir.mkdirs();
47de2f182fdb522689e05280e449a39ec2c1b53e1fCindy Wang        }
48fb2af6b101911d7abf65a519704cdaebb0cae6fdYang Ni        //int n = dir.listFiles().length;
49fb2af6b101911d7abf65a519704cdaebb0cae6fdYang Ni        //File file = new File(dir, imageName + n + ".png");
50fb2af6b101911d7abf65a519704cdaebb0cae6fdYang Ni        File file = new File(dir, imageName + ".png");
51de2f182fdb522689e05280e449a39ec2c1b53e1fCindy Wang        try {
52de2f182fdb522689e05280e449a39ec2c1b53e1fCindy Wang            FileOutputStream fOut = new FileOutputStream(file);
53de2f182fdb522689e05280e449a39ec2c1b53e1fCindy Wang            bitmap.compress(Bitmap.CompressFormat.PNG, 0, fOut);
54de2f182fdb522689e05280e449a39ec2c1b53e1fCindy Wang            System.out.println("saved image: " + file.getAbsolutePath());
55de2f182fdb522689e05280e449a39ec2c1b53e1fCindy Wang            fOut.flush();
56de2f182fdb522689e05280e449a39ec2c1b53e1fCindy Wang            fOut.close();
57de2f182fdb522689e05280e449a39ec2c1b53e1fCindy Wang        } catch (FileNotFoundException e) {
58de2f182fdb522689e05280e449a39ec2c1b53e1fCindy Wang            e.printStackTrace();
59de2f182fdb522689e05280e449a39ec2c1b53e1fCindy Wang        } catch (IOException e) {
60de2f182fdb522689e05280e449a39ec2c1b53e1fCindy Wang            e.printStackTrace();
61de2f182fdb522689e05280e449a39ec2c1b53e1fCindy Wang        }
62de2f182fdb522689e05280e449a39ec2c1b53e1fCindy Wang
63fb2af6b101911d7abf65a519704cdaebb0cae6fdYang Ni        // MediaStorageScan(mContext, file);
64de2f182fdb522689e05280e449a39ec2c1b53e1fCindy Wang        return file.getAbsolutePath();
65de2f182fdb522689e05280e449a39ec2c1b53e1fCindy Wang    }
66de2f182fdb522689e05280e449a39ec2c1b53e1fCindy Wang    /*
67de2f182fdb522689e05280e449a39ec2c1b53e1fCindy Wang     * Refresh image files to view them on computer
68de2f182fdb522689e05280e449a39ec2c1b53e1fCindy Wang     */
69de2f182fdb522689e05280e449a39ec2c1b53e1fCindy Wang    private static void MediaStorageScan(Context context, final File file) {
70de2f182fdb522689e05280e449a39ec2c1b53e1fCindy Wang        final Uri fileUri = Uri.fromFile(file);
71de2f182fdb522689e05280e449a39ec2c1b53e1fCindy Wang
72de2f182fdb522689e05280e449a39ec2c1b53e1fCindy Wang        // New way
73de2f182fdb522689e05280e449a39ec2c1b53e1fCindy Wang        if (android.os.Build.VERSION.SDK_INT >= Build.VERSION_CODES.ICE_CREAM_SANDWICH) {
74de2f182fdb522689e05280e449a39ec2c1b53e1fCindy Wang            context.sendBroadcast(new Intent("android.hardware.action.NEW_PICTURE", fileUri));
75de2f182fdb522689e05280e449a39ec2c1b53e1fCindy Wang        }
76de2f182fdb522689e05280e449a39ec2c1b53e1fCindy Wang
77de2f182fdb522689e05280e449a39ec2c1b53e1fCindy Wang        // Keep compatibility
78de2f182fdb522689e05280e449a39ec2c1b53e1fCindy Wang        context.sendBroadcast(new Intent("com.android.camera.NEW_PICTURE", fileUri));
79de2f182fdb522689e05280e449a39ec2c1b53e1fCindy Wang
80de2f182fdb522689e05280e449a39ec2c1b53e1fCindy Wang        // Usual way
81de2f182fdb522689e05280e449a39ec2c1b53e1fCindy Wang        final Intent intent = new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE);
82de2f182fdb522689e05280e449a39ec2c1b53e1fCindy Wang        intent.setData(fileUri);
83de2f182fdb522689e05280e449a39ec2c1b53e1fCindy Wang        context.sendBroadcast(intent);
84de2f182fdb522689e05280e449a39ec2c1b53e1fCindy Wang    }
85de2f182fdb522689e05280e449a39ec2c1b53e1fCindy Wang
86de2f182fdb522689e05280e449a39ec2c1b53e1fCindy Wang}
87