diff options
author | Mike Lockwood <lockwood@android.com> | 2010-06-10 16:35:24 -0400 |
---|---|---|
committer | Mike Lockwood <lockwood@android.com> | 2010-06-10 16:58:05 -0400 |
commit | 99b3452f404e1574508665ebb71362766d362603 (patch) | |
tree | d9e8879248b3c1a3618e921bd3dd6fa94738a6f6 | |
parent | dda568609232cdf82a2f050b0d0727627f49d448 (diff) | |
download | frameworks_base-99b3452f404e1574508665ebb71362766d362603.zip frameworks_base-99b3452f404e1574508665ebb71362766d362603.tar.gz frameworks_base-99b3452f404e1574508665ebb71362766d362603.tar.bz2 |
CameraBrowser: Display thumbnails for camera images.
Signed-off-by: Mike Lockwood <lockwood@android.com>
4 files changed, 99 insertions, 9 deletions
diff --git a/media/tests/CameraBrowser/res/layout/object_info.xml b/media/tests/CameraBrowser/res/layout/object_info.xml index f67397f..c7fd830 100644 --- a/media/tests/CameraBrowser/res/layout/object_info.xml +++ b/media/tests/CameraBrowser/res/layout/object_info.xml @@ -140,5 +140,8 @@ <TextView android:id="@+id/keywords" style="@style/info_value" /> </TableRow> + <TableRow> + <ImageView android:id="@+id/thumbnail" /> + </TableRow> </TableLayout> diff --git a/media/tests/CameraBrowser/res/layout/object_list.xml b/media/tests/CameraBrowser/res/layout/object_list.xml new file mode 100644 index 0000000..30c18bb --- /dev/null +++ b/media/tests/CameraBrowser/res/layout/object_list.xml @@ -0,0 +1,33 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- Copyright (C) 2010 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. +--> + +<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" + android:orientation="horizontal" + android:layout_width="fill_parent" + android:layout_height="fill_parent"> + + <ImageView android:id="@+id/thumbnail" + android:layout_width="wrap_content" + android:layout_height="wrap_content" /> + + <TextView android:id="@+id/name" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:textAppearance="?android:attr/textAppearanceLarge" + android:gravity="center_vertical" + android:paddingLeft="6dip" + android:minHeight="?android:attr/listPreferredItemHeight" /> +</LinearLayout> diff --git a/media/tests/CameraBrowser/src/com/android/camerabrowser/ObjectBrowser.java b/media/tests/CameraBrowser/src/com/android/camerabrowser/ObjectBrowser.java index da29be8..019d584 100644 --- a/media/tests/CameraBrowser/src/com/android/camerabrowser/ObjectBrowser.java +++ b/media/tests/CameraBrowser/src/com/android/camerabrowser/ObjectBrowser.java @@ -17,16 +17,21 @@ package com.android.camerabrowser; import android.app.ListActivity; +import android.content.Context; import android.content.Intent; import android.database.Cursor; +import android.graphics.Bitmap; +import android.graphics.BitmapFactory; import android.net.Uri; import android.os.Bundle; import android.provider.Mtp; import android.util.Log; import android.view.View; import android.widget.ListAdapter; +import android.widget.ImageView; import android.widget.ListView; -import android.widget.SimpleCursorAdapter; +import android.widget.ResourceCursorAdapter; +import android.widget.TextView; /** * A list view displaying all objects within a container (folder or storage unit). @@ -41,7 +46,12 @@ public class ObjectBrowser extends ListActivity { private int mObjectID; private static final String[] OBJECT_COLUMNS = - new String[] { Mtp.Object._ID, Mtp.Object.NAME, Mtp.Object.FORMAT }; + new String[] { Mtp.Object._ID, Mtp.Object.NAME, Mtp.Object.FORMAT, Mtp.Object.THUMB }; + + static final int ID_COLUMN = 0; + static final int NAME_COLUMN = 1; + static final int FORMAT_COLUMN = 2; + static final int THUMB_COLUMN = 3; @Override protected void onCreate(Bundle savedInstanceState) { @@ -70,10 +80,7 @@ public class ObjectBrowser extends ListActivity { startManagingCursor(c); // Map Cursor columns to views defined in simple_list_item_1.xml - mAdapter = new SimpleCursorAdapter(this, - android.R.layout.simple_list_item_1, c, - new String[] { Mtp.Object.NAME }, - new int[] { android.R.id.text1, android.R.id.text2 }); + mAdapter = new ObjectCursorAdapter(this, c); setListAdapter(mAdapter); } } @@ -88,9 +95,9 @@ public class ObjectBrowser extends ListActivity { long format = 0; if (c != null && c.getCount() == 1) { c.moveToFirst(); - long rowId = c.getLong(0); - String name = c.getString(1); - format = c.getLong(2); + long rowId = c.getLong(ID_COLUMN); + String name = c.getString(NAME_COLUMN); + format = c.getLong(FORMAT_COLUMN); Log.d(TAG, "rowId: " + rowId + " name: " + name + " format: " + format); } if (format == Mtp.Object.FORMAT_JFIF) { @@ -107,4 +114,33 @@ public class ObjectBrowser extends ListActivity { startActivity(intent); } } + + private class ObjectCursorAdapter extends ResourceCursorAdapter { + + public ObjectCursorAdapter(Context context, Cursor c) { + super(context, R.layout.object_list, c); + } + + @Override + public void bindView(View view, Context context, Cursor cursor) { + ImageView thumbView = (ImageView)view.findViewById(R.id.thumbnail); + TextView nameView = (TextView)view.findViewById(R.id.name); + + // get the thumbnail + byte[] thumbnail = cursor.getBlob(THUMB_COLUMN); + if (thumbnail != null) { + Bitmap bitmap = BitmapFactory.decodeByteArray(thumbnail, 0, thumbnail.length); + if (bitmap != null) { + thumbView.setImageBitmap(bitmap); + } + } + + // get the name + String name = cursor.getString(NAME_COLUMN); + if (name == null) { + name = ""; + } + nameView.setText(name); + } + } } diff --git a/media/tests/CameraBrowser/src/com/android/camerabrowser/ObjectViewer.java b/media/tests/CameraBrowser/src/com/android/camerabrowser/ObjectViewer.java index 7055fc5..3033c54 100644 --- a/media/tests/CameraBrowser/src/com/android/camerabrowser/ObjectViewer.java +++ b/media/tests/CameraBrowser/src/com/android/camerabrowser/ObjectViewer.java @@ -18,11 +18,14 @@ package com.android.camerabrowser; import android.app.Activity; import android.content.Intent; import android.database.Cursor; +import android.graphics.Bitmap; +import android.graphics.BitmapFactory; import android.net.Uri; import android.os.Bundle; import android.provider.Mtp; import android.util.Log; import android.view.View; +import android.widget.ImageView; import android.widget.TextView; import java.util.Date; @@ -52,6 +55,7 @@ public class ObjectViewer extends Activity { Mtp.Object.DATE_CREATED, Mtp.Object.DATE_MODIFIED, Mtp.Object.KEYWORDS, + Mtp.Object.THUMB, }; @Override @@ -100,6 +104,20 @@ public class ObjectViewer extends Activity { view.setText(date.toString()); view = (TextView)findViewById(R.id.keywords); view.setText(c.getString(12)); + byte[] thumbnail = c.getBlob(13); + if (thumbnail != null) { + Log.d(TAG, "got thumbnail, length: " + thumbnail.length); + for (int i = 0; i < 50; i++) { + Log.d(TAG, " " + Integer.toHexString(thumbnail[i])); + } + + ImageView thumbView = (ImageView)findViewById(R.id.thumbnail); + Bitmap bitmap = BitmapFactory.decodeByteArray(thumbnail, 0, thumbnail.length); + Log.d(TAG, "bitmap: " + bitmap); + if (bitmap != null) { + thumbView.setImageBitmap(bitmap); + } + } } } } |