以编程方式处理相机闪光灯

时间:2017-08-23 06:36:07

标签: android camera-flash

我有相机布局。我需要它来处理flash图标。就像在普通的内置相机中一样,单击图标,图标和闪光模式更改。图标位于操作栏中。

    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)){

            }
        }
    });

我阅读了一些与此相关的帖子,但无法弄清楚该怎么做。请帮忙。提出这个问题的方式可能不太理想,所以请告诉我需要的其他代码或细节。

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

1 个答案:

答案 0 :(得分: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);