summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMike Lockwood <lockwood@android.com>2010-06-10 16:35:24 -0400
committerMike Lockwood <lockwood@android.com>2010-06-10 16:58:05 -0400
commit99b3452f404e1574508665ebb71362766d362603 (patch)
treed9e8879248b3c1a3618e921bd3dd6fa94738a6f6
parentdda568609232cdf82a2f050b0d0727627f49d448 (diff)
downloadframeworks_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>
-rw-r--r--media/tests/CameraBrowser/res/layout/object_info.xml3
-rw-r--r--media/tests/CameraBrowser/res/layout/object_list.xml33
-rw-r--r--media/tests/CameraBrowser/src/com/android/camerabrowser/ObjectBrowser.java54
-rw-r--r--media/tests/CameraBrowser/src/com/android/camerabrowser/ObjectViewer.java18
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);
+ }
+ }
}
}
}