Auto turn:开启 /关闭/自动闪光模式(automathic)

关于Auto turn的问题,在automathic中经常遇到, 我试图在三种方法之间切换以打开 / 关闭和自动拍摄我的相机应用程序中的闪光灯..我会像在谷歌相机应用程序中一样只使用一个按钮进行切换。点击第一次,你关闭,第二次你将打开它,第三次你将在自动拍摄中设置它。我创建了按钮,我做了这个方法来改变图标:

我试图在三种方法之间切换以打开 / 关闭和自动拍摄我的相机应用程序中的闪光灯..我会像在谷歌相机应用程序中一样只使用一个按钮进行切换。点击第一次,你关闭,第二次你将打开它,第三次你将在自动拍摄中设置它。我创建了按钮,我做了这个方法来改变图标:

private void updateFlashOnScreenIndicator(String value) {
        ImageButton switchFlash = (ImageButton) findViewById(R.id.flash_on_off);
        if (switchFlash == null) {
            return;
        }
        if (value == null || Parameters.FLASH_MODE_OFF.equals(value)) {
            switchFlash.setImageResource(R.drawable.ic_flash_off_white_24dp);
        } else {
            if (Parameters.FLASH_MODE_AUTO.equals(value)) {
                switchFlash.setImageResource(R.drawable.ic_flash_auto_white_24dp);
            } else if (Parameters.FLASH_MODE_ON.equals(value)) {
                switchFlash.setImageResource(R.drawable.ic_flash_on_white_24dp);
            } else {
                switchFlash.setImageResource(R.drawable.ic_flash_off_white_24dp);
            }
        }
    }

它基本上工作...事实上,如果我尝试创建一个方法(在我的按钮的 onClick 中调用)只是写:

public void flashToggle(View view) {
        updateFlashOnScreenIndicator("on");
    }

它改变了图标,并设置了闪光灯..但当然它并没有设置真正的闪光灯!我怎样才能在我的点击三种模式之间切换?

编辑:我发现这个类和 onClick 在我的按钮,现在我可以在状态和图标之间切换正确的变化...但仍然没有发生在闪光灯..它不会改变..它总是关闭

public class FlashButton extends ImageButton {
    private Camera.Parameters mParameters;
    private Camera camera;
    public enum FlashEnum {
        AUTOMATIC, ON, OFF
    }
    public intece FlashListener {
        void onAutomatic();
        void onOn();
        void onOff();
    }
    private FlashEnum mState;
    private FlashListener mFlashListener;
    public FlashButton(Context context, AttributeSet attrs) {
        super(context, attrs);
        this.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View view) {
                int next = ((mState.ordinal() + 1) % FlashEnum.values().length);
                setState(FlashEnum.values()[next]);
                performFlashClick();
            }
        });
        //Sets initial state
        setState(FlashEnum.AUTOMATIC);
    }
    private void performFlashClick() {
        Camera.Parameters parameters = CameraController1.getParameters();
        if(mFlashListener == null)return;
        switch (mState) {
            case AUTOMATIC:
                mFlashListener.onAutomatic();
                parameters.setFlashMode(Camera.Parameters.FLASH_MODE_AUTO);
                Log.d("Falsh", "Auto");
                break;
            case ON:
                mFlashListener.onOn();
                parameters.setFlashMode(Camera.Parameters.FLASH_MODE_ON);
                Log.d("Falsh", "On");
                break;
            case OFF:
                mFlashListener.onOff();
                parameters.setFlashMode(Camera.Parameters.FLASH_MODE_OFF);
                Log.d("Falsh", "Off");
                break;
        }
    }
    private void createDrawableState() {
        switch (mState) {
            case AUTOMATIC:
                setImageResource(R.drawable.ic_flash_auto_white_24dp);
                break;
            case ON:
                setImageResource(R.drawable.ic_flash_on_white_24dp);
                break;
            case OFF:
                setImageResource(R.drawable.ic_flash_off_white_24dp);
                break;
        }
    }
    public FlashEnum getState() {
        return mState;
    }
    public void setState(FlashEnum state) {
        if(state == null)return;
        this.mState = state;
        createDrawableState();
    }
    public FlashListener getFlashListener() {
        return mFlashListener;
    }
    public void setFlashListener(FlashListener flashListener) {
        this.mFlashListener = flashListener;
    }
}

现在的按钮是:

<net.cc.mycameraapp.FlashButton
            android:id="@+id/flash_on_off"
            android:background="@null"
            android:layout_width="50dp"
            android:layout_height="50dp"
            android:scaleType="fitCenter"
            android:layout_marginTop="4dp"
            android:src="@drawable/ic_flash_off_white_24dp"
            android:padding="14dp"
            android:layout_centerHorizontal="true">
        </net.cc.mycameraapp.FlashButton>
4

使这一全球性

Camera.Parameters parameters;
Icon  flash;
flash = (Icon) findViewById(R.id.flash);

做一个单独的参数是本地的,并在每次点击 flash 时设置它。我分别为 FLASH AUTO,FLASH ON 和 FLASH OFF 维护了文本 c i 和 N。

