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