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