android camera2点击监听,使用Android camera2 API打开/关闭闪光灯不起作用

我正在使用自定义相机创建Android应用程序,并且正在切换到新的camera2 API。我有一个按钮,可以在背面照相机打开时打开和关闭闪光灯(不需要停止照相机,就像任何经典的照相机应用程序一样)。使用Android camera2 API打开/关闭闪光灯不起作用

当我点击闪光图标,没有任何反应,这是什么logcat的回报:

D/ViewRootImpl: ViewPostImeInputStage processPointer 0

D/ViewRootImpl: ViewPostImeInputStage processPointer 1

我不知道为什么它不工作。这里是代码:

我有一个RecordVideoActivity使用RecordVideoFragment。这里是包含Flash按钮的代码片段的XML部分:

android:id="@+id/button_flash"

android:src="@drawable/ic_flash_off"

android:layout_alignParentLeft="true"

style="@style/actions_icons_camera"

android:onClick="actionFlash"/>

和Java代码:

ImageButton flashButton;

private boolean hasFlash;

private boolean isFlashOn = false;

随着在onViewCreated:

@Override

public void onViewCreated(final View view, Bundle savedInstanceState) {

...

[some code]

...

// Flash on/off button

flashButton = (ImageButton) view.findViewById(R.id.button_flash);

// Listener for Flash on/off button

flashButton.setOnClickListener(new View.OnClickListener() {

@Override

public void onClick(View v) {

actionFlash();

}

});

这里是actionFlash()功能定义:

private void actionFlash() {

/* First check if device is supporting flashlight or not */

hasFlash = getActivity().getApplicationContext().getPackageManager()

.hasSystemFeature(PackageManager.FEATURE_CAMERA_FLASH);

if (!hasFlash) {

// device doesn't support flash

// Show alert message and close the application

AlertDialog alert = new AlertDialog.Builder(this.getActivity())

.create();

alert.setMessage("Sorry, your device doesn't support flash light!");

alert.setButton(DialogInterface.BUTTON_POSITIVE, "OK", new DialogInterface.OnClickListener() {

public void onClick(DialogInterface dialog, int which) {

dialog.dismiss();

}

});

alert.show();

return;

}

else { // the device support flash

CameraManager mCameraManager = (CameraManager) getActivity().getSystemService(Context.CAMERA_SERVICE);

try {

String mCameraId = mCameraManager.getCameraIdList()[0];

if (mCameraId.equals("1")) { // currently on back camera

if (!isFlashOn) { // if flash light was OFF

// Turn ON flash light

try {

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {

mCameraManager.setTorchMode(mCameraId, true);

}

} catch (Exception e) {

e.printStackTrace();

}

// Change isFlashOn boolean value

isFlashOn = true;

// Change button icon

flashButton.setImageResource(R.drawable.ic_flash_off);

} else { // if flash light was ON

// Turn OFF flash light

try {

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {

mCameraManager.setTorchMode(mCameraId, false);

}

} catch (Exception e) {

e.printStackTrace();

}

// Change isFlashOn boolean value

isFlashOn = false;

// Change button icon

flashButton.setImageResource(R.drawable.ic_flash_on);

}

}

} catch (CameraAccessException e) {

Toast.makeText(getActivity(), "Cannot access the camera.", Toast.LENGTH_SHORT).show();

getActivity().finish();

}

}

}

有什么想法可能是错的?

(我已经看了this question但它并没有解决我的问题)

非常感谢您的帮助。这真让我抓狂。在结束通话switchFlash

Boolean available = characteristics.get(CameraCharacteristics.FLASH_INFO_AVAILABLE);

isFlashSupported = available == null ? false : available;

setupFlashButton();

():

2016-08-01

J.M.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值