summaryrefslogtreecommitdiff
path: root/sample/src
diff options
context:
space:
mode:
authorAndrew Sapperstein <asapperstein@google.com>2012-08-10 17:44:38 -0700
committerAndrew Sapperstein <asapperstein@google.com>2012-08-10 17:52:12 -0700
commit7d13b0b858f6d2bce1a1f0088ab6739033087d19 (patch)
tree4481ba19cbeb5b2eeef6a9dfda7964fbe3c44dad /sample/src
parent62dd23137c25e7a32d22ce2a7a6e5e57a465b349 (diff)
downloadphotoviewer-7d13b0b858f6d2bce1a1f0088ab6739033087d19.tar.gz
Created a sample photo viewer implementation.
Change-Id: Ida5ab5c3247a52c5fbbd495d6e127c18493356ce
Diffstat (limited to 'sample/src')
-rw-r--r--sample/src/com/example/photoviewersample/MainActivity.java30
-rw-r--r--sample/src/com/example/photoviewersample/SampleProvider.java179
2 files changed, 209 insertions, 0 deletions
diff --git a/sample/src/com/example/photoviewersample/MainActivity.java b/sample/src/com/example/photoviewersample/MainActivity.java
new file mode 100644
index 0000000..efc2064
--- /dev/null
+++ b/sample/src/com/example/photoviewersample/MainActivity.java
@@ -0,0 +1,30 @@
+package com.example.photoviewersample;
+
+import android.app.Activity;
+import android.os.Bundle;
+import android.view.View;
+import android.view.View.OnClickListener;
+
+import com.android.ex.photo.Intents;
+import com.android.ex.photo.Intents.PhotoViewIntentBuilder;
+
+public class MainActivity extends Activity implements OnClickListener {
+
+ @Override
+ public void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ setContentView(R.layout.activity_main);
+ View b = findViewById(R.id.button);
+ b.setOnClickListener(this);
+ }
+
+ @Override
+ public void onClick(View v) {
+ final PhotoViewIntentBuilder builder =
+ Intents.newPhotoViewActivityIntentBuilder(this);
+ builder
+ .setPhotosUri("content://com.example.photoviewersample.SampleProvider/photos");
+
+ startActivity(builder.build());
+ }
+}
diff --git a/sample/src/com/example/photoviewersample/SampleProvider.java b/sample/src/com/example/photoviewersample/SampleProvider.java
new file mode 100644
index 0000000..86ae82b
--- /dev/null
+++ b/sample/src/com/example/photoviewersample/SampleProvider.java
@@ -0,0 +1,179 @@
+package com.example.photoviewersample;
+
+import android.content.ContentProvider;
+import android.content.ContentValues;
+import android.content.UriMatcher;
+import android.content.res.AssetFileDescriptor;
+import android.database.Cursor;
+import android.database.MatrixCursor;
+import android.net.Uri;
+
+import java.io.FileNotFoundException;
+import java.io.IOException;
+import java.util.List;
+
+public class SampleProvider extends ContentProvider {
+ private static final int PHOTOS = 1;
+ private static final int PHOTO_INDIVIDUAL_1 = 2;
+ private static final int PHOTO_INDIVIDUAL_2 = 3;
+ private static final int PHOTO_INDIVIDUAL_3 = 4;
+ private static final int PHOTO_INDIVIDUAL_4 = 5;
+
+ private static final String PROVIDER_URI = "com.example.photoviewersample.SampleProvider";
+
+ // Creates a UriMatcher object.
+ private static final UriMatcher sUriMatcher = new UriMatcher(UriMatcher.NO_MATCH);
+
+ static
+ {
+ sUriMatcher.addURI(PROVIDER_URI, "photos", PHOTOS);
+ sUriMatcher.addURI(PROVIDER_URI, "photos/1", PHOTO_INDIVIDUAL_1);
+ sUriMatcher.addURI(PROVIDER_URI, "photos/2", PHOTO_INDIVIDUAL_2);
+ sUriMatcher.addURI(PROVIDER_URI, "photos/3", PHOTO_INDIVIDUAL_3);
+ sUriMatcher.addURI(PROVIDER_URI, "photos/4", PHOTO_INDIVIDUAL_4);
+ }
+
+ @Override
+ public int delete(Uri uri, String selection, String[] selectionArgs) {
+ // TODO Auto-generated method stub
+ return 0;
+ }
+
+ @Override
+ public String getType(Uri uri) {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ @Override
+ public Uri insert(Uri uri, ContentValues values) {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ @Override
+ public boolean onCreate() {
+ // TODO Auto-generated method stub
+ return false;
+ }
+
+ @Override
+ public Cursor query(Uri uri, String[] projection, String selection, String[] selectionArgs,
+ String sortOrder) {
+ MatrixCursor matrix = new MatrixCursor(projection);
+
+ /*
+ * Choose the table to query and a sort order based on the code returned for the incoming
+ * URI. Here, too, only the statements for table 3 are shown.
+ */
+ switch (sUriMatcher.match(uri)) {
+ // If the incoming URI was for all of the photos table
+ case PHOTOS:
+ addRow(matrix, PHOTO_INDIVIDUAL_1);
+ addRow(matrix, PHOTO_INDIVIDUAL_2);
+ addRow(matrix, PHOTO_INDIVIDUAL_3);
+ addRow(matrix, PHOTO_INDIVIDUAL_4);
+ break;
+
+ // If the incoming URI was for a single row
+ case PHOTO_INDIVIDUAL_1:
+ addRow(matrix, PHOTO_INDIVIDUAL_1);
+ break;
+ case PHOTO_INDIVIDUAL_2:
+ addRow(matrix, PHOTO_INDIVIDUAL_2);
+ break;
+ case PHOTO_INDIVIDUAL_3:
+ addRow(matrix, PHOTO_INDIVIDUAL_3);
+ break;
+ case PHOTO_INDIVIDUAL_4:
+ addRow(matrix, PHOTO_INDIVIDUAL_4);
+ break;
+
+ default:
+ // If the URI is not recognized, you should do some error handling here.
+ }
+ // call the code to actually do the query
+
+ return matrix;
+ }
+
+ /**
+ * Adds a single row to the Cursor. A real implementation should
+ * check the projection to properly match the columns.
+ */
+ private void addRow(MatrixCursor matrix, int match_id) {
+ switch (match_id) {
+ case PHOTO_INDIVIDUAL_1:
+ matrix.newRow()
+ .add("content://" + PROVIDER_URI + "/photos/1") // uri
+ .add("blah.png") // displayName
+ .add("content://" + PROVIDER_URI + "/photos/1/contentUri") // contentUri
+ .add("content://" + PROVIDER_URI + "/photos/1/thumbnailUri") // thumbnailUri
+ .add("image/png"); // contentType
+ break;
+ case PHOTO_INDIVIDUAL_2:
+ matrix.newRow()
+ .add("content://" + PROVIDER_URI + "/photos/2") // uri
+ .add("johannson.png") // displayName
+ .add("content://" + PROVIDER_URI + "/photos/2/contentUri") // contentUri
+ .add("content://" + PROVIDER_URI + "/photos/2/thumbnailUri") // thumbnailUri
+ .add("image/png"); // contentType
+ break;
+ case PHOTO_INDIVIDUAL_3:
+ matrix.newRow()
+ .add("content://" + PROVIDER_URI + "/photos/3") // uri
+ .add("planets.png") // displayName
+ .add("content://" + PROVIDER_URI + "/photos/3/contentUri") // contentUri
+ .add("content://" + PROVIDER_URI + "/photos/3/thumbnailUri") // thumbnailUri
+ .add("image/png"); // contentType
+ break;
+ case PHOTO_INDIVIDUAL_4:
+ matrix.newRow()
+ .add("content://" + PROVIDER_URI + "/photos/4") // uri
+ .add("galaxy.png") // displayName
+ .add("content://" + PROVIDER_URI + "/photos/4/contentUri") // contentUri
+ .add("content://" + PROVIDER_URI + "/photos/4/thumbnailUri") // thumbnailUri
+ .add("image/png"); // contentType
+ break;
+
+ default:
+ // If the URI is not recognized, you should do some error handling here.
+ }
+ }
+
+ @Override
+ public int update(Uri uri, ContentValues values, String selection, String[] selectionArgs) {
+ // TODO Auto-generated method stub
+ return 0;
+ }
+
+ @Override
+ public AssetFileDescriptor openAssetFile(Uri uri, String mode) throws FileNotFoundException {
+ List<String> pathSegments = uri.getPathSegments();
+ final int id = Integer.parseInt(pathSegments.get(1));
+ String fileName;
+ switch (id) {
+ case 1:
+ fileName = "blah.png";
+ break;
+ case 2:
+ fileName = "johannson.png";
+ break;
+ case 3:
+ fileName = "planets.png";
+ break;
+ case 4:
+ fileName = "galaxy.png";
+ break;
+ default:
+ fileName = null;
+ break;
+ }
+ try {
+ return getContext().getAssets().openFd(fileName);
+ } catch (IOException e) {
+ e.printStackTrace();
+ return null;
+ }
+ }
+}