@@ -3,10 +3,12 @@ package ai.pai.ptp.test;  | 
            ||
| 3 | 3 | 
                import android.app.Activity;  | 
            
| 4 | 4 | 
                import android.content.Intent;  | 
            
| 5 | 5 | 
                import android.graphics.Bitmap;  | 
            
| 6 | 
                +import android.media.Image;  | 
            |
| 6 | 7 | 
                import android.os.Bundle;  | 
            
| 7 | 8 | 
                import android.os.Handler;  | 
            
| 8 | 9 | 
                import android.os.Message;  | 
            
| 9 | 10 | 
                import android.view.View;  | 
            
| 11 | 
                +import android.widget.AdapterView;  | 
            |
| 10 | 12 | 
                import android.widget.GridView;  | 
            
| 11 | 13 | 
                import android.widget.ImageView;  | 
            
| 12 | 14 | 
                import android.widget.ListView;  | 
            
                @@ -22,11 +24,12 @@ import java.util.ArrayList;  | 
            ||
| 22 | 24 | 
                import ai.pai.ptp.R;  | 
            
| 23 | 25 | 
                 | 
            
| 24 | 26 | 
                 | 
            
| 25 | 
                -public class MyTestActivity extends Activity implements Handler.Callback, Camera.CameraListener, Camera.StorageInfoListener, Camera.RetrieveImageInfoListener {
               | 
            |
| 27 | 
                +public class MyTestActivity extends Activity implements Handler.Callback, Camera.CameraListener, Camera.StorageInfoListener, Camera.RetrieveImageInfoListener  {
               | 
            |
| 26 | 28 | 
                 | 
            
| 27 | 29 | 
                private ImageView photoIv;  | 
            
| 28 | 30 | 
                private TestLogListAdapter adapter;  | 
            
| 29 | 31 | 
                private GridView photoGridView;  | 
            
| 32 | 
                + private ImageView photo_detail;  | 
            |
| 30 | 33 | 
                private TestPhotoGridAdapter photoGridAdapter;  | 
            
| 31 | 34 | 
                private PtpService ptp;  | 
            
| 32 | 35 | 
                private Camera camera;  | 
            
                @@ -55,6 +58,8 @@ public class MyTestActivity extends Activity implements Handler.Callback, Camera  | 
            ||
| 55 | 58 | 
                photoGridAdapter = new TestPhotoGridAdapter(this, photoGridView);  | 
            
| 56 | 59 | 
                photoGridView.setAdapter(photoGridAdapter);  | 
            
| 57 | 60 | 
                 | 
            
| 61 | 
                + photo_detail = (ImageView) findViewById(R.id.photo_detail);  | 
            |
| 62 | 
                +  | 
            |
| 58 | 63 | 
                         findViewById(R.id.btn_get_devece_info).setOnClickListener(new View.OnClickListener() {
               | 
            
| 59 | 64 | 
                @Override  | 
            
| 60 | 65 | 
                             public void onClick(View v) {
               | 
            
                @@ -97,6 +102,21 @@ public class MyTestActivity extends Activity implements Handler.Callback, Camera  | 
            ||
| 97 | 102 | 
                }  | 
            
| 98 | 103 | 
                }  | 
            
| 99 | 104 | 
                });  | 
            
| 105 | 
                +  | 
            |
| 106 | 
                +        ((GridView) findViewById(R.id.gridview_photos)).setOnItemClickListener(new AdapterView.OnItemClickListener() {
               | 
            |
| 107 | 
                + @Override  | 
            |
| 108 | 
                +            public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
               | 
            |
| 109 | 
                + photo_detail.setVisibility(View.VISIBLE);  | 
            |
| 110 | 
                + photo_detail.setImageBitmap(((Photo) photoGridAdapter.getItem(i)).origin);  | 
            |
| 111 | 
                + }  | 
            |
| 112 | 
                + });  | 
            |
| 113 | 
                +  | 
            |
| 114 | 
                +        findViewById(R.id.photo_detail).setOnClickListener(new View.OnClickListener() {
               | 
            |
| 115 | 
                + @Override  | 
            |
| 116 | 
                +            public void onClick(View view) {
               | 
            |
| 117 | 
                + photo_detail.setVisibility(View.INVISIBLE);  | 
            |
| 118 | 
                + }  | 
            |
| 119 | 
                + });  | 
            |
