【问题标题】:torch application android火炬应用安卓
【发布时间】:2011-04-19 10:58:24
【问题描述】:

嗨,我想在 android 中实现 Torch 应用程序,所以这是我的代码

    setContentView(R.layout.main);
    camera = Camera.open();
    if(camera == null)
        Toast.makeText(getBaseContext(),"CAMERA FAILED", Toast.LENGTH_LONG).show();
    else
        Toast.makeText(getBaseContext(),"camera opened",Toast.LENGTH_LONG).show();
}
public boolean dispatchKeyEvent(KeyEvent event) {
    int action = event.getAction();
    int keyCode = event.getKeyCode();
        switch (keyCode) {
        case KeyEvent.KEYCODE_VOLUME_UP:
            if (action == KeyEvent.ACTION_UP) {
                if(camera!=null)
                {
                     Toast.makeText(getBaseContext(),"came to volume up",Toast.LENGTH_LONG).show();
                     Parameters params = camera.getParameters();
                     params.setFlashMode( Parameters.FLASH_MODE_ON );
                     camera.setParameters(params);

                }
            }
            return true;
        case KeyEvent.KEYCODE_VOLUME_DOWN:
            if (action == KeyEvent.ACTION_UP) {
                Parameters params = camera.getParameters();
                params.setFlashMode( Parameters.FLASH_MODE_OFF );
                camera.setParameters(params);
                camera.release();
                camera = null;
                Toast.makeText(getBaseContext(),"came to volume down",Toast.LENGTH_LONG).show();
            }
            return true;
        default:
            return super.dispatchKeyEvent(event);
        }
    }

}

为什么这段代码不起作用???

【问题讨论】:

  • 您是否收到任何错误消息?
  • 究竟是什么不起作用。它会抛出错误吗?它是否进入 Key Event 监听器?你有很多不动产,找出真正出错的地方会很有帮助。
  • 不,我没有收到任何错误消息...它也会发生事件,但问题是我无法使用我的代码打开和关闭闪光灯
  • 即使我按下音量增大按钮,闪光灯也没有打开...请告诉我哪里做错了
  • 你必须这样做:stackoverflow.com/questions/8876843/…希望它有效

标签: android camera


【解决方案1】:

杜尔加,

当你按下音量增大键时,我相信你想要FLASH_MODE_TORCH 而不是FLASH_MODE_ON

可能需要以下权限:FLASHLIGHTCAMERA

【讨论】:

  • 我也尝试过 FLASH_MODE_TORCH 但它没有用。当我在 logcat 中按音量增大或减小音量时显示错误....当我按音量增大时显示的错误是 ERROR/ QualcommCameraHardware(95):Hal 上的意外 Flash 模式:-1 错误/QualcommCameraHardware(95):设置缩放=1 mZoom=1,当我按下音量时的错误是错误/QualcommCameraHardware(95):设置缩放=1 mZoom= 1 你能告诉我为什么会出现这些错误吗??
  • 添加了您可能需要的权限,除此之外,您的硬件可能不支持它?你在用什么手机?
【解决方案2】:

对于三星,您需要拥有相机预览的表面视图才能使手电筒模式正常工作。

你让它工作了吗?

【讨论】:

  • 有一个扩展SurfaceView并实现SurfaceView.Callback的类。在构造函数中,向持有者添加一个回调并将其类型设置为 PUSH_BUFFERS。对于此类,在 surfaceCreated 方法中初始化您的 Camera 对象并在那里设置您的相机参数。在surfaceDestroy 中,释放相机对象。此外,实施其他方法来确定三星设备是否有 LED 并且设备 LED 是否亮起。在您的活动中,声明您的表面视图对象,将其添加到您的布局中,然后设置内容视图。
【解决方案3】:

拥有一个扩展 SurfaceView 并实现 SurfaceView.Callback 的类。在构造函数中,为持有者添加一个回调并将其类型设置为 PUSH_BUFFERS。

对于这个类,在surfaceCreated 方法中初始化你的Camera 对象并在那里设置你的相机参数。

在surfaceDestroy中,释放相机对象。

此外,实施其他方法来确定三星设备是否有 LED 并且设备 LED 是否亮起。

在您的活动中,声明您的表面视图对象,将其添加到您的布局中,然后设置内容视图。

【讨论】:

  • 你是说 SurfaceHolder.Callback 吗?
【解决方案4】:

William Tate 说您需要 FLASH_MODE_TORCH 以及这两个权限是正确的,但是在您开始视频预览之前不会触及相机硬件。

此代码将打开手电筒(尽管您可能希望在实际应用中进行一些错误捕获):

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

正确格式化的权限在您的 android 清单中将如下所示:

<uses-permission android:name="android.permission.CAMERA"/>
<uses-permission android:name="android.permission.FLASHLIGHT"/>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-12-11
    • 2016-07-07
    • 2020-05-05
    • 1970-01-01
    • 2018-09-02
    • 2017-02-23
    • 1970-01-01
    • 2021-02-08
    相关资源
    最近更新 更多