session无论成功与否都开始拍摄

chengzhenyu 8 ans auparavant
Parent
Commettre
064f6727cf

+ 2 - 0
app/src/main/java/ai/pai/lensman/bean/PhotoBean.java

@@ -19,6 +19,8 @@ public class PhotoBean implements Serializable{
19 19
 
20 20
     public String sessionId;
21 21
 
22
+    public long sessionCreateTime; //unit :second
23
+
22 24
     public String lensmanId;
23 25
 
24 26
     public long captureTime;

+ 2 - 0
app/src/main/java/ai/pai/lensman/bean/SessionBean.java

@@ -11,6 +11,7 @@ public class SessionBean implements Serializable{
11 11
     public long sessionDate;
12 12
     public String lensmanId;
13 13
     public String sessionId;
14
+    public long createTime;
14 15
     public ArrayList<PhotoBean> sessionPhotos;
15 16
 
16 17
     @Override
@@ -20,6 +21,7 @@ public class SessionBean implements Serializable{
20 21
                 ", sessionDate=" + sessionDate +
21 22
                 ", lensmanId='" + lensmanId + '\'' +
22 23
                 ", sessionId='" + sessionId + '\'' +
24
+                ", createTime=" + createTime +
23 25
                 '}';
24 26
     }
25 27
 }

+ 9 - 1
app/src/main/java/ai/pai/lensman/db/DBHelper.java

@@ -7,7 +7,7 @@ import android.database.sqlite.SQLiteOpenHelper;
7 7
 public class DBHelper extends SQLiteOpenHelper{
8 8
 
9 9
     private static final String DB_NAME = "paiai";
10
-    private static final int DB_VERSION = 2;
10
+    private static final int DB_VERSION = 3;
11 11
     private static DBHelper instance;
12 12
 
13 13
     public static final String PHOTO_INFO_TABLE = "photo_info_table";
@@ -24,6 +24,7 @@ public class DBHelper extends SQLiteOpenHelper{
24 24
         String IS_RAW_PHOTO= "is_raw_photo";
25 25
         String UPLOADED_STATUS = "upload_status";
26 26
         String GROUP_ID = "group_id";
27
+        String SESSION_CREATE_TIME = "session_create_time";
27 28
 
28 29
     }
29 30
 
@@ -48,6 +49,8 @@ public class DBHelper extends SQLiteOpenHelper{
48 49
         switch (oldVersion){
49 50
             case 1:
50 51
                 upgradeToVersion2(db);
52
+            case 2:
53
+                upgradeToVersion3(db);
51 54
                 break;
52 55
             default:
53 56
                 dropAndRecreateTables(db);
@@ -59,6 +62,10 @@ public class DBHelper extends SQLiteOpenHelper{
59 62
         db.execSQL("Alter table "+ PHOTO_INFO_TABLE+" add column "+PHOTO_INFO_COLUMNS.GROUP_ID +" VARCHAR");
60 63
     }
61 64
 
65
+    private void upgradeToVersion3(SQLiteDatabase db){
66
+        db.execSQL("Alter table "+ PHOTO_INFO_TABLE+" add column "+PHOTO_INFO_COLUMNS.SESSION_CREATE_TIME +" LONG");
67
+    }
68
+
62 69
     private void dropAndRecreateTables(SQLiteDatabase db){
63 70
         db.execSQL("DROP TABLE IF EXISTS " + PHOTO_INFO_TABLE);
64 71
         createTables(db);
@@ -81,6 +88,7 @@ public class DBHelper extends SQLiteOpenHelper{
81 88
         sql.append(PHOTO_INFO_COLUMNS.IS_RAW_PHOTO).append(" INTEGER, ");
82 89
         sql.append(PHOTO_INFO_COLUMNS.SESSION_SEQ).append(" INTEGER, ");
83 90
         sql.append(PHOTO_INFO_COLUMNS.SESSION_DATE).append(" LONG, ");
91
+        sql.append(PHOTO_INFO_COLUMNS.SESSION_CREATE_TIME).append(" LONG, ");
84 92
         sql.append(PHOTO_INFO_COLUMNS.UPLOADED_STATUS).append(" INTEGER, ");
85 93
         sql.append(PHOTO_INFO_COLUMNS.CAPTURE_TIME).append(" LONG ");
86 94
         sql.append(")");

+ 3 - 0
app/src/main/java/ai/pai/lensman/db/DBService.java

@@ -79,6 +79,7 @@ public class DBService {
79 79
         item.photoPath = c.getString(c.getColumnIndex(DBHelper.PHOTO_INFO_COLUMNS.PHOTO_PATH));
80 80
         item.sessionDate = c.getLong(c.getColumnIndex(DBHelper.PHOTO_INFO_COLUMNS.SESSION_DATE));
81 81
         item.sessionSeq = c.getInt(c.getColumnIndex(DBHelper.PHOTO_INFO_COLUMNS.SESSION_SEQ));
82
+        item.sessionCreateTime = c.getLong(c.getColumnIndex(DBHelper.PHOTO_INFO_COLUMNS.SESSION_CREATE_TIME));
82 83
         return item;
83 84
     }
84 85
 
@@ -95,6 +96,7 @@ public class DBService {
95 96
         cv.put(DBHelper.PHOTO_INFO_COLUMNS.UPLOADED_STATUS,item.uploadStatus);
96 97
         cv.put(DBHelper.PHOTO_INFO_COLUMNS.SESSION_DATE,item.sessionDate);
97 98
         cv.put(DBHelper.PHOTO_INFO_COLUMNS.SESSION_SEQ,item.sessionSeq);
99
+        cv.put(DBHelper.PHOTO_INFO_COLUMNS.SESSION_CREATE_TIME,item.sessionCreateTime);
98 100
         return cv;
99 101
     }
100 102
 
@@ -168,6 +170,7 @@ public class DBService {
168 170
                         sessionBean.sessionSeq = photoBean.sessionSeq;
169 171
                         sessionBean.sessionId = photoBean.sessionId;
170 172
                         sessionBean.lensmanId = photoBean.lensmanId;
173
+                        sessionBean.createTime = photoBean.sessionCreateTime;
171 174
                         ArrayList<PhotoBean> photoList = new ArrayList<>();
172 175
                         sessionBean.sessionPhotos = photoList;
173 176
                         sessionBeanArrayList.add(sessionBean);

+ 2 - 1
app/src/main/java/ai/pai/lensman/main/MainPresenter.java

@@ -143,7 +143,8 @@ class MainPresenter implements MainContract.Presenter,SyncTimeInteractor.SyncTim
143 143
         sessionBean.lensmanId = lensmanId;
144 144
         sessionBean.sessionDate=getSessionDateInLongFormat();
145 145
         sessionBean.sessionSeq = sessionSeq+1;
146
-        sessionBean.sessionId = lensmanId+ new Md5FileNameGenerator().generate(String.valueOf(System.currentTimeMillis()));
146
+        sessionBean.createTime = System.currentTimeMillis()/1000;
147
+        sessionBean.sessionId = lensmanId+ "_"+new Md5FileNameGenerator().generate(String.valueOf(sessionBean.createTime));
147 148
         LogHelper.d("czy","createNewSession = "+sessionBean.sessionId);
148 149
         sessionList.add(sessionBean);
149 150
         return sessionBean;

+ 7 - 1
app/src/main/java/ai/pai/lensman/session/SessionInteractor.java

@@ -72,7 +72,7 @@ public class SessionInteractor {
72 72
         }
73 73
         HashMap<String,String> params = new HashMap<>();
74 74
         params.put("lensman",sessionBean.lensmanId);
75
-        randomSessionId = sessionBean.sessionId+"_"+(new Random().nextInt(9999)+10000);
75
+        randomSessionId = sessionBean.lensmanId+"_"+sessionBean.createTime+"_"+(new Random().nextInt(9999)+10000);
76 76
         params.put("session",randomSessionId);
77 77
         sessionStartTask = new HttpPostTask(params){
78 78
             @Override
@@ -95,6 +95,10 @@ public class SessionInteractor {
95 95
                 LogHelper.d(TAG,"sessionStartTask onPostFail sessionId = "+randomSessionId);
96 96
                 super.onPostFail();
97 97
                 listener.onSessionStartError(sessionBean.sessionId);
98
+                //即使session创建不成功,也继续工作,照片存lost目录
99
+                isWorking = true;
100
+                LogHelper.d(TAG,"即使session创建不成功,也继续工作,照片存lost目录 sessionStartTask onPostSuccess sessionId = "+randomSessionId + "and startCapture");
101
+                startCapture();
98 102
             }
99 103
 
100 104
             @Override
@@ -155,6 +159,7 @@ public class SessionInteractor {
155 159
             bean.lensmanId = sessionBean.lensmanId;
156 160
             bean.sessionSeq = sessionBean.sessionSeq;
157 161
             bean.sessionDate = sessionBean.sessionDate;
162
+            bean.sessionCreateTime = sessionBean.createTime;
158 163
             new SavePhotoTask(bean).executeOnExecutor(ThreadExecutor.getInstance().getExecutor(),bean);
159 164
             return;
160 165
         }
@@ -187,6 +192,7 @@ public class SessionInteractor {
187 192
                                 bean.lensmanId = sessionBean.lensmanId;
188 193
                                 bean.sessionSeq = sessionBean.sessionSeq;
189 194
                                 bean.sessionDate = sessionBean.sessionDate;
195
+                                bean.sessionCreateTime = sessionBean.createTime;
190 196
                                 if(bean.photoId>maxId){
191 197
                                     maxId = bean.photoId;
192 198
                                 }