lines-num-new">
- }
- },1000,10);
- LogHelper.d("czy","startCapture ,schedule fetchPhotoTask ");
- }
-
- private void fetchPhotoTask(){
- if(!isWorking){
- return;
- }
+ Intent intent = new Intent(App.getAppContext(), CameraService.class);
+ intent.putExtra(EXTRA_CMD,CMD_START_CAPTURE_PHOTO);
+ App.getAppContext().startService(intent);
- if(!isLastQueryReturned){
- LogHelper.d("czy","fetchPhotoTask last query not finished,return ");
- return;
- }
-
- isLastQueryReturned = false;
- String eventMsg = CameraJNIInterface.getInstance().java_mygpcamerawaitforevent(sessionWorkingDirPath);
- listener.onCameraStatusChanged("mygpcamerawaitforevent return "+eventMsg);
- LogHelper.d("czy","mygpcamerawaitforevent return result = "+eventMsg);
- if(eventMsg!=null && eventMsg.length()>0){
- if(MSG_TYPE_NOT_INIT.equalsIgnoreCase(eventMsg)||MSG_TYPE_CAMERA_ERROR.equalsIgnoreCase(eventMsg)){
- endSession();
- startSession();
- }else if(MSG_TYPE_TIME_OUT.equalsIgnoreCase(eventMsg)){
-
- }else{
- String sub = eventMsg.substring(0,1);
- if(TextUtils.isDigitsOnly(sub)){
- LogHelper.d(TAG,"fetchPhotoTask new photo found");
- PhotoBean bean = new PhotoBean();
- bean.photoName = eventMsg;
- bean.photoId = Long.parseLong(eventMsg.substring(0,eventMsg.lastIndexOf(".")));
- bean.captureTime = bean.photoId;
- bean.isRawPhoto = true;
- bean.uploadStatus = PhotoBean.UploadStatus.STATUS_NO_BEGIN;
- bean.sessionId = sessionBean.sessionId;
- bean.lensmanId = sessionBean.lensmanId;
- bean.sessionSeq = sessionBean.sessionSeq;
- bean.sessionDate = sessionBean.sessionDate;
- bean.sessionCreateTime = sessionBean.createTime;
- bean.photoPath = sessionWorkingDirPath+File.separator+eventMsg;
- listener.onSessionPhotoCaptured(bean);
- }
- }
- }
-
- isLastQueryReturned = true;
}
-
public void endSession(){
- isWorking = false;
- if(photoCaptureTimer !=null){
- photoCaptureTimer.cancel();
- photoCaptureTimer = null;
- }
- int result = CameraJNIInterface.getInstance().java_mygpcameraexit();
- listener.onCameraStatusChanged("mygpcameraexit return "+result);
- listener.onSessionEnd(sessionBean.sessionId);
- if(cameraInitHandler!=null){
- cameraInitHandler.removeCallbacksAndMessages(null);
- cameraInitHandler = null;
+ if(mHandler!=null){
+ mHandler.removeCallbacksAndMessages(null);
+ mHandler = null;
}
+ Intent intent = new Intent(App.getAppContext(), CameraService.class);
+ intent.putExtra(EXTRA_CMD,CMD_EXIT_CAMERA_CONNECTION);
+ App.getAppContext().startService(intent);
+ App.getAppContext().unregisterReceiver(cameraReceiver);
LogHelper.d("czy","endSession ");
+ listener.onSessionEnd(sessionBean.sessionId);
}
public void deletePhoto(PhotoBean photoBean){
@@ -172,4 +102,41 @@ public class SessionInteractor implements Callback{
new File(photoBean.photoPath).delete();
}
+ private BroadcastReceiver cameraReceiver = new BroadcastReceiver() {
+ @Override
+ public void onReceive(Context context, Intent intent) {
+ if(!ACTION_CAMERA_SERVICE_STATUS_CHANGE.equals(intent.getAction())){
+ return;
+ }
+ int status = intent.getIntExtra(EXTRA_STATUS_PART,0);
+ if(status==MSG_CAMERA_INIT_SUCCESS){
+ listener.onSessionStartSuccess(sessionBean.sessionId);
+ listener.onCameraStatusChanged("camera init success");
+ startCapture();
+ }else if(status == MSG_CAMERA_CONN_ERROR){
+ listener.onCameraStatusChanged("camera connection error");
+ listener.onSessionStartError(sessionBean.sessionId);
+ mHandler.sendEmptyMessageDelayed(MSG_RETRY_INIT_CAMERA,3000);
+ }else if(status == MSG_CAMERA_NEW_PHOTO_FOUND){
+ String eventMsg = intent.getStringExtra(EXTRA_DATA_PART);
+ LogHelper.d(TAG,"fetchPhotoTask new photo found");
+ listener.onCameraStatusChanged("camera new Photo found "+eventMsg);
+ PhotoBean bean = new PhotoBean();
+ bean.photoName = eventMsg;
+ bean.photoId = Long.parseLong(eventMsg.substring(0,eventMsg.lastIndexOf(".")));
+ bean.captureTime = bean.photoId;
+ bean.isRawPhoto = true;
+ bean.uploadStatus = PhotoBean.UploadStatus.STATUS_NO_BEGIN;
+ bean.sessionId = sessionBean.sessionId;
+ bean.lensmanId = sessionBean.lensmanId;
+ bean.sessionSeq = sessionBean.sessionSeq;
+ bean.sessionDate = sessionBean.sessionDate;
+ bean.sessionCreateTime = sessionBean.createTime;
+ bean.photoPath = sessionWorkingDirPath+File.separator+eventMsg;
+ listener.onSessionPhotoCaptured(bean);
+ }
+
+ }
+ };
+
}