@@ -37,7 +37,7 @@ |
||
| 37 | 37 |
<ConfirmationsSetting value="0" id="Add" /> |
| 38 | 38 |
<ConfirmationsSetting value="0" id="Remove" /> |
| 39 | 39 |
</component> |
| 40 |
- <component name="ProjectRootManager" version="2" languageLevel="JDK_1_7" default="true" assert-keyword="true" jdk-15="true" project-jdk-name="1.8 (1)" project-jdk-type="JavaSDK"> |
|
| 40 |
+ <component name="ProjectRootManager" version="2" languageLevel="JDK_1_7" default="true" assert-keyword="true" jdk-15="true" project-jdk-name="JDK" project-jdk-type="JavaSDK"> |
|
| 41 | 41 |
<output url="file://$PROJECT_DIR$/build/classes" /> |
| 42 | 42 |
</component> |
| 43 | 43 |
<component name="ProjectType"> |
@@ -42,6 +42,9 @@ public class CameraService extends Service {
|
||
| 42 | 42 |
private static final String MSG_TYPE_NOT_INIT = "not init"; //需要初始化 |
| 43 | 43 |
private static final String MSG_TYPE_TIME_OUT = "time out"; //继续调用waitforevent |
| 44 | 44 |
|
| 45 |
+ private static final int MAX_NO_PHOTO_COUNT = 500; |
|
| 46 |
+ private int count = 0; |
|
| 47 |
+ |
|
| 45 | 48 |
@Override |
| 46 | 49 |
public IBinder onBind(Intent intent) {
|
| 47 | 50 |
return null; |
@@ -49,17 +52,22 @@ public class CameraService extends Service {
|
||
| 49 | 52 |
|
| 50 | 53 |
@Override |
| 51 | 54 |
public int onStartCommand(Intent intent, int flags, int startId) {
|
| 55 |
+ LogHelper.d("czy","CameraService onStartCommand ");
|
|
| 52 | 56 |
if(intent!=null&&intent.getIntExtra(EXTRA_CMD,0)>0){
|
| 53 | 57 |
int cmd = intent.getIntExtra(EXTRA_CMD,0); |
| 54 | 58 |
if(cmd == CMD_EXIT_CAMERA_CONNECTION){
|
| 59 |
+ LogHelper.d("czy","CameraService 收到停止进程任务");
|
|
| 55 | 60 |
stopCameraService(); |
| 56 | 61 |
}else if(cmd == CMD_INIT_CAMERA_CONNECTION){
|
| 57 | 62 |
if(!isInitExecuted){
|
| 63 |
+ LogHelper.d("czy","CameraService 收到重启进程任务");
|
|
| 64 |
+ count = 0; |
|
| 58 | 65 |
cameraInitTask = new CameraInitTask(); |
| 59 | 66 |
cameraInitTask.execute(); |
| 60 | 67 |
} |
| 61 | 68 |
}else if(cmd == CMD_START_CAPTURE_PHOTO){
|
| 62 | 69 |
if(isInitExecuted){
|
| 70 |
+ LogHelper.d("czy","CameraService 收到开始拍摄任务");
|
|
| 63 | 71 |
sessionWorkingDirPath = intent.getStringExtra(EXTRA_SESSION_DIR); |
| 64 | 72 |
if(!TextUtils.isEmpty(sessionWorkingDirPath)){
|
| 65 | 73 |
startCapture(); |
@@ -76,6 +84,8 @@ public class CameraService extends Service {
|
||
| 76 | 84 |
} |
| 77 | 85 |
|
| 78 | 86 |
private void stopCameraService(){
|
| 87 |
+ count = 0; |
|
| 88 |
+ LogHelper.d("czy","CameraService stopCameraService ");
|
|
| 79 | 89 |
if(cameraInitTask!=null){
|
| 80 | 90 |
cameraInitTask.cancel(); |
| 81 | 91 |
} |
@@ -99,6 +109,7 @@ public class CameraService extends Service {
|
||
| 99 | 109 |
|
| 100 | 110 |
@Override |
| 101 | 111 |
protected Integer doInBackground(Void... params) {
|
| 112 |
+ LogHelper.d("czy","CameraService CameraInitTask ");
|
|
| 102 | 113 |
isInitExecuted = true; |
| 103 | 114 |
return CameraJNIInterface.getInstance().java_mygpcamerainit(); |
| 104 | 115 |
} |
@@ -110,10 +121,12 @@ public class CameraService extends Service {
|
||
| 110 | 121 |
return; |
| 111 | 122 |
} |
| 112 | 123 |
if(result>=0){
|
| 124 |
+ LogHelper.d("czy","CameraService 相机初始化成功");
|
|
| 113 | 125 |
Bundle bundle = new Bundle(); |
| 114 | 126 |
bundle.putInt(EXTRA_STATUS_PART,MSG_CAMERA_INIT_SUCCESS); |
| 115 | 127 |
sendCameraIntent(bundle); |
| 116 | 128 |
}else{
|
| 129 |
+ LogHelper.d("czy","CameraService 相机初始化失败,杀掉进程");
|
|
| 117 | 130 |
Bundle bundle = new Bundle(); |
| 118 | 131 |
bundle.putInt(EXTRA_STATUS_PART, MSG_CAMERA_CONN_ERROR); |
| 119 | 132 |
sendCameraIntent(bundle); |
@@ -147,15 +160,17 @@ public class CameraService extends Service {
|
||
| 147 | 160 |
|
| 148 | 161 |
private void fetchPhotoTask(){
|
| 149 | 162 |
if(!isLastQueryReturned){
|
| 150 |
- LogHelper.d("czy","fetchPhotoTask last query not finished,return ");
|
|
| 163 |
+ LogHelper.d("czy","CameraService fetchPhotoTask last query not finished,return ");
|
|
| 151 | 164 |
return; |
| 152 | 165 |
} |
| 153 | 166 |
|
| 154 | 167 |
isLastQueryReturned = false; |
| 155 | 168 |
String eventMsg = CameraJNIInterface.getInstance().java_mygpcamerawaitforevent(sessionWorkingDirPath); |
| 156 |
- LogHelper.d("czy","mygpcamerawaitforevent return result = "+eventMsg);
|
|
| 169 |
+ LogHelper.d("czy","CameraService mygpcamerawaitforevent return result = "+eventMsg);
|
|
| 157 | 170 |
if(eventMsg!=null && eventMsg.length()>0){
|
| 171 |
+ count = 0; |
|
| 158 | 172 |
if(MSG_TYPE_NOT_INIT.equalsIgnoreCase(eventMsg)||MSG_TYPE_CAMERA_ERROR.equalsIgnoreCase(eventMsg)){
|
| 173 |
+ LogHelper.d("czy","CameraService fetchPhotoTask 相机连接错误,重新连接试试");
|
|
| 159 | 174 |
Bundle bundle = new Bundle(); |
| 160 | 175 |
bundle.putInt(EXTRA_STATUS_PART, MSG_CAMERA_CONN_ERROR); |
| 161 | 176 |
sendCameraIntent(bundle); |
@@ -165,13 +180,22 @@ public class CameraService extends Service {
|
||
| 165 | 180 |
}else{
|
| 166 | 181 |
String sub = eventMsg.substring(0,1); |
| 167 | 182 |
if(TextUtils.isDigitsOnly(sub)){
|
| 168 |
- LogHelper.d("czy","fetchPhotoTask new photo found");
|
|
| 183 |
+ LogHelper.d("czy","CameraService fetchPhotoTask new photo found");
|
|
| 169 | 184 |
Bundle bundle = new Bundle(); |
| 170 | 185 |
bundle.putInt(EXTRA_STATUS_PART, MSG_CAMERA_NEW_PHOTO_FOUND); |
| 171 | 186 |
bundle.putString(EXTRA_DATA_PART,eventMsg); |
| 172 | 187 |
sendCameraIntent(bundle); |
| 173 | 188 |
} |
| 174 | 189 |
} |
| 190 |
+ }else{
|
|
| 191 |
+ count++; |
|
| 192 |
+ if(count>=MAX_NO_PHOTO_COUNT){
|
|
| 193 |
+ LogHelper.d("czy","CameraService fetchPhotoTask 太久没发现新照片了,重新连接试试");
|
|
| 194 |
+ Bundle bundle = new Bundle(); |
|
| 195 |
+ bundle.putInt(EXTRA_STATUS_PART, MSG_CAMERA_CONN_ERROR); |
|
| 196 |
+ sendCameraIntent(bundle); |
|
| 197 |
+ stopCameraService(); |
|
| 198 |
+ } |
|
| 175 | 199 |
} |
| 176 | 200 |
|
| 177 | 201 |
isLastQueryReturned = true; |
@@ -24,6 +24,7 @@ import static ai.pai.lensman.dslr.CameraService.CMD_INIT_CAMERA_CONNECTION; |
||
| 24 | 24 |
import static ai.pai.lensman.dslr.CameraService.CMD_START_CAPTURE_PHOTO; |
| 25 | 25 |
import static ai.pai.lensman.dslr.CameraService.EXTRA_CMD; |
| 26 | 26 |
import static ai.pai.lensman.dslr.CameraService.EXTRA_DATA_PART; |
| 27 |
+import static ai.pai.lensman.dslr.CameraService.EXTRA_SESSION_DIR; |
|
| 27 | 28 |
import static ai.pai.lensman.dslr.CameraService.EXTRA_STATUS_PART; |
| 28 | 29 |
import static ai.pai.lensman.dslr.CameraService.MSG_CAMERA_CONN_ERROR; |
| 29 | 30 |
import static ai.pai.lensman.dslr.CameraService.MSG_CAMERA_INIT_SUCCESS; |
@@ -79,6 +80,7 @@ public class SessionInteractor implements Callback{
|
||
| 79 | 80 |
public void startCapture() {
|
| 80 | 81 |
Intent intent = new Intent(App.getAppContext(), CameraService.class); |
| 81 | 82 |
intent.putExtra(EXTRA_CMD,CMD_START_CAPTURE_PHOTO); |
| 83 |
+ intent.putExtra(EXTRA_SESSION_DIR,sessionWorkingDirPath); |
|
| 82 | 84 |
App.getAppContext().startService(intent); |
| 83 | 85 |
} |
| 84 | 86 |
|
@@ -91,7 +93,12 @@ public class SessionInteractor implements Callback{
|
||
| 91 | 93 |
Intent intent = new Intent(App.getAppContext(), CameraService.class); |
| 92 | 94 |
intent.putExtra(EXTRA_CMD,CMD_EXIT_CAMERA_CONNECTION); |
| 93 | 95 |
App.getAppContext().startService(intent); |
| 94 |
- App.getAppContext().unregisterReceiver(cameraReceiver); |
|
| 96 |
+ try{
|
|
| 97 |
+ App.getAppContext().unregisterReceiver(cameraReceiver); |
|
| 98 |
+ }catch (Exception e){
|
|
| 99 |
+ e.printStackTrace(); |
|
| 100 |
+ } |
|
| 101 |
+ |
|
| 95 | 102 |
LogHelper.d("czy","endSession ");
|
| 96 | 103 |
listener.onSessionEnd(sessionBean.sessionId); |
| 97 | 104 |
} |