1 /* 2 * Copyright (C) 2008 Esmertec AG. 3 * Copyright (C) 2008 The Android Open Source Project 4 * 5 * Licensed under the Apache License, Version 2.0 (the "License"); 6 * you may not use this file except in compliance with the License. 7 * You may obtain a copy of the License at 8 * 9 * http://www.apache.org/licenses/LICENSE-2.0 10 * 11 * Unless required by applicable law or agreed to in writing, software 12 * distributed under the License is distributed on an "AS IS" BASIS, 13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 * See the License for the specific language governing permissions and 15 * limitations under the License. 16 */ 17 18 package com.android.mms.ui; 19 20 import java.util.Map; 21 22 import android.content.Context; 23 import android.graphics.Bitmap; 24 import android.graphics.BitmapFactory; 25 import android.media.MediaMetadataRetriever; 26 import android.net.Uri; 27 import android.util.AttributeSet; 28 import android.util.Log; 29 import android.widget.ImageView; 30 import android.widget.LinearLayout; 31 32 import com.android.mms.LogTag; 33 import com.android.mms.R; 34 // TODO: remove dependency for SDK build 35 36 /** 37 * This class provides an embedded editor/viewer of video attachment. 38 */ 39 public class VideoAttachmentView extends LinearLayout implements 40 SlideViewInterface { 41 private static final String TAG = LogTag.TAG; 42 43 private ImageView mThumbnailView; 44 VideoAttachmentView(Context context)45 public VideoAttachmentView(Context context) { 46 super(context); 47 } 48 VideoAttachmentView(Context context, AttributeSet attrs)49 public VideoAttachmentView(Context context, AttributeSet attrs) { 50 super(context, attrs); 51 } 52 53 @Override onFinishInflate()54 protected void onFinishInflate() { 55 mThumbnailView = (ImageView) findViewById(R.id.video_thumbnail); 56 } 57 startAudio()58 public void startAudio() { 59 // TODO Auto-generated method stub 60 } 61 startVideo()62 public void startVideo() { 63 // TODO Auto-generated method stub 64 } 65 setAudio(Uri audio, String name, Map<String, ?> extras)66 public void setAudio(Uri audio, String name, Map<String, ?> extras) { 67 // TODO Auto-generated method stub 68 } 69 setImage(String name, Bitmap bitmap)70 public void setImage(String name, Bitmap bitmap) { 71 // TODO Auto-generated method stub 72 } 73 setImageRegionFit(String fit)74 public void setImageRegionFit(String fit) { 75 // TODO Auto-generated method stub 76 } 77 setImageVisibility(boolean visible)78 public void setImageVisibility(boolean visible) { 79 // TODO Auto-generated method stub 80 } 81 setText(String name, String text)82 public void setText(String name, String text) { 83 // TODO Auto-generated method stub 84 } 85 setTextVisibility(boolean visible)86 public void setTextVisibility(boolean visible) { 87 // TODO Auto-generated method stub 88 } 89 setVideo(String name, Uri video)90 public void setVideo(String name, Uri video) { 91 try { 92 Bitmap bitmap = createVideoThumbnail(mContext, video); 93 if (null == bitmap) { 94 bitmap = BitmapFactory.decodeResource(getResources(), 95 R.drawable.ic_missing_thumbnail_video); 96 } 97 mThumbnailView.setImageBitmap(bitmap); 98 } catch (java.lang.OutOfMemoryError e) { 99 Log.e(TAG, "setVideo: out of memory: ", e); 100 } 101 } 102 setVideoThumbnail(String name, Bitmap thumbnail)103 public void setVideoThumbnail(String name, Bitmap thumbnail) { 104 mThumbnailView.setImageBitmap(thumbnail); 105 } 106 createVideoThumbnail(Context context, Uri uri)107 public static Bitmap createVideoThumbnail(Context context, Uri uri) { 108 Bitmap bitmap = null; 109 MediaMetadataRetriever retriever = new MediaMetadataRetriever(); 110 try { 111 retriever.setDataSource(context, uri); 112 bitmap = retriever.getFrameAtTime(-1); 113 } catch (RuntimeException ex) { 114 // Assume this is a corrupt video file. 115 } finally { 116 try { 117 retriever.release(); 118 } catch (RuntimeException ex) { 119 // Ignore failures while cleaning up. 120 } 121 } 122 return bitmap; 123 } 124 setVideoVisibility(boolean visible)125 public void setVideoVisibility(boolean visible) { 126 // TODO Auto-generated method stub 127 } 128 stopAudio()129 public void stopAudio() { 130 // TODO Auto-generated method stub 131 } 132 stopVideo()133 public void stopVideo() { 134 // TODO Auto-generated method stub 135 } 136 reset()137 public void reset() { 138 // TODO Auto-generated method stub 139 } 140 setVisibility(boolean visible)141 public void setVisibility(boolean visible) { 142 // TODO Auto-generated method stub 143 } 144 pauseAudio()145 public void pauseAudio() { 146 // TODO Auto-generated method stub 147 148 } 149 pauseVideo()150 public void pauseVideo() { 151 // TODO Auto-generated method stub 152 153 } 154 seekAudio(int seekTo)155 public void seekAudio(int seekTo) { 156 // TODO Auto-generated method stub 157 158 } 159 seekVideo(int seekTo)160 public void seekVideo(int seekTo) { 161 // TODO Auto-generated method stub 162 163 } 164 } 165