| 100 | 120 | 
                }  | 
            
| 101 | 121 | 
                 | 
            
| 102 | 122 | 
                @Override  | 
            
                @@ -133,7 +153,7 @@ public class MyTestActivity extends Activity implements Handler.Callback, Camera  | 
            ||
| 133 | 153 | 
                             if (camera != null) {
               | 
            
| 134 | 154 | 
                mainHandler.removeMessages(MSG_CHECK_STORAGE);  | 
            
| 135 | 155 | 
                camera.retrieveImageHandles(MyTestActivity.this, 0xFFFFFFFF, PtpConstants.ObjectFormat.EXIF_JPEG);  | 
            
| 136 | 
                - mainHandler.sendEmptyMessageDelayed(MSG_CHECK_STORAGE, 1000);  | 
            |
| 156 | 
                + mainHandler.sendEmptyMessageDelayed(MSG_CHECK_STORAGE, 100000);  | 
            |
| 137 | 157 | 
                }  | 
            
| 138 | 158 | 
                }  | 
            
| 139 | 159 | 
                return false;  | 
            
                @@ -237,16 +257,15 @@ public class MyTestActivity extends Activity implements Handler.Callback, Camera  | 
            ||
| 237 | 257 | 
                }  | 
            
| 238 | 258 | 
                 | 
            
| 239 | 259 | 
                @Override  | 
            
| 240 | 
                -    public void onObjectAdded(int handle, int format) {
               | 
            |
| 241 | 
                -        adapter.addInfo("相机系统发现新文件 ,文件句柄 =" + handle + " format = " + format);
               | 
            |
| 260 | 
                +    public void onObjectAdded(int handle) {
               | 
            |
| 261 | 
                +        adapter.addInfo("相机系统发现新文件 ,文件句柄 =" + handle);
               | 
            |
| 242 | 262 | 
                         if (camera == null) {
               | 
            
| 243 | 263 | 
                return;  | 
            
| 244 | 264 | 
                }  | 
            
| 245 | 
                -        if (format == PtpConstants.ObjectFormat.EXIF_JPEG) {
               | 
            |
| 246 | 
                - camera.retrievePicture(handle);  | 
            |
| 247 | 
                - }  | 
            |
| 265 | 
                + camera.retrievePicture(handle);  | 
            |
| 248 | 266 | 
                }  | 
            
| 249 | 267 | 
                 | 
            
| 268 | 
                +  | 
            |
| 250 | 269 | 
                @Override  | 
            
| 251 | 270 | 
                     public void onLogMessage(String msg) {
               | 
            
| 252 | 271 | 
                adapter.addInfo(msg);  | 
            
                @@ -314,6 +333,7 @@ public class MyTestActivity extends Activity implements Handler.Callback, Camera  | 
            ||
| 314 | 333 | 
                });  | 
            
| 315 | 334 | 
                }  | 
            
| 316 | 335 | 
                 | 
            
| 336 | 
                +  | 
            |
| 317 | 337 | 
                     public void retrieveImageInfo(final int handle) {
               | 
            
| 318 | 338 | 
                         mainHandler.post(new Runnable() {
               | 
            
| 319 | 339 | 
                @Override  | 
            
                @@ -3,6 +3,7 @@ package ai.pai.ptp.test;  | 
            ||
| 3 | 3 | 
                import android.view.LayoutInflater;  | 
            
| 4 | 4 | 
                import android.view.View;  | 
            
| 5 | 5 | 
                import android.view.ViewGroup;  | 
            
| 6 | 
                +import android.widget.AdapterView;  | 
            |
| 6 | 7 | 
                import android.widget.BaseAdapter;  | 
            
| 7 | 8 | 
                import android.widget.GridView;  | 
            
| 8 | 9 | 
                import android.widget.ImageView;  | 
            
                @@ -26,6 +27,13 @@ public class TestPhotoGridAdapter extends BaseAdapter {
               | 
            ||
| 26 | 27 | 
                inflater = LayoutInflater.from(context);  | 
            
| 27 | 28 | 
                int screenW = context.getResources().getDisplayMetrics().widthPixels;  | 
            
| 28 | 29 | 
                height = (int) (screenW - 4 * 3 * context.getResources().getDisplayMetrics().density) / 3;  | 
            
| 30 | 
                +  | 
            |
| 31 | 
                +        gridView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
               | 
            |
| 32 | 
                + @Override  | 
            |
| 33 | 
                +            public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
               | 
            |
| 34 | 
                +  | 
            |
| 35 | 
                + }  | 
            |
| 36 | 
                + });  | 
            |
| 29 | 37 | 
                }  | 
            
