• Android 6.0 闪光灯的使用


    Android6.0 已经抛弃了Camer 相关的API,改用新的API接口CamerManager,下面给出使用的简单实例

    package com.inper.duqiang.slashlight;
    
    
    import android.app.Activity;
    import android.content.Context;
    import android.hardware.Camera;
    import android.hardware.camera2.CameraAccessException;
    import android.hardware.camera2.CameraManager;
    import android.os.Build;
    import android.os.Bundle;
    import android.util.Log;
    import android.view.View;
    import android.widget.Button;
    import android.widget.CompoundButton;
    import android.widget.ToggleButton;
    
    
    public class MainActivity extends Activity {
    
        private CameraManager manager;
        private Camera camera = null;
        private Camera.Parameters parameters = null;
        public static boolean kaiguan = true; // 定义开关状态,状态为false,打开状态,状态为true,关闭状态
    
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            super.onCreate(savedInstanceState);
    
            manager = (CameraManager) getSystemService(Context.CAMERA_SERVICE);
    
            try {
                String [] camerList = manager.getCameraIdList();
                for (String str:camerList
                     ) {
                    Log.d("List",str);
                }
            } catch (CameraAccessException e) {
                Log.e("error",e.getMessage());
            }
            Button open_btn = (Button) findViewById(R.id.open_btn);
    
            open_btn.setOnClickListener(new View.OnClickListener() {
    
                @Override
                public void onClick(View view) {
                    if (isLOLLIPOP()) {
                        try {
                            manager.setTorchMode("0", true);
                        } catch (CameraAccessException e) {
                            e.printStackTrace();
                        }
                    }
                }
            });
    
            Button close_btn = (Button) findViewById(R.id.close_btn);
            close_btn.setOnClickListener(closeOnClickListener);
    
            ToggleButton toggle_btn = (ToggleButton) findViewById(R.id.toggle_btn);
            toggle_btn.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
                @Override
                public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
                    try {
                        manager.setTorchMode("1", isChecked);
                    } catch (CameraAccessException e) {
                        e.printStackTrace();
                    }
                }
            });
        }
    
        private View.OnClickListener closeOnClickListener = new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                if (isLOLLIPOP()) {
                    try {
                        manager.setTorchMode("0", false);
                    } catch (CameraAccessException e) {
                        e.printStackTrace();
                    }
                }
            }
        };
        /**
         * 判断Android系统版本是否 >= LOLLIPOP(API21)
         *
         * @return boolean
         */
        private boolean isLOLLIPOP() {
            if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
                return true;
            } else {
                return false;
            }
        }
    }

    Layout的布局

    <?xml version="1.0" encoding="utf-8"?>
    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        android:id="@+id/activity_main"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:paddingBottom="@dimen/activity_vertical_margin"
        android:paddingLeft="@dimen/activity_horizontal_margin"
        android:paddingRight="@dimen/activity_horizontal_margin"
        android:paddingTop="@dimen/activity_vertical_margin"
        tools:context="com.inper.duqiang.slashlight.MainActivity">
    
        <ToggleButton
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:id="@+id/toggle_btn"/>
        <Button
            android:layout_below="@+id/toggle_btn"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="打开闪光灯"
            android:id="@+id/open_btn"/>
        <Button
            android:layout_below="@+id/toggle_btn"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_toRightOf="@+id/open_btn"
            android:text="关闭闪光灯"
            android:id="@+id/close_btn"/>
    </RelativeLayout>

     Anf文件

    <?xml version="1.0" encoding="utf-8"?>
    <manifest xmlns:android="http://schemas.android.com/apk/res/android"
        package="com.inper.duqiang.slashlight">
    
        <!-- 打开Camera的权限 -->
        <uses-permission android:name="android.permission.CAMERA" />
        <uses-feature android:name="android.hardware.camera" />
        <uses-feature android:name="android.hardware.autofocus" />
    
        <!-- 开启闪光灯权限 -->
        <uses-permission android:name="android.permission.FLASHLIGHT" />
    
        <application
            android:allowBackup="true"
            android:icon="@mipmap/ic_launcher"
            android:label="@string/app_name"
            android:supportsRtl="true"
            android:theme="@style/AppTheme">
            <activity android:name=".MainActivity">
                <intent-filter>
                    <action android:name="android.intent.action.MAIN" />
    
                    <category android:name="android.intent.category.LAUNCHER" />
                </intent-filter>
            </activity>
        </application>
    
    </manifest>
  • 相关阅读:
    sublime text 4 vim 插件配置
    ssh-keygen 的使用
    distribution transaction solution
    bilibili 大数据 视频下载 you-get
    Deepin 20.2.1 安装 MS SQL 2019 容器版本
    【转】使用Linux下Docker部署MSSQL并加载主机目录下的数据库
    【转】You Can Now Use OneDrive in Linux Natively Thanks to Insync
    dotnet 诊断工具安装命令
    Linux 使用 xrandr 设置屏幕分辨率
    【转】CentOS 7.9 2009 ISO 官方原版镜像下载
  • 原文地址:https://www.cnblogs.com/forbeat/p/5955816.html
Copyright © 2020-2023  润新知