@@ -1,10 +1,18 @@  | 
            ||
| 1 | 1 | 
                package ai.pai.lensman.dslr;  | 
            
| 2 | 2 | 
                 | 
            
| 3 | 
                +import java.util.Random;  | 
            |
| 4 | 
                +  | 
            |
| 5 | 
                +import ai.pai.lensman.BuildConfig;  | 
            |
| 6 | 
                +  | 
            |
| 3 | 7 | 
                 public class CameraJNIInterface {
               | 
            
| 4 | 8 | 
                 | 
            
| 5 | 9 | 
                 | 
            
| 6 | 10 | 
                     static {
               | 
            
| 7 | 
                -        System.loadLibrary("hello_jni");
               | 
            |
| 11 | 
                +        try {
               | 
            |
| 12 | 
                +            System.loadLibrary("hello_jni");
               | 
            |
| 13 | 
                +        }catch (Throwable e){
               | 
            |
| 14 | 
                + e.printStackTrace();  | 
            |
| 15 | 
                + }  | 
            |
| 8 | 16 | 
                }  | 
            
| 9 | 17 | 
                 | 
            
| 10 | 18 | 
                private static CameraJNIInterface instance;  | 
            
                @@ -25,4 +33,42 @@ public class CameraJNIInterface {
               | 
            ||
| 25 | 33 | 
                public native String mygpcameragetsummary();  | 
            
| 26 | 34 | 
                public native String mygpcamerawaitforevent(String foldr_path);  | 
            
| 27 | 35 | 
                 | 
            
| 36 | 
                +    public int java_mygpcamerainit(){
               | 
            |
| 37 | 
                +        try {
               | 
            |
| 38 | 
                + return mygpcamerainit();  | 
            |
| 39 | 
                +        }catch (Throwable t){
               | 
            |
| 40 | 
                + t.printStackTrace();  | 
            |
| 41 | 
                + }  | 
            |
| 42 | 
                +        if(BuildConfig.isTestMode){
               | 
            |
| 43 | 
                + return 0;  | 
            |
| 44 | 
                +        }else{
               | 
            |
| 45 | 
                + return -1;  | 
            |
| 46 | 
                + }  | 
            |
| 47 | 
                + }  | 
            |
| 48 | 
                +    public int java_mygpcameraexit(){
               | 
            |
| 49 | 
                +        try {
               | 
            |
| 50 | 
                + return mygpcameraexit();  | 
            |
| 51 | 
                +        }catch (Throwable t){
               | 
            |
| 52 | 
                + t.printStackTrace();  | 
            |
| 53 | 
                + }  | 
            |
| 54 | 
                +        if(BuildConfig.isTestMode){
               | 
            |
| 55 | 
                + return 0;  | 
            |
| 56 | 
                +        }else{
               | 
            |
| 57 | 
                + return -1;  | 
            |
| 58 | 
                + }  | 
            |
| 59 | 
                + }  | 
            |
| 60 | 
                +  | 
            |
| 61 | 
                +    public String java_mygpcamerawaitforevent(String folder_path){
               | 
            |
| 62 | 
                +        try{
               | 
            |
| 63 | 
                + return mygpcamerawaitforevent(folder_path);  | 
            |
| 64 | 
                +        }catch (Throwable t){
               | 
            |
| 65 | 
                + t.printStackTrace();  | 
            |
| 66 | 
                + }  | 
            |
| 67 | 
                +        if(BuildConfig.isTestMode){
               | 
            |
| 68 | 
                + return new Random().nextInt(100)%2==0 ?"1.jpg":"2.jpg";  | 
            |
| 69 | 
                +        }else{
               | 
            |
| 70 | 
                + return "init error";  | 
            |
| 71 | 
                + }  | 
            |
| 72 | 
                + }  | 
            |
| 73 | 
                +  | 
            |
| 28 | 74 | 
                }  | 
            
                @@ -14,14 +14,12 @@ import com.android.common.utils.DeviceUtils;  | 
            ||
| 14 | 14 | 
                import com.android.common.utils.LogHelper;  | 
            
| 15 | 15 | 
                import com.nostra13.universalimageloader.core.DisplayImageOptions;  | 
            
| 16 | 16 | 
                 | 
            
| 17 | 
                -import java.io.File;  | 
            |
| 18 | 17 | 
                import java.util.ArrayList;  | 
            
| 19 | 18 | 
                 | 
            
| 20 | 19 | 
                import ai.pai.lensman.R;  | 
            
| 21 | 20 | 
                import ai.pai.lensman.bean.PhotoBean;  | 
            
| 22 | 21 | 
                import ai.pai.lensman.bean.SessionBean;  | 
            
| 23 | 22 | 
                import ai.pai.lensman.session.SessionActivity;  | 
            
| 24 | 
                -import ai.pai.lensman.utils.Constants;  | 
            |
| 25 | 23 | 
                import ai.pai.lensman.utils.ImageLoaderUtils;  | 
            
| 26 | 24 | 
                import butterknife.BindView;  | 
            
| 27 | 25 | 
                import butterknife.ButterKnife;  | 
            
                @@ -85,8 +83,7 @@ public class SessionRecyclerAdapter extends RecyclerView.Adapter<SessionRecycler  | 
            ||
| 85 | 83 | 
                ArrayList<PhotoBean> photoList = item.sessionPhotos;  | 
            
| 86 | 84 | 
                 | 
            
| 87 | 85 | 
                         if(photoList!=null && photoList.size()>0){
               | 
            
| 88 | 
                - String path = Constants.APP_IMAGE_DIR + File.separator+item.sessionId+File.separator  | 
            |
| 89 | 
                - +Constants.THUMBNAIL_DIR_NAME+File.separator+item.sessionPhotos.get(0).photoName;  | 
            |
| 86 | 
                + String path = item.sessionPhotos.get(0).photoPath;  | 
            |
| 90 | 87 | 
                ImageLoaderUtils.displayLocalImage(path, holder.photo, options);  | 
            
| 91 | 88 | 
                int uploaded = 0;  | 
            
| 92 | 89 | 
                int error = 0;  | 
            
                @@ -18,6 +18,7 @@ import com.umeng.analytics.MobclickAgent;  | 
            ||
| 18 | 18 | 
                 | 
            
| 19 | 19 | 
                import java.io.File;  | 
            
| 20 | 20 | 
                 | 
            
| 21 | 
                +import ai.pai.lensman.BuildConfig;  | 
            |
| 21 | 22 | 
                import ai.pai.lensman.R;  | 
            
| 22 | 23 | 
                import ai.pai.lensman.activities.SessionQRCodeActivity;  | 
            
| 23 | 24 | 
                import ai.pai.lensman.base.BaseActivity;  | 
            
                @@ -76,6 +77,9 @@ public class SessionActivity extends BaseActivity implements SessionContract.Vie  | 
            ||
| 76 | 77 | 
                setContentView(R.layout.activity_session);  | 
            
| 77 | 78 | 
                unbinder = ButterKnife.bind(this);  | 
            
| 78 | 79 | 
                         sessionBean =(SessionBean)getIntent().getSerializableExtra("session");
               | 
            
| 80 | 
                +        if(BuildConfig.isTestMode){
               | 
            |
| 81 | 
                + sessionBean.sessionId="test";  | 
            |
| 82 | 
                + }  | 
            |
| 79 | 83 | 
                presenter = new SessionPresenter(sessionBean,this);  | 
            
| 80 | 84 | 
                 | 
            
| 81 | 85 | 
                titleTextView.setText(getString(R.string.scene)+sessionBean.sessionSeq);  | 
            
                @@ -134,23 +138,41 @@ public class SessionActivity extends BaseActivity implements SessionContract.Vie  | 
            ||
| 134 | 138 | 
                 | 
            
| 135 | 139 | 
                @Override  | 
            
| 136 | 140 | 
                     public synchronized void addNewPhoto(final PhotoBean bean) {
               | 
            
| 137 | 
                - LogHelper.d(TAG,"addNewPhoto to UI "+bean);  | 
            |
| 138 | 
                - adapter.addPhotoBean(bean);  | 
            |
| 139 | 
                - photosRecyclerView.smoothScrollToPosition(0);  | 
            |
| 141 | 
                +        photosRecyclerView.post(new Runnable() {
               | 
            |
| 142 | 
                + @Override  | 
            |
| 143 | 
                +            public void run() {
               | 
            |
| 144 | 
                + LogHelper.d(TAG,"addNewPhoto to UI "+bean);  | 
            |
| 145 | 
                + adapter.addPhotoBean(bean);  | 
            |
| 146 | 
                + photosRecyclerView.smoothScrollToPosition(0);  | 
            |
| 147 | 
                + }  | 
            |
| 148 | 
                + });  | 
            |
| 149 | 
                +  | 
            |
| 140 | 150 | 
                }  | 
            
| 141 | 151 | 
                 | 
            
| 142 | 152 | 
                @Override  | 
            
| 143 | 153 | 
                     public void showPhotoRecyclerView() {
               | 
            
| 144 | 
                - qrcodeScanBtn.setVisibility(View.GONE);  | 
            |
| 145 | 
                - noPhotoLayout.setVisibility(View.GONE);  | 
            |
| 146 | 
                - photosRecyclerView.setVisibility(View.VISIBLE);  | 
            |
| 154 | 
                +        photosRecyclerView.post(new Runnable() {
               | 
            |
| 155 | 
                + @Override  | 
            |
| 156 | 
                +            public void run() {
               | 
            |
| 157 | 
                + qrcodeScanBtn.setVisibility(View.GONE);  | 
            |
| 158 | 
                + noPhotoLayout.setVisibility(View.GONE);  | 
            |
| 159 | 
                + photosRecyclerView.setVisibility(View.VISIBLE);  | 
            |
| 160 | 
                + }  | 
            |
| 161 | 
                + });  | 
            |
| 162 | 
                +  | 
            |
| 147 | 163 | 
                }  | 
            
| 148 | 164 | 
                 | 
            
| 149 | 165 | 
                @Override  | 
            
| 150 | 166 | 
                     public void showEmptyView() {
               | 
            
| 151 | 
                - qrcodeScanBtn.setVisibility(View.VISIBLE);  | 
            |
| 152 | 
                - photosRecyclerView.setVisibility(View.GONE);  | 
            |
| 153 | 
                - noPhotoLayout.setVisibility(View.VISIBLE);  | 
            |
| 167 | 
                +        photosRecyclerView.post(new Runnable() {
               | 
            |
| 168 | 
                + @Override  | 
            |
| 169 | 
                +            public void run() {
               | 
            |
| 170 | 
                + qrcodeScanBtn.setVisibility(View.VISIBLE);  | 
            |
| 171 | 
                + photosRecyclerView.setVisibility(View.GONE);  | 
            |
| 172 | 
                + noPhotoLayout.setVisibility(View.VISIBLE);  | 
            |
| 173 | 
                + }  | 
            |
| 174 | 
                + });  | 
            |
| 175 | 
                +  | 
            |
| 154 | 176 | 
                }  | 
            
| 155 | 177 | 
                 | 
            
| 156 | 178 | 
                @Override  | 
            
                @@ -64,7 +64,7 @@ public class SessionInteractor implements Callback{
               | 
            ||
| 64 | 64 | 
                + File.separator + ai.pai.lensman.utils.Constants.ORIGIN_DIR_NAME;  | 
            
| 65 | 65 | 
                new File(sessionWorkingDirPath).mkdirs();  | 
            
| 66 | 66 | 
                 | 
            
| 67 | 
                - int result = CameraJNIInterface.getInstance().mygpcamerainit();  | 
            |
| 67 | 
                + int result = CameraJNIInterface.getInstance().java_mygpcamerainit();  | 
            |
| 68 | 68 | 
                         if(result>=0){
               | 
            
| 69 | 69 | 
                listener.onSessionStartSuccess(sessionBean.sessionId);  | 
            
| 70 | 70 | 
                isWorking = true;  | 
            
                @@ -106,7 +106,7 @@ public class SessionInteractor implements Callback{
               | 
            ||
| 106 | 106 | 
                }  | 
            
| 107 | 107 | 
                 | 
            
| 108 | 108 | 
                isLastQueryReturned = false;  | 
            
| 109 | 
                - String photoName = CameraJNIInterface.getInstance().mygpcamerawaitforevent(sessionWorkingDirPath);  | 
            |
| 109 | 
                + String photoName = CameraJNIInterface.getInstance().java_mygpcamerawaitforevent(sessionWorkingDirPath);  | 
            |
| 110 | 110 | 
                         if(photoName!=null && photoName.length()>0){
               | 
            
| 111 | 111 | 
                String sub = photoName.substring(0,1);  | 
            
| 112 | 112 | 
                             if(TextUtils.isDigitsOnly(sub)){
               | 
            
                @@ -122,7 +122,7 @@ public class SessionInteractor implements Callback{
               | 
            ||
| 122 | 122 | 
                bean.sessionSeq = sessionBean.sessionSeq;  | 
            
| 123 | 123 | 
                bean.sessionDate = sessionBean.sessionDate;  | 
            
| 124 | 124 | 
                bean.sessionCreateTime = sessionBean.createTime;  | 
            
| 125 | 
                - bean.photoPath = Constants.APP_IMAGE_DIR+File.separator+photoName;  | 
            |
| 125 | 
                + bean.photoPath = sessionWorkingDirPath+File.separator+photoName;  | 
            |
| 126 | 126 | 
                listener.onSessionPhotoCaptured(bean);  | 
            
| 127 | 127 | 
                }  | 
            
| 128 | 128 | 
                }  | 
            
                @@ -138,7 +138,7 @@ public class SessionInteractor implements Callback{
               | 
            ||
| 138 | 138 | 
                photoCaptureTimer.cancel();  | 
            
| 139 | 139 | 
                photoCaptureTimer = null;  | 
            
| 140 | 140 | 
                }  | 
            
| 141 | 
                - CameraJNIInterface.getInstance().mygpcameraexit();  | 
            |
| 141 | 
                + CameraJNIInterface.getInstance().java_mygpcameraexit();  | 
            |
| 142 | 142 | 
                listener.onSessionEnd(sessionBean.sessionId);  | 
            
| 143 | 143 | 
                         if(cameraInitHandler!=null){
               | 
            
| 144 | 144 | 
                cameraInitHandler.removeCallbacksAndMessages(null);  |