有没有一种方法可以在安卓系统中使用手电筒而不使用相机方法



请先阅读问题,然后再将其标记为重复。我正在尝试使用本网站其他代码中显示的相机方法访问LED/闪光灯WITHOUT。非常感谢。

我正在尝试在安卓系统中使用手电筒/手电筒。我已经找到并实现了可以实现这一点的代码。我遇到的问题是,我使用的是图像识别API,它将相机用作图像扫描仪,而它们没有灯光打开/关闭功能。当我试图覆盖他们的方法并使用相机方法打开/关闭火炬时,这是有效的,但是,相机方法现在控制窗口,他们的扫描仪在屏幕上不再具有优先级。

所以我想确定的是…有没有其他方法可以在不使用相机方法和预览功能的情况下打开手电筒/手电筒。有人知道如何绕过相机使用手电筒/手电筒吗?如有任何信息,我们将不胜感激。

这是我目前使用的代码,它可以打开/关闭手电筒,但就像我说的。。。这会覆盖扫描仪,我需要相机/扫描仪同时操作才能识别我的图像。

公共类Flashlight扩展AutoScannerSession{

Camera cam;
private CameraManager mCameraManager;
private Context context;
private Scanner scanner;
private AutoScannerSession.Listener listener;
private boolean advancedListener = false;

public Flashlight(Activity parent, Scanner scanner, Listener listener, SurfaceView preview) {
    super(parent, scanner, listener, preview);
    cam = Camera.open();
    cam.setErrorCallback(new Camera.ErrorCallback() {
        @Override
        public void onError(int error, Camera camera) {
            Log.e("erro", error +"");
        }
    });
    this.context = parent;
    this.mCameraManager = new CameraManager(parent, this, preview);
    this.scanner = scanner;
    this.listener = listener;
    if(listener instanceof AutoScannerSession.AdvancedListener) {
        this.advancedListener = true;
    }
}
@Override
public void start() {
    super.start();
    //flashOn();
}
public void flashOn() {
    android.hardware.Camera.Parameters p = cam.getParameters();
    p.setFlashMode(android.hardware.Camera.Parameters.FLASH_MODE_TORCH);
    cam.setParameters(p);
    //cam.startPreview();
}
public void flashOff() {
    cam.stopPreview();
    cam.release();
}
@Override
public void stop() {
    super.stop();
    flashOff();
}

没有其他方法可以使用flash。但您可能可以与扫描仪"共享"相机对象。

无论如何,Activity.onCreate()中的Camera.open()和Activity.onStart()中打开手电筒看起来都不正确。要想在其他应用程序中成为一个好公民,你的应用程序不应该在onResume()之前获取相机,并在onPause()之前发布。

打开相机闪光灯的代码段。

Camera cam = Camera.open();     
Parameters p = cam.getParameters();
p.setFlashMode(Parameters.FLASH_MODE_TORCH);
cam.setParameters(p);
cam.startPreview();

关闭摄像头led灯的代码片段。

 cam.stopPreview();
  cam.release();

我有一部Symphony H20智能手机正式运行Android 4.4.2、内核3.4.67、MT6582。将Parameters.FLASH_MODE_TORCH设置为相机参数无效。尝试了几个小时后,我决定对其预装的FlashLight应用程序进行反编译。在那里,我发现他们在文件/sys/class/torch/torch/torch_level中写入1以打开相机LED,并在0中关闭它

然后我试了同样的方法,瞧!它奏效了。

但同样的技术在我的Winmax W800 PlusAndroid 4.4.2、内核3.4.67、MT6572中不起作用。它甚至根本没有像/sys/class/torch/torch/torch_level这样的文件。

相关内容

  • 没有找到相关文章

最新更新