- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我的问题是当我在不同的闪光灯模式之间切换然后想要捕获图像时,我的 captureBuilder 不会设置所选的闪光灯模式。它仅在我关闭并重新打开相机时有效。
我拿了https://github.com/googlesamples/android-Camera2Basic作为起点。
我的方法:
private void captureStillPicture() {
try {
final Activity activity = (Activity) context;
if (null == activity || null == mCameraDevice) {
return;
}
// This is the CaptureRequest.Builder that we use to take a picture.
CaptureRequest.Builder captureBuilder =
mCameraDevice.createCaptureRequest(CameraDevice.TEMPLATE_STILL_CAPTURE);
captureBuilder.addTarget(mImageReader.getSurface());
// Use the same AE and AF modes as the preview.
captureBuilder.set(CaptureRequest.CONTROL_AF_MODE,
CaptureRequest.CONTROL_AF_MODE_CONTINUOUS_PICTURE);
setCurrentFlash(captureBuilder);
// Orientation
int rotation = activity.getWindowManager()
.getDefaultDisplay()
.getRotation();
captureBuilder.set(CaptureRequest.JPEG_ORIENTATION, getOrientation(rotation));
CameraCaptureSession.CaptureCallback captureCallback =
new CameraCaptureSession.CaptureCallback() {
@Override
public void onCaptureCompleted(@NonNull CameraCaptureSession session,
@NonNull CaptureRequest request, @NonNull TotalCaptureResult result) {
super.onCaptureCompleted(session, request, result);
Toast.makeText(context, "image captured", Toast.LENGTH_SHORT)
.show();
unlockFocus();
}
};
mCaptureSession.stopRepeating();
mCaptureSession.capture(captureBuilder.build(), captureCallback, null);
} catch (CameraAccessException e) {
Log.e(this.getClass()
.getSimpleName(), e.getMessage(), e);
}
这是 setCurrentFlash 方法:
private void setCurrentFlash(CaptureRequest.Builder requestBuilder) {
if (mFlashSupported) {
switch (flashMode.name()) {
case FLASH_AUTO:
requestBuilder.set(CaptureRequest.CONTROL_AE_MODE,
CaptureRequest.CONTROL_AE_MODE_ON_AUTO_FLASH);
break;
case FLASH_ON:
requestBuilder.set(CaptureRequest.CONTROL_AE_MODE,
CaptureRequest.CONTROL_AE_MODE_ON_ALWAYS_FLASH);
break;
case FLASH_OFF:
requestBuilder.set(CaptureRequest.FLASH_MODE, CaptureRequest.FLASH_MODE_OFF);
break;
default:
requestBuilder.set(CaptureRequest.CONTROL_AE_MODE,
CaptureRequest.CONTROL_AE_MODE_ON_AUTO_FLASH);
break;
}
}
为什么构建器在捕获之前没有正确设置闪光灯?
***** 编辑 *****
通过像 Eddy Talvala 建议的那样调用 runPrecaptureSequence() 时将 flash 设置为 previewRequestBuilder 解决了问题
private void runPrecaptureSequence() {
try {
// This is how to tell the camera to trigger.
setCurrentFlash(previewRequestBuilder);
previewRequestBuilder.set(CaptureRequest.CONTROL_AE_PRECAPTURE_TRIGGER,
CaptureRequest.CONTROL_AE_PRECAPTURE_TRIGGER_START);
// Tell #mCaptureCallback to wait for the precapture sequence to be set.
state = STATE_WAITING_PRECAPTURE;
captureSession.capture(previewRequestBuilder.build(), mCaptureCallback, backgroundHandler);
} catch (CameraAccessException e) {
e.printStackTrace();
}
最佳答案
您还想在预览请求中更新 Flash 模式;通常,当您触发预捕获序列(使用 AE_PRECAPTURE_TRIGGER)时,相机设备想知道您想要的闪光模式,以便它知道是否应该打开预捕获闪光灯,它需要用它来确定最终的闪光灯功率。
通常的事件顺序是:
(这忽略了确保焦点良好,这通常在开始预捕获序列之前/同时完成)
关于android - 在 Camera2 API 中切换闪光灯,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37144657/
用于嵌入闪光灯以捕捉相机的网站(red5..etc)。我可以知道目前有没有手机支持闪光灯,可以用来从手机摄像头捕捉图像? 最佳答案 HTC Hero据说有Flash。然而,这不是标准 Android
当我打开闪光灯时。如果我使用camera.release()方法将相机用于后置摄像头图像拍摄闪光灯关闭,则相机停止。 switch1.setOnCheckedChangeListener(new Co
如何像这个网站一样制作动画加上一个 div...我只是复制并粘贴 css 但没有任何反应。 http://vbiran.ir 请帮我做这样的东西 我的代码是这样的googleplus{position
我最近在阅读有关 Arduino 的 Hello World应用程序,我心想,“我想知道我是否可以用我现在拥有的硬件来做到这一点。” 因为我没有 Arduino,所以我抓起一个随身携带的 USB 闪存
我在手电筒模式下运行 iPhone X 闪光灯时遇到问题。 返回 AVCaptureDeviceTypeBuiltInTelephotoCamera 被选为捕获设备: com.apple.avfoun
我知道在 iPhone 4 上打开闪光灯并使其保持打开状态的唯一方法是打开摄像机。我不太确定代码。这是我正在尝试的: -(IBAction)turnTorchOn { AVCaptureSes
我有一些,比方说,奇怪的情况……事情是这样的: 在一台服务器上录制音频并将其上传到另一台服务器的 Flash 应用程序。因此,正如您可能猜到的那样,我遇到了违反安全沙箱的异常/错误,看来我必须将 cr
我正在尝试永久打开 WP7 上的相机闪光灯。 使用: PhotoCamera cam = new Microsoft.Devices.PhotoCamera(CameraType.Primary);
我正在使用以下方法在 X 次/分钟内发送声音(X 是通过 bpm 确定的,它是一个 NumericStepper 对象) var mainTimer:Timer = new Timer(60 / (b
我只是想知道是否有人知道是否可以使用 THREE.SpotLight 获得闪光灯效果。 // Line 110 spotLight = new THREE.SpotLight(0xffffff, 0.
我的代码基于来自 Google Camera2-Basic 的示例,并添加了闪光灯始终支持。但看起来照片是在闪光发生后立即拍摄的。我(几乎)总是得到非闪光的照片,即使闪光灯被触发。 修改后的预览请求生
只是说我有一个包含电影剪辑 B1、B2、B3、B4、B5 的电影剪辑 A 我在 A 中编写代码以接收 a 包含的所有影片剪辑,并喜欢在那里打印名称。 我试过了,没有成功: for each (a:Mo
我正在尝试将带有参数的函数附加到计时器,但它说“无关类型函数”有什么办法可以解决这个问题吗?? 代码示例: var redoTimer:Timer = new Timer(50); redoTimer
我想实现切换手电筒功能。这样相机就不会被捕获和崩溃 - 就像在 Lollipop 中一样 - 我正在 API 23 中使用 setTorchMode 尝试它。我有一个代码实现来打开或关闭手电筒;但是,
我正在尝试为我的应用程序使用摄像头,但问题是当我使用此代码时,前置摄像头被禁用: ipc.cameraDevice = UIImagePickerControllerCameraDeviceRear
在 Flash 中,我在主时间轴中有 2 个帧。第一个是选择一种语言,第二个包含一个导航栏。此导航栏是一个影片剪辑,其中包含项目(影片剪辑)。这些“项目电影片段”包含 2 个帧:每种语言一个。 在 n
我正在使用 this jQuery webcam plugin在我正在处理的网站上。如果您访问该网站,您会注意到它使用了 Flash,您必须单击“接受”才能使其正常工作。 我想确定网络摄像头是否处于事
我有一个简单的 Arduino 程序,它每 5 秒将温度传感器的传感器值上传到 Google 电子表格。一切正常。我有 3 个 LED。一种在设置完成时永久点亮,一种在上传值时闪烁,一种在上传完成时点
我有一个使用 OpenCV for Android 的应用程序,想知道是否可以启用相机的 LED。 目前我的相机是使用以下代码设置的: camera = new VideoCapture(Highgu
正如我从许多实现中了解到的,例如: https://github.com/android/camera-samples/tree/master/CameraXBasic https://proandr
我是一名优秀的程序员,十分优秀!