flash.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            if (flash.getText().equals("c")) {
                    flash.setText("N");
                    Camera.Parameters mParameters;
                    mParameters = mCamera.getParameters();
                    mParameters.setFlashMode(Camera.Parameters.FLASH_MODE_ON);
                    mCamera.setParameters(mParameters);
            } else 
                if (flash.getText().equals("N")) {
                    flash.setText("i");
                    Camera.Parameters mParameters;
                    mParameters = mCamera.getParameters();
                    mParameters.setFlashMode(Camera.Parameters.FLASH_MODE_OFF);
                    mCamera.setParameters(mParameters);
            } else if (flash.getText().equals("i")) {
                    flash.setText("c");
                    Camera.Parameters mParameters;
                    mParameters = mCamera.getParameters();
                    mParameters.setFlashMode(Camera.Parameters.FLASH_MODE_AUTO);
                    mCamera.setParameters(mParameters);
            }
        }
    });

在 sucecreated 里面把它放在

 @Override
public void suceCreated(SuceHolder suceHolder) {
    try {
        mCamera = Camera.open();
        parameters = mCamera.getParameters();
        if (flash.getText().equals("c")) {
            parameters.setFlashMode(Camera.Parameters.FLASH_MODE_AUTO);
        } else if (flash.getText().equals("N")) {
            parameters.setFlashMode(Camera.Parameters.FLASH_MODE_ON);
        } else if (flash.getText().equals("i")) {
            parameters.setFlashMode(Camera.Parameters.FLASH_MODE_OFF);
        }
        mCamera.setParameters(parameters);
        setCameraDisplayOrientation(this, Camera.CameraInfo.CAMERA_FACING_BACK, mCamera);
        mCamera.setPreviewDisplay(suceHolder);
        mCamera.startPreview();
    } catch (RuntimeException e) {
        System.err.println("camera0 :" + e);
        return;
    } catch (IOException e) {
        e.printStackTrace();
    }
}

本站系公益性非盈利分享网址,本文来自用户投稿,不代表码文网立场,如若转载,请注明出处

(944)
红细胞体积分布宽度cv偏低:hyperbox的体积分数
上一篇
三氟乙酸cas:如何在MaximaCAS中求解三角方程组
下一篇

相关推荐

  • win10最流畅的cadAutoCAD!

    Windows 10最流畅的CAD软件是Autodesk AutoCAD,它拥有强大的2D和3D绘图功能,可以帮助用户创建准确的工程图纸。它还支持多种文件格式,如DWG、DXF、PDF、SAT等,可以让用户在不同平台上共享文件。此外,AutoCAD还具有强大的3D建模功能,可以帮助用户快速创建复杂的3D模型,并且可以将3D模型转换为2D图纸。代码:…

    2024-04-18 08:23:28
    0 76 48
  • cad2014vba安装教程:如何在AutoCAD 2014中安装VBA功能

    安装VBA组件打开CAD2014软件,在“应用程序”菜单中选择“安装VBA组件”;…

    2023-06-06 08:38:26
    0 33 63
  • win10无法安装cad2010:无法在Windows 10上安装AutoCAD 2010

    如果您想使用 AutoCAD 2010,可以尝试使用虚拟机(VM),在其中安装 Windows XP 系统,然后在其中安装 AutoCAD 2010。…

    2024-04-09 08:08:14
    0 59 38
  • 自动化应用实例:如何自动化EC2实例快照(ec2 automated backups)

    关于自动化应用实例的问题,在ec2 automated backups中经常遇到,如何每 X 次自动执行 EC2 实例快照?通过快照,我的意思是虚拟机的所有数据和状态和配置的映像,这样我就可以快速恢复它。是否有为此目的的 AWS 服务?最好的方法是什么?…

    2022-12-16 04:57:45
    0 49 30
  • cvt和自动挡哪个好提升驾驶体验的最佳选择

    CVT(可变转换器)是一种由传动带及传动轮组成的无级变速器,它可以在没有传动档位的情况下,根据驾驶者的驾驶习惯,自动调整传动轮之间的转速比,从而实现无级变速。自动挡是指车辆自动变速箱,它使用液力传动来实现变速,可以自动适应车辆的行驶状态,减少司机的疲劳,提高行车的舒适性。…

    2023-06-08 07:42:19
    0 79 39
  • cv一叶扁舟和清影轩阳:漫游在一叶扁舟和清影轩阳之间

    cv一叶扁舟是一款开源的计算机视觉库,用于图像处理、计算机视觉等。它提供了丰富的API,可以帮助开发者快速实现各种图像处理任务,如图像分割、目标检测、图像识别等。清影轩阳是一款开源的计算机视觉框架,用于图像处理、目标检测、分类等。它提供了丰富的API,可以帮助开发者快速实现各种图像处理任务,如图像分割、目标检测、图像识别等。…

    2023-08-05 07:06:20
    0 99 27
  • css设置滚动条宽度设置:This is a title

    CSS设置滚动条宽度的方法:使用CSS3的。-webkit-属性:…

    2023-06-06 10:53:01
    0 97 14
  • xl和xe汽车cvt:探索XL和XE汽车的CVT技术优势

    XL和XE汽车CVT是一种变速器,它使用液力变矩器代替传统的机械变速器,以达到更高的效率。它的工作原理是,当发动机输出功率时,液力变矩器就会将这些功率转换为液压能量,然后将能量传递到变速器的输出轴上,从而实现变速。…

    2023-04-09 00:41:04
    0 93 83

发表评论

登录 后才能评论

评论列表(83条)