| 30 | 38 | 
                 | 
            
| 31 | 39 | 
                @Override  | 
            
                @@ -88,7 +88,7 @@ public interface Camera {
               | 
            ||
| 88 | 88 | 
                 | 
            
| 89 | 89 | 
                void onFocusPointsChanged();  | 
            
| 90 | 90 | 
                 | 
            
| 91 | 
                - void onObjectAdded(int handle, int format);  | 
            |
| 91 | 
                + void onObjectAdded(int handle);  | 
            |
| 92 | 92 | 
                 | 
            
| 93 | 93 | 
                void onLogMessage(String msg);  | 
            
| 94 | 94 | 
                }  | 
            
                @@ -66,7 +66,7 @@ public class EosCamera extends PtpCamera {
               | 
            ||
| 66 | 66 | 
                }  | 
            
| 67 | 67 | 
                 | 
            
| 68 | 68 | 
                     public void onEventDirItemCreated(int objectHandle, int storageId, int objectFormat, String filename) {
               | 
            
| 69 | 
                - onEventObjectAdded(objectHandle, objectFormat);  | 
            |
| 69 | 
                + onEventObjectAdded(objectHandle);  | 
            |
| 70 | 70 | 
                }  | 
            
| 71 | 71 | 
                 | 
            
| 72 | 72 | 
                @Override  | 
            
                @@ -24,6 +24,7 @@ import com.remoteyourcam.usb.ptp.PtpConstants.Operation;  | 
            ||
| 24 | 24 | 
                import com.remoteyourcam.usb.ptp.commands.GetDevicePropDescCommand;  | 
            
| 25 | 25 | 
                import com.remoteyourcam.usb.ptp.commands.InitiateCaptureCommand;  | 
            
| 26 | 26 | 
                import com.remoteyourcam.usb.ptp.commands.RetrieveAddedObjectInfoAction;  | 
            
| 27 | 
                +import com.remoteyourcam.usb.ptp.commands.RetrievePictureAction;  | 
            |
| 27 | 28 | 
                import com.remoteyourcam.usb.ptp.commands.SimpleCommand;  | 
            
| 28 | 29 | 
                import com.remoteyourcam.usb.ptp.commands.nikon.NikonAfDriveCommand;  | 
            
| 29 | 30 | 
                import com.remoteyourcam.usb.ptp.commands.nikon.NikonCloseSessionAction;  | 
            
                @@ -168,6 +169,12 @@ public class NikonCamera extends PtpCamera {
               | 
            ||
| 168 | 169 | 
                this.vendorPropCodes = vendorPropCodes;  | 
            
| 169 | 170 | 
                }  | 
            
| 170 | 171 | 
                 | 
            
| 172 | 
                + @Override  | 
            |
| 173 | 
                +    public void retrievePicture(int objectHandle) {
               | 
            |
| 174 | 
                + queue.add(new RetrievePictureAction(this, objectHandle, pictureSampleSize));  | 
            |
| 175 | 
                + queue.add(new SimpleCommand(this, PtpConstants.Operation.NikonDeleteImagesInSdram, objectHandle));  | 
            |
| 176 | 
                + }  | 
            |
| 177 | 
                +  | 
            |
| 171 | 178 | 
                     public void onEventObjectAdded(int objectHandle) {
               | 
            
| 172 | 179 | 
                queue.add(new RetrieveAddedObjectInfoAction(this, objectHandle));  | 
            
| 173 | 180 | 
                }  | 
            
                @@ -34,6 +34,7 @@ import com.remoteyourcam.usb.ptp.commands.RetrieveImageAction;  | 
            ||
| 34 | 34 | 
                import com.remoteyourcam.usb.ptp.commands.RetrieveImageInfoAction;  | 
            
| 35 | 35 | 
                import com.remoteyourcam.usb.ptp.commands.RetrievePictureAction;  | 
            
| 36 | 36 | 
                import com.remoteyourcam.usb.ptp.commands.SetDevicePropValueCommand;  | 
            
| 37 | 
                +import com.remoteyourcam.usb.ptp.commands.SimpleCommand;  | 
            |
