/* * Copyright 2012 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package com.android.notificationstudio.action; import android.app.Activity; import android.content.Intent; import android.graphics.Bitmap; import android.graphics.Canvas; import android.net.Uri; import android.util.Log; import android.view.View; import android.widget.Toast; import com.android.notificationstudio.R; import java.io.ByteArrayOutputStream; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.text.SimpleDateFormat; import java.util.Date; public class ShareMockupAction { private static final String TAG = ShareMockupAction.class.getSimpleName(); private static final SimpleDateFormat FILE_NAME = new SimpleDateFormat("'notification.'yyyyMMdd'.'HHmmss'.png'"); public static void launch(Activity activity, CharSequence title) { // take a picture of the current mockup View v = activity.findViewById(R.id.preview); int w = v.getMeasuredWidth(); int h = v.getMeasuredHeight(); Bitmap mockup = Bitmap.createBitmap(w, h, Bitmap.Config.ARGB_8888); Canvas c = new Canvas(mockup); v.layout(0, 0, w, h); v.draw(c); // write the mockup to a temp file ByteArrayOutputStream bytes = new ByteArrayOutputStream(); mockup.compress(Bitmap.CompressFormat.PNG, 100, bytes); File f = new File(activity.getExternalCacheDir(), FILE_NAME.format(new Date())); FileOutputStream fo = null; try { f.createNewFile(); fo = new FileOutputStream(f); fo.write(bytes.toByteArray()); } catch (IOException e) { String msg = "Error writing mockup file"; Log.w(TAG, msg, e); Toast.makeText(activity, msg, Toast.LENGTH_SHORT).show(); return; } finally { if (fo != null) try { fo.close(); } catch (Exception e) { } } // launch intent to send the mockup image Intent share = new Intent(Intent.ACTION_SEND); share.setType("image/png"); share.putExtra(Intent.EXTRA_STREAM, Uri.fromFile(f.getAbsoluteFile())); activity.startActivity(Intent.createChooser(share, title)); } }