0

我有一个相机布局。我需要它来处理闪光灯图标。就像在普通的内置相机中一样,您单击图标,图标和闪光模式会发生变化。图标位于操作栏中。

    final ImageView flashicon=(ImageView)view.findViewById(R.id.flash_actionbar);
    flashicon.setOnClickListener(new View.OnClickListener() {
        Drawable cameraflashautoicon=getResources().getDrawable(R.drawable.cameraflashauto);
        @Override
        public void onClick(View v) {
        if(flashicon.getDrawable().getConstantState().equals(R.drawable.cameraflashauto)){
                flashicon.setImageDrawable(cameraflashautoicon);
            }
            if(flashicon.getDrawable().getConstantState().equals(R.drawable.cameraflashoff)){

            }
            if(flashicon.getDrawable().getConstantState().equals(R.drawable.cameraflashon)){

            }
        }
    });

我阅读了一些与此相关的帖子,但不知道该怎么做。请帮忙。提出这个问题的方式可能并不理想,所以请让我知道还需要哪些其他代码或细节。

我正在使用表面视图,然后调用相机实例。

4

1 回答 1

0

为此,您应该这样做:

检查闪光灯是否可用?如果是,则关闭/打开如果不是,那么您可以根据您的应用程序执行任何操作。需要检查设备中闪存的可用性:

您可以使用以下

context.getPackageManager().hasSystemFeature(PackageManager.FEATURE_CAMERA_FLASH);

如果闪存可用,则返回 true,否则返回 false。

有关详细信息,请参阅http://developer.android.com/reference/android/content/pm/PackageManager.html

然后使用下面的代码进行闪光灯处理

CameraManager camManager = (CameraManager) getSystemService(Context.CAMERA_SERVICE);
String cameraId = camManager.getCameraIdList()[0]; // Usually front camera is at 0 position.

camManager.setTorchMode(cameraId, true);

于 2017-08-23T06:46:51.573 回答