Android Flash 切换按钮崩溃

2024-03-06

应用程序在四种不同的设备上运行良好。但客户端在打开/关闭闪光灯按钮时面临崩溃Xperia z2.

主要活动

btnFlash.setOnClickListener(new OnClickListener()
        {
            @Override
            public void onClick(View arg0)
            {
                Toast.makeText(context, "Flash is toggled", Toast.LENGTH_LONG).show();

                if(CameraPreview.isFlashOn)
                {
                    CameraPreview.FlashOff(camera);

                    CameraPreview.isFlashOn = false;
                }
                else
                {
                    CameraPreview.isFlashOn = true;

                    CameraPreview.FlashOn(camera);
                }
            }
        });

相机预览

  public static boolean isFlashOn =false; // 

  public static void FlashOn(Camera mCamera)
  {
        // Get Camera Params for customisation
        Camera.Parameters parameters = mCamera.getParameters();

        // Check Whether device supports AutoFlash, If you YES then set
        // AutoFlash
        List<String> flashModes = parameters.getSupportedFlashModes();

        if (flashModes.contains(android.hardware.Camera.Parameters.FLASH_MODE_TORCH))
        {
            parameters.setFlashMode(Parameters.FLASH_MODE_TORCH);
        }
        else if (flashModes.contains(Parameters.FLASH_MODE_ON))
        {
            parameters.setFlashMode(Parameters.FLASH_MODE_ON);
        }
        mCamera.setParameters(parameters);
        mCamera.startPreview();
    }

    public static void FlashOff(Camera mCamera)
    {
        // Get Camera Params for customisation
        Camera.Parameters parameters = mCamera.getParameters();

        // Check Whether device supports AutoFlash, If you YES then set
        // AutoFlash
        List<String> flashModes = parameters.getSupportedFlashModes();
        if (flashModes.contains(android.hardware.Camera.Parameters.FLASH_MODE_OFF))
        {
            parameters.setFlashMode(Parameters.FLASH_MODE_OFF);
        }
        mCamera.setParameters(parameters);
        mCamera.startPreview();
    }

崩溃报告。

me_idx 0, stream type 9
W/ActivityManager(  973): Activity pause timeout for ActivityRecord{45328828 u0
aus.xray.cam/.MainActivity2 t153 f}
D/mm-camera-intf( 9138): mm_stream_read_msm_frame: VIDIOC_DQBUF buf_index 6, fra
me_idx 840, stream type 1
I/mm-camera(  473): mct_pipeline_process_set:command=8000013
I/mm-camera(  473): pproc_module_handle_reprocess_offline:1318 input buf fd 126
type 4 size 462848
D/mm-camera-intf( 9138): mm_stream_read_msm_frame: VIDIOC_DQBUF buf_index 0, fra
me_idx 0, stream type 9
D/CustomizationProcess( 3778): dismissCustomizationDialog:true
I/WindowManager(  973): Screen frozen for +307ms due to Window{44e24b48 u0 Statu
sBar}
D/mm-camera-intf( 9138): mm_stream_read_msm_frame: VIDIOC_DQBUF buf_index 0, fra
me_idx 841, stream type 1
I/mm-camera(  473): mct_pipeline_process_set:command=8000013
I/mm-camera(  473): pproc_module_handle_reprocess_offline:1318 input buf fd 120
type 4 size 462848
D/mm-camera-intf( 9138): mm_stream_read_msm_frame: VIDIOC_DQBUF buf_index 1, fra
me_idx 0, stream type 9
^C
C:\adb>

应穆库的要求。我自己回答了。用于切换闪光灯

