首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >无法使闪光灯连续闪烁并在点击按钮时停止

无法使闪光灯连续闪烁并在点击按钮时停止
EN

Stack Overflow用户
提问于 2019-12-25 00:13:48
回答 1查看 62关注 0票数 1

我试着让手电筒在连续按下一个按钮时闪烁,直到按钮再次被按下。闪光灯一直在闪烁,但我无法停止闪烁,因为应用程序冻结。以下是我的代码:

代码语言:javascript
运行
复制
public void Buts1(View view) {
    CameraManager cameraManager = (CameraManager) getSystemService(Context.CAMERA_SERVICE);
    long blinkDelay = 50;//delay in ms
    if(textView.getText().toString().equals("ON")){
       boolean s=false;
        while (textView.getText().toString().equals("ON")){
            if(s){
                try {
                    String cameraId = cameraManager.getCameraIdList()[0];
                    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
                        cameraManager.setTorchMode(cameraId, true);
                    }
                } catch (CameraAccessException e) {
                }
                s=false;
            }else{
                try {
                    String cameraId = cameraManager.getCameraIdList()[0];
                    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
                        cameraManager.setTorchMode(cameraId, false);
                    }
                } catch (CameraAccessException e) {
                }
                s=true;
            }
            try {
                Thread.sleep(blinkDelay);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
    }
} 
EN

回答 1

Stack Overflow用户

发布于 2019-12-25 00:51:53

我相信你在这里冻结了UI线程。我也没有看到任何将textView文本设置为"OFF“的东西。

我稍微修改了您的代码,它假定textView以文本"OFF“开头,当您单击按钮时将更改为"ON”。再次单击该按钮将把textView文本设置为" off“,并关闭闪烁。这是通过在单独的线程而不是UI线程上工作的。

代码语言:javascript
运行
复制
        button.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            final CameraManager cameraManager = (CameraManager) getSystemService(Context.CAMERA_SERVICE);
            Thread flashThread = new Thread(new Runnable() {
                @Override
                public void run() {
                    boolean s=false;
                    long blinkDelay = 50;//delay in ms
                    while (textView.getText().toString().equals("ON")){
                        if(s){
                            try {
                                String cameraId = cameraManager.getCameraIdList()[0];
                                if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
                                    cameraManager.setTorchMode(cameraId, true);
                                }
                            } catch (CameraAccessException e) {
                            }
                            s=false;
                        }else{
                            try {
                                String cameraId = cameraManager.getCameraIdList()[0];
                                if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
                                    cameraManager.setTorchMode(cameraId, false);
                                }
                            } catch (CameraAccessException e) {
                            }
                            s=true;
                        }
                        try {
                            Thread.sleep(blinkDelay);
                        } catch (InterruptedException e) {
                            e.printStackTrace();
                        }
                    }


                }
            });
            if(textView.getText().toString().equalsIgnoreCase("OFF")){
                textView.setText("ON");
                flashThread.start();
            }else{
                flashThread.interrupt();
                try {
                    String cameraId = cameraManager.getCameraIdList()[0];
                    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
                        cameraManager.setTorchMode(cameraId, false);
                    }
                } catch (CameraAccessException e) {
                }
                textView.setText("OFF");
            }
        }
    });
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59471258

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档