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