diff options
author | Bobby Georgescu <georgescu@google.com> | 2012-12-26 00:52:28 -0800 |
---|---|---|
committer | Bobby Georgescu <georgescu@google.com> | 2013-01-07 14:43:56 -0800 |
commit | d3aac52ffb88ced53413d5eef29c641dd6982267 (patch) | |
tree | b5e614ec3f5cc1f29ee6b501c7cfa8ac0bfb0fce /src/com/android/gallery3d/data | |
parent | 3114fa3a8a99be3c819d102dd1d069face13c43f (diff) | |
download | android_packages_apps_Gallery2-d3aac52ffb88ced53413d5eef29c641dd6982267.tar.gz android_packages_apps_Gallery2-d3aac52ffb88ced53413d5eef29c641dd6982267.tar.bz2 android_packages_apps_Gallery2-d3aac52ffb88ced53413d5eef29c641dd6982267.zip |
Replace camera importer
Change-Id: Icfeb23301bc6c9f8c8b12824bcbb0d8b41852d07
Diffstat (limited to 'src/com/android/gallery3d/data')
-rw-r--r-- | src/com/android/gallery3d/data/DataManager.java | 11 | ||||
-rw-r--r-- | src/com/android/gallery3d/data/DataSourceType.java | 5 | ||||
-rw-r--r-- | src/com/android/gallery3d/data/MediaObject.java | 17 | ||||
-rw-r--r-- | src/com/android/gallery3d/data/MtpContext.java | 144 | ||||
-rw-r--r-- | src/com/android/gallery3d/data/MtpDevice.java | 177 | ||||
-rw-r--r-- | src/com/android/gallery3d/data/MtpDeviceSet.java | 156 | ||||
-rw-r--r-- | src/com/android/gallery3d/data/MtpImage.java | 171 | ||||
-rw-r--r-- | src/com/android/gallery3d/data/MtpSource.java | 76 |
8 files changed, 9 insertions, 748 deletions
diff --git a/src/com/android/gallery3d/data/DataManager.java b/src/com/android/gallery3d/data/DataManager.java index 4ec7b6d98..8fcf4008a 100644 --- a/src/com/android/gallery3d/data/DataManager.java +++ b/src/com/android/gallery3d/data/DataManager.java @@ -68,13 +68,9 @@ public class DataManager implements StitchingChangeListener { private static final String TAG = "DataManager"; // This is the path for the media set seen by the user at top level. - private static final String TOP_SET_PATH = ApiHelper.HAS_MTP - ? "/combo/{/mtp,/local/all,/picasa/all}" - : "/combo/{/local/all,/picasa/all}"; + private static final String TOP_SET_PATH = "/combo/{/local/all,/picasa/all}"; - private static final String TOP_IMAGE_SET_PATH = ApiHelper.HAS_MTP - ? "/combo/{/mtp,/local/image,/picasa/image}" - : "/combo/{/local/image,/picasa/image}"; + private static final String TOP_IMAGE_SET_PATH = "/combo/{/local/image,/picasa/image}"; private static final String TOP_VIDEO_SET_PATH = "/combo/{/local/video,/picasa/video}"; @@ -118,9 +114,6 @@ public class DataManager implements StitchingChangeListener { // the order matters, the UriSource must come last addSource(new LocalSource(mApplication)); addSource(new PicasaSource(mApplication)); - if (ApiHelper.HAS_MTP) { - addSource(new MtpSource(mApplication)); - } addSource(new ComboSource(mApplication)); addSource(new ClusterSource(mApplication)); addSource(new FilterSource(mApplication)); diff --git a/src/com/android/gallery3d/data/DataSourceType.java b/src/com/android/gallery3d/data/DataSourceType.java index 27611880d..ab534d0c3 100644 --- a/src/com/android/gallery3d/data/DataSourceType.java +++ b/src/com/android/gallery3d/data/DataSourceType.java @@ -22,12 +22,10 @@ public final class DataSourceType { public static final int TYPE_NOT_CATEGORIZED = 0; public static final int TYPE_LOCAL = 1; public static final int TYPE_PICASA = 2; - public static final int TYPE_MTP = 3; - public static final int TYPE_CAMERA = 4; + public static final int TYPE_CAMERA = 3; private static final Path PICASA_ROOT = Path.fromString("/picasa"); private static final Path LOCAL_ROOT = Path.fromString("/local"); - private static final Path MTP_ROOT = Path.fromString("/mtp"); public static int identifySourceType(MediaSet set) { if (set == null) { @@ -40,7 +38,6 @@ public final class DataSourceType { Path prefix = path.getPrefixPath(); if (prefix == PICASA_ROOT) return TYPE_PICASA; - if (prefix == MTP_ROOT) return TYPE_MTP; if (prefix == LOCAL_ROOT) return TYPE_LOCAL; return TYPE_NOT_CATEGORIZED; diff --git a/src/com/android/gallery3d/data/MediaObject.java b/src/com/android/gallery3d/data/MediaObject.java index 9c82661f6..270d4cf0b 100644 --- a/src/com/android/gallery3d/data/MediaObject.java +++ b/src/com/android/gallery3d/data/MediaObject.java @@ -35,13 +35,12 @@ public abstract class MediaObject { public static final int SUPPORT_CACHE = 1 << 8; public static final int SUPPORT_EDIT = 1 << 9; public static final int SUPPORT_INFO = 1 << 10; - public static final int SUPPORT_IMPORT = 1 << 11; - public static final int SUPPORT_TRIM = 1 << 12; - public static final int SUPPORT_UNLOCK = 1 << 13; - public static final int SUPPORT_BACK = 1 << 14; - public static final int SUPPORT_ACTION = 1 << 15; - public static final int SUPPORT_CAMERA_SHORTCUT = 1 << 16; - public static final int SUPPORT_MUTE = 1 << 17; + public static final int SUPPORT_TRIM = 1 << 11; + public static final int SUPPORT_UNLOCK = 1 << 12; + public static final int SUPPORT_BACK = 1 << 13; + public static final int SUPPORT_ACTION = 1 << 14; + public static final int SUPPORT_CAMERA_SHORTCUT = 1 << 15; + public static final int SUPPORT_MUTE = 1 << 16; public static final int SUPPORT_ALL = 0xffffffff; // These are the bits returned from getMediaType(): @@ -120,10 +119,6 @@ public abstract class MediaObject { return MEDIA_TYPE_UNKNOWN; } - public boolean Import() { - throw new UnsupportedOperationException(); - } - public MediaDetails getDetails() { MediaDetails details = new MediaDetails(); return details; diff --git a/src/com/android/gallery3d/data/MtpContext.java b/src/com/android/gallery3d/data/MtpContext.java deleted file mode 100644 index 53b6faafb..000000000 --- a/src/com/android/gallery3d/data/MtpContext.java +++ /dev/null @@ -1,144 +0,0 @@ -package com.android.gallery3d.data; - -import android.annotation.TargetApi; -import android.content.Context; -import android.media.MediaScannerConnection; -import android.media.MediaScannerConnection.MediaScannerConnectionClient; -import android.mtp.MtpObjectInfo; -import android.net.Uri; -import android.os.Environment; -import android.util.Log; -import android.widget.Toast; - -import com.android.gallery3d.R; -import com.android.gallery3d.common.ApiHelper; -import com.android.gallery3d.util.BucketNames; -import com.android.gallery3d.util.GalleryUtils; - -import java.io.File; -import java.util.ArrayList; -import java.util.List; - -@TargetApi(ApiHelper.VERSION_CODES.HONEYCOMB_MR1) -public class MtpContext implements MtpClient.Listener { - private static final String TAG = "MtpContext"; - - private ScannerClient mScannerClient; - private Context mContext; - private MtpClient mClient; - - private static final class ScannerClient implements MediaScannerConnectionClient { - ArrayList<String> mPaths = new ArrayList<String>(); - MediaScannerConnection mScannerConnection; - boolean mConnected; - Object mLock = new Object(); - - public ScannerClient(Context context) { - mScannerConnection = new MediaScannerConnection(context, this); - } - - public void scanPath(String path) { - synchronized (mLock) { - if (mConnected) { - mScannerConnection.scanFile(path, null); - } else { - mPaths.add(path); - mScannerConnection.connect(); - } - } - } - - @Override - public void onMediaScannerConnected() { - synchronized (mLock) { - mConnected = true; - if (!mPaths.isEmpty()) { - for (String path : mPaths) { - mScannerConnection.scanFile(path, null); - } - mPaths.clear(); - } - } - } - - @Override - public void onScanCompleted(String path, Uri uri) { - } - } - - public MtpContext(Context context) { - mContext = context; - mScannerClient = new ScannerClient(context); - mClient = new MtpClient(mContext); - } - - public void pause() { - mClient.removeListener(this); - } - - public void resume() { - mClient.addListener(this); - notifyDirty(); - } - - @Override - public void deviceAdded(android.mtp.MtpDevice device) { - notifyDirty(); - showToast(R.string.camera_connected); - } - - @Override - public void deviceRemoved(android.mtp.MtpDevice device) { - notifyDirty(); - showToast(R.string.camera_disconnected); - } - - private void notifyDirty() { - mContext.getContentResolver().notifyChange(Uri.parse("mtp://"), null); - } - - private void showToast(final int msg) { - Toast.makeText(mContext, msg, Toast.LENGTH_SHORT).show(); - } - - public MtpClient getMtpClient() { - return mClient; - } - - public boolean copyFile(String deviceName, MtpObjectInfo objInfo) { - if (GalleryUtils.hasSpaceForSize(objInfo.getCompressedSize())) { - File dest = Environment.getExternalStorageDirectory(); - dest = new File(dest, BucketNames.IMPORTED); - dest.mkdirs(); - String destPath = new File(dest, objInfo.getName()).getAbsolutePath(); - int objectId = objInfo.getObjectHandle(); - if (mClient.importFile(deviceName, objectId, destPath)) { - mScannerClient.scanPath(destPath); - return true; - } - } else { - Log.w(TAG, "No space to import " + objInfo.getName() + - " whose size = " + objInfo.getCompressedSize()); - } - return false; - } - - public boolean copyAlbum(String deviceName, String albumName, - List<MtpObjectInfo> children) { - File dest = Environment.getExternalStorageDirectory(); - dest = new File(dest, albumName); - dest.mkdirs(); - int success = 0; - for (MtpObjectInfo child : children) { - if (!GalleryUtils.hasSpaceForSize(child.getCompressedSize())) continue; - - File importedFile = new File(dest, child.getName()); - String path = importedFile.getAbsolutePath(); - if (mClient.importFile(deviceName, child.getObjectHandle(), path)) { - mScannerClient.scanPath(path); - success++; - } - } - return success == children.size(); - } -} diff --git a/src/com/android/gallery3d/data/MtpDevice.java b/src/com/android/gallery3d/data/MtpDevice.java deleted file mode 100644 index 25ffbc8ba..000000000 --- a/src/com/android/gallery3d/data/MtpDevice.java +++ /dev/null @@ -1,177 +0,0 @@ -/* - * 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. - */ - -package com.android.gallery3d.data; - -import android.annotation.TargetApi; -import android.hardware.usb.UsbDevice; -import android.mtp.MtpConstants; -import android.mtp.MtpObjectInfo; -import android.mtp.MtpStorageInfo; -import android.net.Uri; -import android.util.Log; - -import com.android.gallery3d.app.GalleryApp; -import com.android.gallery3d.common.ApiHelper; - -import java.util.ArrayList; -import java.util.List; - -@TargetApi(ApiHelper.VERSION_CODES.HONEYCOMB_MR1) -public class MtpDevice extends MediaSet { - private static final String TAG = "MtpDevice"; - - private final GalleryApp mApplication; - private final int mDeviceId; - private final String mDeviceName; - private final MtpContext mMtpContext; - private final String mName; - private final ChangeNotifier mNotifier; - private final Path mItemPath; - private List<MtpObjectInfo> mJpegChildren; - - public MtpDevice(Path path, GalleryApp application, int deviceId, - String name, MtpContext mtpContext) { - super(path, nextVersionNumber()); - mApplication = application; - mDeviceId = deviceId; - mDeviceName = UsbDevice.getDeviceName(deviceId); - mMtpContext = mtpContext; - mName = name; - mNotifier = new ChangeNotifier(this, Uri.parse("mtp://"), application); - mItemPath = Path.fromString("/mtp/item/" + String.valueOf(deviceId)); - mJpegChildren = new ArrayList<MtpObjectInfo>(); - } - - public MtpDevice(Path path, GalleryApp application, int deviceId, - MtpContext mtpContext) { - this(path, application, deviceId, - MtpDeviceSet.getDeviceName(mtpContext, deviceId), mtpContext); - } - - private List<MtpObjectInfo> loadItems() { - ArrayList<MtpObjectInfo> result = new ArrayList<MtpObjectInfo>(); - - List<MtpStorageInfo> storageList = mMtpContext.getMtpClient() - .getStorageList(mDeviceName); - if (storageList == null) return result; - - for (MtpStorageInfo info : storageList) { - collectJpegChildren(info.getStorageId(), 0, result); - } - - return result; - } - - private void collectJpegChildren(int storageId, int objectId, - ArrayList<MtpObjectInfo> result) { - ArrayList<MtpObjectInfo> dirChildren = new ArrayList<MtpObjectInfo>(); - - queryChildren(storageId, objectId, result, dirChildren); - - for (int i = 0, n = dirChildren.size(); i < n; i++) { - MtpObjectInfo info = dirChildren.get(i); - collectJpegChildren(storageId, info.getObjectHandle(), result); - } - } - - private void queryChildren(int storageId, int objectId, - ArrayList<MtpObjectInfo> jpeg, ArrayList<MtpObjectInfo> dir) { - List<MtpObjectInfo> children = mMtpContext.getMtpClient().getObjectList( - mDeviceName, storageId, objectId); - if (children == null) return; - - for (MtpObjectInfo obj : children) { - int format = obj.getFormat(); - switch (format) { - case MtpConstants.FORMAT_JFIF: - case MtpConstants.FORMAT_EXIF_JPEG: - jpeg.add(obj); - break; - case MtpConstants.FORMAT_ASSOCIATION: - dir.add(obj); - break; - default: - Log.w(TAG, "other type: name = " + obj.getName() - + ", format = " + format); - } - } - } - - public static MtpObjectInfo getObjectInfo(MtpContext mtpContext, int deviceId, - int objectId) { - String deviceName = UsbDevice.getDeviceName(deviceId); - return mtpContext.getMtpClient().getObjectInfo(deviceName, objectId); - } - - @Override - public ArrayList<MediaItem> getMediaItem(int start, int count) { - ArrayList<MediaItem> result = new ArrayList<MediaItem>(); - int begin = start; - int end = Math.min(start + count, mJpegChildren.size()); - - DataManager dataManager = mApplication.getDataManager(); - for (int i = begin; i < end; i++) { - MtpObjectInfo child = mJpegChildren.get(i); - Path childPath = mItemPath.getChild(child.getObjectHandle()); - synchronized (DataManager.LOCK) { - MtpImage image = (MtpImage) dataManager.peekMediaObject(childPath); - if (image == null) { - image = new MtpImage( - childPath, mApplication, mDeviceId, child, mMtpContext); - } else { - image.updateContent(child); - } - result.add(image); - } - } - return result; - } - - @Override - public int getMediaItemCount() { - return mJpegChildren.size(); - } - - @Override - public String getName() { - return mName; - } - - @Override - public long reload() { - if (mNotifier.isDirty()) { - mDataVersion = nextVersionNumber(); - mJpegChildren = loadItems(); - } - return mDataVersion; - } - - @Override - public int getSupportedOperations() { - return SUPPORT_IMPORT; - } - - @Override - public boolean Import() { - return mMtpContext.copyAlbum(mDeviceName, mName, mJpegChildren); - } - - @Override - public boolean isLeafAlbum() { - return true; - } -} diff --git a/src/com/android/gallery3d/data/MtpDeviceSet.java b/src/com/android/gallery3d/data/MtpDeviceSet.java deleted file mode 100644 index bc4bc6321..000000000 --- a/src/com/android/gallery3d/data/MtpDeviceSet.java +++ /dev/null @@ -1,156 +0,0 @@ -/* - * 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. - */ - -package com.android.gallery3d.data; - -import android.annotation.TargetApi; -import android.mtp.MtpDeviceInfo; -import android.net.Uri; -import android.os.Handler; -import android.util.Log; - -import com.android.gallery3d.R; -import com.android.gallery3d.app.GalleryApp; -import com.android.gallery3d.common.ApiHelper; -import com.android.gallery3d.util.Future; -import com.android.gallery3d.util.FutureListener; -import com.android.gallery3d.util.MediaSetUtils; -import com.android.gallery3d.util.ThreadPool.Job; -import com.android.gallery3d.util.ThreadPool.JobContext; - -import java.util.ArrayList; -import java.util.Collections; -import java.util.List; - -// MtpDeviceSet -- MtpDevice -- MtpImage -@TargetApi(ApiHelper.VERSION_CODES.HONEYCOMB_MR1) -public class MtpDeviceSet extends MediaSet - implements FutureListener<ArrayList<MediaSet>> { - private static final String TAG = "MtpDeviceSet"; - - private GalleryApp mApplication; - private final ChangeNotifier mNotifier; - private final MtpContext mMtpContext; - private final String mName; - private final Handler mHandler; - - private Future<ArrayList<MediaSet>> mLoadTask; - private ArrayList<MediaSet> mDeviceSet = new ArrayList<MediaSet>(); - private ArrayList<MediaSet> mLoadBuffer; - private boolean mIsLoading; - - public MtpDeviceSet(Path path, GalleryApp application, MtpContext mtpContext) { - super(path, nextVersionNumber()); - mApplication = application; - mNotifier = new ChangeNotifier(this, Uri.parse("mtp://"), application); - mMtpContext = mtpContext; - mName = application.getResources().getString(R.string.set_label_mtp_devices); - mHandler = new Handler(mApplication.getMainLooper()); - } - - private class DevicesLoader implements Job<ArrayList<MediaSet>> { - @Override - public ArrayList<MediaSet> run(JobContext jc) { - DataManager dataManager = mApplication.getDataManager(); - ArrayList<MediaSet> result = new ArrayList<MediaSet>(); - - // Enumerate all devices - List<android.mtp.MtpDevice> devices = mMtpContext.getMtpClient().getDeviceList(); - Log.v(TAG, "loadDevices: " + devices + ", size=" + devices.size()); - for (android.mtp.MtpDevice mtpDevice : devices) { - synchronized (DataManager.LOCK) { - int deviceId = mtpDevice.getDeviceId(); - Path childPath = mPath.getChild(deviceId); - MtpDevice device = (MtpDevice) dataManager.peekMediaObject(childPath); - if (device == null) { - device = new MtpDevice(childPath, mApplication, deviceId, mMtpContext); - } - Log.d(TAG, "add device " + device); - result.add(device); - } - } - Collections.sort(result, MediaSetUtils.NAME_COMPARATOR); - return result; - } - } - - public static String getDeviceName(MtpContext mtpContext, int deviceId) { - android.mtp.MtpDevice device = mtpContext.getMtpClient().getDevice(deviceId); - if (device == null) { - return ""; - } - MtpDeviceInfo info = device.getDeviceInfo(); - if (info == null) { - return ""; - } - String manufacturer = info.getManufacturer().trim(); - String model = info.getModel().trim(); - return manufacturer + " " + model; - } - - @Override - public MediaSet getSubMediaSet(int index) { - return index < mDeviceSet.size() ? mDeviceSet.get(index) : null; - } - - @Override - public int getSubMediaSetCount() { - return mDeviceSet.size(); - } - - @Override - public String getName() { - return mName; - } - - @Override - public synchronized boolean isLoading() { - return mIsLoading; - } - - @Override - public synchronized long reload() { - if (mNotifier.isDirty()) { - if (mLoadTask != null) mLoadTask.cancel(); - mIsLoading = true; - mLoadTask = mApplication.getThreadPool().submit(new DevicesLoader(), this); - } - if (mLoadBuffer != null) { - mDeviceSet = mLoadBuffer; - mLoadBuffer = null; - for (MediaSet device : mDeviceSet) { - device.reload(); - } - mDataVersion = nextVersionNumber(); - } - return mDataVersion; - } - - @Override - public synchronized void onFutureDone(Future<ArrayList<MediaSet>> future) { - if (future != mLoadTask) return; - mLoadBuffer = future.get(); - mIsLoading = false; - if (mLoadBuffer == null) mLoadBuffer = new ArrayList<MediaSet>(); - - mHandler.post(new Runnable() { - @Override - public void run() { - notifyContentChanged(); - } - }); - } -} diff --git a/src/com/android/gallery3d/data/MtpImage.java b/src/com/android/gallery3d/data/MtpImage.java deleted file mode 100644 index 0abb1985d..000000000 --- a/src/com/android/gallery3d/data/MtpImage.java +++ /dev/null @@ -1,171 +0,0 @@ -/* - * 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. - */ - -package com.android.gallery3d.data; - -import android.annotation.TargetApi; -import android.content.Context; -import android.graphics.Bitmap; -import android.graphics.BitmapRegionDecoder; -import android.hardware.usb.UsbDevice; -import android.mtp.MtpObjectInfo; -import android.net.Uri; -import android.util.Log; - -import com.android.gallery3d.app.GalleryApp; -import com.android.gallery3d.common.ApiHelper; -import com.android.gallery3d.provider.GalleryProvider; -import com.android.gallery3d.util.ThreadPool.Job; -import com.android.gallery3d.util.ThreadPool.JobContext; - -import java.text.DateFormat; -import java.util.Date; - -@TargetApi(ApiHelper.VERSION_CODES.HONEYCOMB_MR1) -public class MtpImage extends MediaItem { - private static final String TAG = "MtpImage"; - - private final int mDeviceId; - private int mObjectId; - private int mObjectSize; - private long mDateTaken; - private String mFileName; - private final MtpContext mMtpContext; - private final MtpObjectInfo mObjInfo; - private final int mImageWidth; - private final int mImageHeight; - private final Context mContext; - - MtpImage(Path path, GalleryApp application, int deviceId, - MtpObjectInfo objInfo, MtpContext mtpContext) { - super(path, nextVersionNumber()); - mContext = application.getAndroidContext(); - mDeviceId = deviceId; - mObjInfo = objInfo; - mObjectId = objInfo.getObjectHandle(); - mObjectSize = objInfo.getCompressedSize(); - mDateTaken = objInfo.getDateCreated(); - mFileName = objInfo.getName(); - mImageWidth = objInfo.getImagePixWidth(); - mImageHeight = objInfo.getImagePixHeight(); - mMtpContext = mtpContext; - } - - MtpImage(Path path, GalleryApp app, int deviceId, int objectId, MtpContext mtpContext) { - this(path, app, deviceId, MtpDevice.getObjectInfo(mtpContext, deviceId, objectId), - mtpContext); - } - - @Override - public long getDateInMs() { - return mDateTaken; - } - - @Override - public Job<Bitmap> requestImage(int type) { - return new Job<Bitmap>() { - @Override - public Bitmap run(JobContext jc) { - byte[] thumbnail = mMtpContext.getMtpClient().getThumbnail( - UsbDevice.getDeviceName(mDeviceId), mObjectId); - if (thumbnail == null) { - Log.w(TAG, "decoding thumbnail failed"); - return null; - } - return DecodeUtils.decode(jc, thumbnail, null); - } - }; - } - - @Override - public Job<BitmapRegionDecoder> requestLargeImage() { - return new Job<BitmapRegionDecoder>() { - @Override - public BitmapRegionDecoder run(JobContext jc) { - byte[] bytes = mMtpContext.getMtpClient().getObject( - UsbDevice.getDeviceName(mDeviceId), mObjectId, mObjectSize); - return DecodeUtils.createBitmapRegionDecoder( - jc, bytes, 0, bytes.length, false); - } - }; - } - - public byte[] getImageData() { - return mMtpContext.getMtpClient().getObject( - UsbDevice.getDeviceName(mDeviceId), mObjectId, mObjectSize); - } - - @Override - public boolean Import() { - return mMtpContext.copyFile(UsbDevice.getDeviceName(mDeviceId), mObjInfo); - } - - @Override - public int getSupportedOperations() { - return SUPPORT_FULL_IMAGE | SUPPORT_IMPORT; - } - - public void updateContent(MtpObjectInfo info) { - if (mObjectId != info.getObjectHandle() || mDateTaken != info.getDateCreated()) { - mObjectId = info.getObjectHandle(); - mDateTaken = info.getDateCreated(); - mDataVersion = nextVersionNumber(); - } - } - - @Override - public String getMimeType() { - // Currently only JPEG is supported in MTP. - return "image/jpeg"; - } - - @Override - public int getMediaType() { - return MEDIA_TYPE_IMAGE; - } - - @Override - public long getSize() { - return mObjectSize; - } - - @Override - public Uri getContentUri() { - return GalleryProvider.getUriFor(mContext, mPath); - } - - @Override - public MediaDetails getDetails() { - MediaDetails details = super.getDetails(); - DateFormat formater = DateFormat.getDateTimeInstance(); - details.addDetail(MediaDetails.INDEX_TITLE, mFileName); - details.addDetail(MediaDetails.INDEX_DATETIME, formater.format(new Date(mDateTaken))); - details.addDetail(MediaDetails.INDEX_WIDTH, mImageWidth); - details.addDetail(MediaDetails.INDEX_HEIGHT, mImageHeight); - details.addDetail(MediaDetails.INDEX_SIZE, Long.valueOf(mObjectSize)); - return details; - } - - @Override - public int getWidth() { - return mImageWidth; - } - - @Override - public int getHeight() { - return mImageHeight; - } -} diff --git a/src/com/android/gallery3d/data/MtpSource.java b/src/com/android/gallery3d/data/MtpSource.java deleted file mode 100644 index 47a2e6c66..000000000 --- a/src/com/android/gallery3d/data/MtpSource.java +++ /dev/null @@ -1,76 +0,0 @@ -/* - * 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. - */ - -package com.android.gallery3d.data; - -import com.android.gallery3d.app.GalleryApp; - -public class MtpSource extends MediaSource { - @SuppressWarnings("unused") - private static final String TAG = "MtpSource"; - - private static final int MTP_DEVICESET = 0; - private static final int MTP_DEVICE = 1; - private static final int MTP_ITEM = 2; - - GalleryApp mApplication; - PathMatcher mMatcher; - MtpContext mMtpContext; - - public MtpSource(GalleryApp application) { - super("mtp"); - mApplication = application; - mMatcher = new PathMatcher(); - mMatcher.add("/mtp", MTP_DEVICESET); - mMatcher.add("/mtp/*", MTP_DEVICE); - mMatcher.add("/mtp/item/*/*", MTP_ITEM); - mMtpContext = new MtpContext(mApplication.getAndroidContext()); - } - - @Override - public MediaObject createMediaObject(Path path) { - switch (mMatcher.match(path)) { - case MTP_DEVICESET: { - return new MtpDeviceSet(path, mApplication, mMtpContext); - } - case MTP_DEVICE: { - int deviceId = mMatcher.getIntVar(0); - return new MtpDevice(path, mApplication, deviceId, mMtpContext); - } - case MTP_ITEM: { - int deviceId = mMatcher.getIntVar(0); - int objectId = mMatcher.getIntVar(1); - return new MtpImage(path, mApplication, deviceId, objectId, mMtpContext); - } - default: - throw new RuntimeException("bad path: " + path); - } - } - - @Override - public void pause() { - mMtpContext.pause(); - } - - @Override - public void resume() { - mMtpContext.resume(); - } - - public static boolean isMtpPath(String s) { - return s != null && Path.fromString(s).getPrefix().equals("mtp"); - } -} |