flashBtn.setOnClickListener(new OnClickListener()
{
    @Override
    public onClick(View view)
    {
        if(cameraView!=null)//cameraView is the CameraPreview.class
        {
            if(cameraView.isFlashOn() && isFlashRunning)
            {       
                cameraView.FlashOff(camera);

                isFlashRunning = false;                             
            }
            else
            {
                cameraView.FlashOn(camera); 

                isFlashRunning = true;  
            }
    }
});

FlashOn 和 FlashOff 方法是

public void FlashOn(Camera mCamera) throws RemoteException
    {   
        // Get Camera Params for customisation
        Camera.Parameters parameters = mCamera.getParameters();

        // Check Whether device supports AutoFlash, If you YES then set
        // AutoFlash
        List<String> flashModes = parameters.getSupportedFlashModes();

        if (flashModes.contains(android.hardware.Camera.Parameters.FLASH_MODE_TORCH))
        {
            parameters.setFlashMode(Parameters.FLASH_MODE_TORCH);

            isFlashOn = true;
        }
        else if (flashModes.contains(Parameters.FLASH_MODE_ON))
        {
            parameters.setFlashMode(Parameters.FLASH_MODE_ON);

            isFlashOn = true;
        }

        mCamera.setParameters(parameters);

        mCamera.startPreview();

        //mCamera.autoFocus(null);  // may be this is problem
    }



    public void FlashOff(Camera mCamera) throws RemoteException
    {
        // Get Camera Params for customisation
        Camera.Parameters parameters = mCamera.getParameters();

        // Check Whether device supports AutoFlash, If you YES then set
        // AutoFlash
        List<String> flashModes = parameters.getSupportedFlashModes();

        if (flashModes.contains(android.hardware.Camera.Parameters.FLASH_MODE_OFF))
        {
            parameters.setFlashMode(Parameters.FLASH_MODE_OFF);

            isFlashOn = false;
        }

        mCamera.setParameters(parameters);

        mCamera.startPreview();
    }
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Android Flash 切换按钮崩溃 的相关文章

随机推荐

  • SwiftUI - 动态文本的本地化

    我正在努力解决一些文本字段的本地化问题 通常 如果我要翻译的文本是硬编码的 则 Text 或 TextField 的 正常 本地化在我的应用程序中不会出现任何问题 Text English Text 我将其翻译到我的 Localized s
  • 如何在 React Native 中将一个图像放置在其他图像之上?

    我将图像放置为根节点 以便使其成为视图的背景 但似乎所有其他图像都变得不可见 有没有办法使用内置组件将图像放置在背景之上 而不需要任何插件 在下面的代码示例中landing background用作背景 我的logo图像可见 但仅当背景被移
  • 无法使用 urllib2 将内容类型设置为 application/json

    这个小宝贝 import urllib2 import simplejson as json opener urllib2 build opener opener addheaders append Content Type applica
  • NSTableView 未显示

    这是上一个问题的后续 对不起 我不知道如何添加代码或编辑 5 分钟前编写的内容 一个简短的总结 我正在尝试在常规视图上显示自定义 派生的 TableView 我没有使用IB 而是从代码中完成一切 这里的目标是构建应用程序 同时也是学习 Co
  • FileProvider 崩溃 - npe 尝试对 null 字符串调用 XmlResourceParser

    这是我的清单的一部分
  • 如何扩展现有的docker镜像?

    我在用着官方的elasticsearch Docker 镜像 https hub docker com r elasticsearch 而不是设置我自己的弹性搜索实例 这非常有效 直到我想扩展它为止 我想安装marvel http www
  • VBScript 发送键“

    我有一个 VBScript 可以取消订阅所有 Steam 创意工坊对象 Code Set WshShell WScript CreateObject WScript Shell WshShell AppActivate Steam Comm
  • 如何选择 cypress 自动完成字段

    我如何在 cypress 中选择自动完成字段 该字段如下所示 这是 HTML 代码 div class mui select span style color rgb 51 51 51 font family none font size
  • 有没有更好的方法使用 Dash by Plotly 执行多重输出?

    正如我们所看到的入门的互动部分 https plot ly dash getting started part 2 interactivity 一个回调函数可以接受多个输入 但始终只有一个输出 假设我们有两个单独的块 它们必须在输入更改后更
  • 数组“__curl_rule_01__”的大小为负数

    我在尝试编译 GIT 时遇到错误 我已经在 Google 和 GIT 源代码问题 错误中搜索了类似的问题 但没有找到任何可以帮助我的内容 最初我收到以下错误 root teemo usr src git make prefix usr in
  • 使用 Swift 3.0 将 JSON 数组解析到服务器

    我正在尝试将 JSON 数组发送到 Web 服务器 我在网上看了几个例子 即 and 使用 Swift 3 0 将 CoreData 保存到 Web 服务器 https stackoverflow com questions 4619996
  • 使用前缀或域的路由

    我正在开发一个平台 该平台允许用户在主网站域的子文件夹中运行自己的网站 或者为其网站映射自定义域 使用自定义域时 每个路由的 URL 结构略有不同 因为它以用户名为前缀 但使用自定义域时 不使用此前缀 有没有一种巧妙的方法可以在我的 Rou
  • 通过递归得出帕斯卡三角形

    有人可以告诉我我当前的代码是否可行吗 我必须使用输入创建帕斯卡三角形 而不使用任何循环 我注定要递归 我花了三天时间来做这个 这是我能想到的最好的输出 def pascal curlvl newlvl tri if curlvl newlv
  • R 中向量的子集()

    我根据以下函数编写了subset 我觉得很方便 ss lt function x subset r lt eval substitute subset data frame x parent frame if is logical r st
  • 将 JSON 解析为 MONGODB 文档

    我是新来的JAVA and MONGODB并且一直在学习尝试并了解这些技术是否能够满足我对产品的要求 我目前陷入无法插入文档 记录 的地步JAVA进入我的MONGODB收藏 我正在使用新的MONGODB version 3 0 到目前为止的
  • 如何在heroku 上托管我的discord.py 机器人?

    我目前正在尝试将我的 Discord 机器人连接到 Heroku 并 24 7 托管它 但我遇到了问题 我将我的机器人上传到 githubhttps github com zemocode flankebot tree master htt
  • 如何更改 .net Web 应用程序中的默认区域性设置?

    我们的 Web 应用程序 net C 使用 amount ToString c 格式化货币金额 显示为几个不同区域的本地化 我们的法裔加拿大用户更喜欢所有金额均采用美国格式 123 456 99 而 fr CA 的默认 Windows 格式
  • Android中如何将日志写入SD卡? [复制]

    这个问题在这里已经有答案了 我的程序在设备中崩溃 我想在我的设备中运行时准确捕获程序的日志 即我想将日志写入我的 SD 卡 直到崩溃为止 我怎样才能实现这个目标 尝试这个 Thread setDefaultUncaughtException
  • 从模块关闭用户窗体

    我正在尝试从模块关闭用户表单 但它不起作用 这是我尝试过的 Sub UpdateSheetButton Dim subStr1 As String Dim subSrrt2 As String Dim tmp As Integer Dim
  • Android Flash 切换按钮崩溃

    应用程序在四种不同的设备上运行良好 但客户端在打开 关闭闪光灯按钮时面临崩溃Xperia z2 主要活动 btnFlash setOnClickListener new OnClickListener Override public voi