| 37 | 38 | 
                import com.remoteyourcam.usb.ptp.model.DeviceInfo;  | 
            
| 38 | 39 | 
                import com.remoteyourcam.usb.ptp.model.DevicePropDesc;  | 
            
| 39 | 40 | 
                import com.remoteyourcam.usb.ptp.model.LiveViewData;  | 
            
                @@ -110,7 +111,7 @@ public abstract class PtpCamera implements Camera {
               | 
            ||
| 110 | 111 | 
                protected final int productId;  | 
            
| 111 | 112 | 
                 | 
            
| 112 | 113 | 
                private WorkerListener workerListener;  | 
            
| 113 | 
                - private int pictureSampleSize;  | 
            |
| 114 | 
                + protected int pictureSampleSize;  | 
            |
| 114 | 115 | 
                 | 
            
| 115 | 116 | 
                     public PtpCamera(PtpUsbConnection connection, CameraListener listener, WorkerListener workerListener) {
               | 
            
| 116 | 117 | 
                this.connection = connection;  | 
            
                @@ -376,12 +377,12 @@ public abstract class PtpCamera implements Camera {
               | 
            ||
| 376 | 377 | 
                }  | 
            
| 377 | 378 | 
                }  | 
            
| 378 | 379 | 
                 | 
            
| 379 | 
                -    public void onEventObjectAdded(final int handle, final int format) {
               | 
            |
| 380 | 
                +    public void onEventObjectAdded(final int handle) {
               | 
            |
| 380 | 381 | 
                         handler.post(new Runnable() {
               | 
            
| 381 | 382 | 
                @Override  | 
            
| 382 | 383 | 
                             public void run() {
               | 
            
| 383 | 384 | 
                                 if (listener != null) {
               | 
            
| 384 | 
                - listener.onObjectAdded(handle, format);  | 
            |
| 385 | 
                + listener.onObjectAdded(handle);  | 
            |
| 385 | 386 | 
                }  | 
            
| 386 | 387 | 
                }  | 
            
| 387 | 388 | 
                });  | 
            
                @@ -883,5 +884,4 @@ public abstract class PtpCamera implements Camera {
               | 
            ||
| 883 | 884 | 
                     public void setCapturedPictureSampleSize(int sampleSize) {
               | 
            
| 884 | 885 | 
                this.pictureSampleSize = sampleSize;  | 
            
| 885 | 886 | 
                }  | 
            
| 886 | 
                -  | 
            |
| 887 | 887 | 
                }  | 
            
                @@ -119,6 +119,11 @@ public class PtpConstants {
               | 
            ||
| 119 | 119 | 
                public static final int NikonGetObjectPropDesc = 0x9802;  | 
            
| 120 | 120 | 
                public static final int NikonGetObjectPropValue = 0x9803;  | 
            
| 121 | 121 | 
                public static final int NikonGetObjectPropList = 0x9805;  | 
            
| 122 | 
                + public static final int NikonGetVendorStorageIDs = 0x9209;  | 
            |
| 123 | 
                + public static final int NIKONStartMovieRecInCard = 0x920a;  | 
            |
| 124 | 
                + public static final int NIKONEndMovieRec = 0x920b;  | 
            |
| 125 | 
                + public static final int NIKONTerminateCapture = 0x920c;  | 
            |
| 126 | 
                + public static final int NIKONGetPartialObjectHiSpeed = 0x920b;  | 
            |
| 122 | 127 | 
                 | 
            
| 123 | 128 | 
                // Canon EOS  | 
            
| 124 | 129 | 
                public static final int EosTakePicture = 0x910F;  | 
            
                @@ -156,9 +161,9 @@ public class PtpConstants {
               | 
            ||
| 156 | 161 | 
                public static final int CaptureComplete = 0x400D;  | 
            
| 157 | 162 | 
                 | 
            
| 158 | 163 | 
                // Nikon  | 
            
| 159 | 
                - public static final int NikonObjectAddedInSdram = 0xC101;  | 
            |
| 164 | 
                + public static final int NikonObjectAddedInSdram = 0xffffC101;  | 
            |
| 160 | 165 | 
                public static final int NikonCaptureCompleteRecInSdram = 0xC102;  | 
            
| 161 | 
                - public static final int NikonPreviewImageAdded = 0xC104;  | 
            |
| 166 | 
                + public static final int NikonPreviewImageAdded = 0xffffC104;  | 
            |
| 162 | 167 | 
                 | 
            
| 163 | 168 | 
                // Canon EOS  | 
            
| 164 | 169 | 
                public static final int EosObjectAdded = 0xC181; // ? dir item request transfer or dir item created  | 
            
                @@ -42,7 +42,7 @@ public class RetrieveAddedObjectInfoAction implements PtpAction {
               | 
            ||
| 42 | 42 | 
                return;  | 
            
| 43 | 43 | 
                }  | 
            
| 44 | 44 | 
                 | 
            
| 45 | 
                - camera.onEventObjectAdded(objectHandle, getInfo.getObjectInfo().objectFormat);  | 
            |
| 45 | 
                + camera.onEventObjectAdded(objectHandle);  | 
            |
| 46 | 46 | 
                }  | 
            
| 47 | 47 | 
                 | 
            
| 48 | 48 | 
                @Override  | 
            
                @@ -70,6 +70,11 @@ public class NikonEventCheckCommand extends NikonCommand {
               | 
            ||
| 70 | 70 | 
                case Event.CaptureComplete:  | 
            
| 71 | 71 | 
                camera.onEventCaptureComplete();  | 
            
| 72 | 72 | 
                break;  | 
            
| 73 | 
                + case Event.NikonObjectAddedInSdram:  | 
            |
| 74 | 
                + //libgphoto2 相关处理  | 
            |
| 75 | 
                +                if (eventParam == 0) { eventParam = 0xffff001; }
               | 
            |
| 76 | 
                + camera.onEventObjectAdded(eventParam);  | 
            |
| 77 | 
                + break;  | 
            |
| 73 | 78 | 
                }  | 
            
| 74 | 79 | 
                }  | 
            
| 75 | 80 | 
                }  | 
            
                @@ -1,7 +1,10 @@  | 
            ||
| 1 | 1 | 
                <?xml version="1.0" encoding="utf-8"?>  | 
            
| 2 | 2 | 
                <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"  | 
            
| 3 | 
                + xmlns:app="http://schemas.android.com/apk/res-auto"  | 
            |
| 4 | 
                + xmlns:tools="http://schemas.android.com/tools"  | 
            |
| 3 | 5 | 
                android:layout_width="match_parent"  | 
            
| 4 | 6 | 
                android:layout_height="match_parent"  | 
            
| 7 | 
                + android:background="#fff"  | 
            |
| 5 | 8 | 
                android:orientation="vertical">  | 
            
| 6 | 9 | 
                 | 
            
| 7 | 10 | 
                <Button  | 
            
                @@ -53,15 +56,22 @@  | 
            ||
| 53 | 56 | 
                android:horizontalSpacing="4dp"  | 
            
| 54 | 57 | 
                android:listSelector="@android:color/transparent"  | 
            
| 55 | 58 | 
                android:numColumns="3"  | 
            
| 56 | 
                - android:verticalSpacing="4dp"  | 
            |
| 57 | 
                - />  | 
            |
| 59 | 
                + android:verticalSpacing="4dp" />  | 
            |
| 58 | 60 | 
                 | 
            
| 59 | 61 | 
                <ImageView  | 
            
| 60 | 62 | 
                android:id="@+id/iv_latest_photo"  | 
            
| 61 | 63 | 
                android:layout_width="match_parent"  | 
            
| 62 | 64 | 
                android:layout_height="match_parent"  | 
            
| 63 | 
                - android:visibility="gone"  | 
            |
| 64 | 
                - android:scaleType="fitCenter" />  | 
            |
| 65 | 
                + android:scaleType="fitCenter"  | 
            |
| 66 | 
                + android:visibility="gone" />  | 
            |
| 67 | 
                +  | 
            |
| 68 | 
                + <ImageView  | 
            |
| 69 | 
                + android:id="@+id/photo_detail"  | 
            |
| 70 | 
                + android:layout_width="wrap_content"  | 
            |
| 71 | 
                + android:layout_height="wrap_content"  | 
            |
| 72 | 
                + android:visibility="invisible"  | 
            |
| 73 | 
                + tools:src="@tools:sample/backgrounds/scenic" />  | 
            |
| 74 | 
                +  | 
            |
| 65 | 75 | 
                </RelativeLayout>  | 
            
| 66 | 76 | 
                 | 
            
| 67 | 77 | 
                </LinearLayout>  |