17
17
package com .googleresearch .capturesync ;
18
18
19
19
import static android .hardware .camera2 .CameraDevice .TEMPLATE_PREVIEW ;
20
+ import static android .hardware .camera2 .CameraDevice .TEMPLATE_MANUAL ;
20
21
import static android .hardware .camera2 .CameraMetadata .CONTROL_AE_MODE_OFF ;
21
22
import static android .hardware .camera2 .CameraMetadata .CONTROL_AF_MODE_AUTO ;
23
+ import static android .hardware .camera2 .CameraMetadata .CONTROL_AF_MODE_CONTINUOUS_VIDEO ;
24
+ import static android .hardware .camera2 .CameraMetadata .CONTROL_AF_MODE_OFF ;
25
+ import static android .hardware .camera2 .CameraMetadata .CONTROL_AF_TRIGGER_CANCEL ;
26
+ import static android .hardware .camera2 .CameraMetadata .CONTROL_AF_TRIGGER_IDLE ;
22
27
import static android .hardware .camera2 .CameraMetadata .CONTROL_AWB_MODE_AUTO ;
23
28
import static android .hardware .camera2 .CameraMetadata .CONTROL_MODE_AUTO ;
24
29
import static android .hardware .camera2 .CaptureRequest .CONTROL_AE_MODE ;
25
30
import static android .hardware .camera2 .CaptureRequest .CONTROL_AF_MODE ;
26
31
import static android .hardware .camera2 .CaptureRequest .CONTROL_AF_MODE_CONTINUOUS_PICTURE ;
32
+ import static android .hardware .camera2 .CaptureRequest .CONTROL_AF_TRIGGER ;
27
33
import static android .hardware .camera2 .CaptureRequest .CONTROL_AWB_MODE ;
28
34
import static android .hardware .camera2 .CaptureRequest .CONTROL_MODE ;
35
+ import static android .hardware .camera2 .CaptureRequest .LENS_FOCUS_DISTANCE ;
29
36
import static android .hardware .camera2 .CaptureRequest .SENSOR_EXPOSURE_TIME ;
30
37
import static android .hardware .camera2 .CaptureRequest .SENSOR_SENSITIVITY ;
31
38
32
39
import android .hardware .camera2 .CameraAccessException ;
33
40
import android .hardware .camera2 .CameraDevice ;
34
41
import android .hardware .camera2 .CaptureRequest ;
35
42
import android .view .Surface ;
43
+ import android .widget .Toast ;
44
+
36
45
import com .googleresearch .capturesync .ImageMetadataSynchronizer .CaptureRequestTag ;
37
46
import java .util .ArrayList ;
38
47
import java .util .List ;
@@ -61,23 +70,16 @@ public CaptureRequest.Builder makePreview(
61
70
CaptureRequest .Builder builder = device .createCaptureRequest (TEMPLATE_PREVIEW );
62
71
if (wantAutoExp ) {
63
72
builder .set (CONTROL_AE_MODE , CONTROL_AWB_MODE_AUTO );
64
-
65
73
} else {
66
74
// Manually set exposure and sensitivity using UI sliders on the leader.
67
75
builder .set (CONTROL_AE_MODE , CONTROL_AE_MODE_OFF );
68
76
builder .set (SENSOR_EXPOSURE_TIME , sensorExposureTimeNs );
69
77
builder .set (SENSOR_SENSITIVITY , sensorSensitivity );
70
78
}
71
-
79
+ builder .set (CONTROL_AF_TRIGGER , CONTROL_AF_TRIGGER_CANCEL );
80
+ builder .set (CONTROL_AF_MODE , CONTROL_AF_MODE_OFF );
72
81
// Auto white balance used, these could be locked and sent from the leader instead.
73
82
builder .set (CONTROL_AWB_MODE , CONTROL_AWB_MODE_AUTO );
74
- if (enableFocus ==true ){
75
- builder .set (CONTROL_AF_MODE , CONTROL_AF_MODE_CONTINUOUS_PICTURE );
76
- }else {
77
- builder .set (CONTROL_AF_MODE , CONTROL_AF_MODE_AUTO );
78
- }
79
-
80
-
81
83
82
84
if (viewfinderSurface != null ) {
83
85
builder .addTarget (viewfinderSurface );
@@ -91,6 +93,7 @@ public CaptureRequest.Builder makePreview(
91
93
return builder ;
92
94
}
93
95
96
+
94
97
/**
95
98
* An alternative capture request for video,
96
99
* includes everything from preview + mediaRecorder
@@ -114,10 +117,13 @@ public CaptureRequest.Builder makeVideo(
114
117
115
118
public CaptureRequest .Builder makeFrameInjectionRequest (
116
119
long desiredExposureTimeNs , List <Surface > imageSurfaces ) throws CameraAccessException {
120
+
117
121
CaptureRequest .Builder builder = device .createCaptureRequest (TEMPLATE_PREVIEW );
118
122
builder .set (CONTROL_MODE , CONTROL_MODE_AUTO );
119
123
builder .set (CONTROL_AE_MODE , CONTROL_AE_MODE_OFF );
120
124
builder .set (SENSOR_EXPOSURE_TIME , desiredExposureTimeNs );
125
+ builder .set (CONTROL_AF_TRIGGER , CONTROL_AF_TRIGGER_CANCEL );
126
+ builder .set (CONTROL_AF_MODE , CONTROL_AF_MODE_OFF );
121
127
// TODO: Inserting frame duration directly would be more accurate than inserting exposure since
122
128
// {@code frame duration ~ exposure + variable overhead}. However setting frame duration may not
123
129
// be supported on many android devices, so we use exposure time here.
0 commit comments