Galaxy S6不会使用camera2 API和手电筒拍照

时间:2016-09-07 12:16:46

标签: android camera galaxy android-camera2

我试图在Galaxy S6上用手电筒拍照,没有手电筒就可以了,在其他设备上使用手电筒 - 没关系。手电筒和Galaxy S6 - 什么都没有。 我使用https://github.com/googlesamples/android-Camera2Basic中的结构 这段代码中的问题:

private void captureStillPicture() {
...
CameraCaptureSession.CaptureCallback CaptureCallback
                = new CameraCaptureSession.CaptureCallback() {

            @Override
            public void onCaptureCompleted(@NonNull CameraCaptureSession session,
                                           @NonNull CaptureRequest request,
                                           @NonNull TotalCaptureResult result) {
                Log.d(TAG, "onCaptureCompleted inner: go next unlock focus");
                unlockFocus();
            }

            @Override
            public void onCaptureSequenceCompleted(CameraCaptureSession session, int sequenceId, long frameNumber) {
                Log.d(TAG, "onCaptureSequenceCompleted inner: sequanceId " + sequenceId + " frame number " + frameNumber);
                super.onCaptureSequenceCompleted(session, sequenceId, frameNumber);
            }

            @Override
            public void onCaptureStarted(CameraCaptureSession session, CaptureRequest request, long timestamp, long frameNumber) {
                Log.d(TAG, "onCaptureStarted inner: ");
                super.onCaptureStarted(session, request, timestamp, frameNumber);
            }

            @Override
            public void onCaptureProgressed(CameraCaptureSession session, CaptureRequest request, CaptureResult partialResult) {
                Log.d(TAG, "onCaptureProgressed inner: ");
                super.onCaptureProgressed(session, request, partialResult);
            }

            @Override
            public void onCaptureFailed(CameraCaptureSession session, CaptureRequest request, CaptureFailure failure) {
                Log.d(TAG, "onCaptureFailed inner: ");
                super.onCaptureFailed(session, request, failure);
            }

            @Override
            public void onCaptureSequenceAborted(CameraCaptureSession session, int sequenceId) {
                Log.d(TAG, "onCaptureSequenceAborted inner: ");
                super.onCaptureSequenceAborted(session, sequenceId);
            }
        };
        mCaptureSession.capture(captureBuilder.build(), CaptureCallback, mBackgroundHandler);
...
}

这是我设置闪光模式的方法

private void setCurrentFlash(CaptureRequest.Builder requestBuilder) {
    if (mFlashSupported) {
        if (selectFlashModePosition == 0) {
            requestBuilder.set(CaptureRequest.CONTROL_AE_MODE,
                    CaptureRequest.CONTROL_AE_MODE_ON_ALWAYS_FLASH);
            requestBuilder.set(CaptureRequest.FLASH_MODE,
                    CaptureRequest.FLASH_MODE_SINGLE);

        } else {
            requestBuilder.set(CaptureRequest.FLASH_MODE,
                    CaptureRequest.FLASH_MODE_OFF);
        }
    }
}
启动CaptureSession.capture后,在其他所有设备上

onCaptureCompleted被调用,我在ImageReader.OnImageAvailableListener.onImageAvailable中获得了一张图片,但只有使用了Galaxy S6和手电筒 - 它没有被调用,CameraCaptureSession.CaptureCallback的所有方法都没有被调用!到底是怎么回事? 我会再说一遍 - 它在手电筒关闭时起作用,我得到了照片。但是使用手电筒 - 它无法正常工作

0 个答案:

没有答案