使用android.hardware.camera2访问相机

马修·斯坦哈特(Matthew Steinhardt)

我想创建一个应用程序,使我可以控制相机上的闪光灯,但是我对如何执行此操作的研究导致了很多使用最近贬值的android.hardware.cameraapi的示例有人可以向我指出如何androird.hardware.camera2制作一个简单的手电筒应用程序的正确方向吗?

乔舒亚·乔什(Josua Josh)

如果您只想制作一个简单的手电筒应用程序,则应编辑问题。将相机与新的android.hardware.camera2配合使用会更加复杂。

我试图使用android studio和nexus lg 5x制作相机预览应用,但没有成功。

相反,如果您只想打开闪光灯,请使用以下代码:

void torch(){
    /* turn on the flash light */
    CameraManager cameraManager = (CameraManager) getSystemService(Context.CAMERA_SERVICE);
    try {
        String[] cameraID = new String[]{};
        cameraID = cameraManager.getCameraIdList();
        for(int i = 0; i<cameraID.length; i++){
            Log.e(TAG,cameraID[i]);
        }

        /* camera id is 0 and 1. 0 is the back camera, 1 is the front camera */
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
            cameraManager.setTorchMode(cameraID[0],true); 
            //true means turned on, false, means turned off.
        }

    } catch (CameraAccessException e) {
        e.printStackTrace();
    }

}

显现:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.test">
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

<uses-feature android:name="android.hardware.camera" />
<uses-feature android:name="android.hardware.camera.autofocus" />
<uses-feature android:name="android.hardware.camera2.full" />

<application
    android:allowBackup="true"
    android:icon="@mipmap/ic_launcher"
    android:label="@string/app_name"
    android:supportsRtl="true"
    android:theme="@style/MaterialTheme">

    <activity
        android:name=".MainActivity"
        android:screenOrientation="portrait"
        android:label="@string/app_name">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>


</application>

MainActivity.java:

package com.example.test;

import android.app.Activity;
import android.graphics.Camera;
import android.hardware.camera2.params.InputConfiguration;
import android.os.Build;
import android.os.Bundle;

public class MainActivity extends Activity {

private final static String TAG = "Camera2testJ";
private Size mPreviewSize;

private TextureView mTextureView;
private CameraDevice mCameraDevice;
private CaptureRequest.Builder mPreviewBuilder;
private CameraCaptureSession mPreviewSession;

private Button mBtnShot;

private static final SparseIntArray ORIENTATIONS = new SparseIntArray();

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    requestWindowFeature(Window.FEATURE_NO_TITLE);
    getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
    setContentView(R.layout.activity_main);

    mTextureView = (TextureView)findViewById(R.id.texture);
    mTextureView.setSurfaceTextureListener(mSurfaceTextureListener);

    mBtnShot = (Button)findViewById(R.id.btn_takepicture);
    mBtnShot.setOnClickListener(new OnClickListener(){

        @Override
        public void onClick(View v) {
            Log.e(TAG, "mBtnShot clicked");
            torch();
        }

    });

}

void torch(){
    /* try the flash light */
    CameraManager cameraManager = (CameraManager) getSystemService(Context.CAMERA_SERVICE);;
    try {
        String[] cameraID = new String[]{};
        cameraID = cameraManager.getCameraIdList();
        for(int i = 0; i<cameraID.length; i++){
            Log.e(TAG,cameraID[i]);
        }

        /* camera id is 0 and 1. which one is the front or the back camera? */
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
            cameraManager.setTorchMode(cameraID[0],true);
        }

    } catch (CameraAccessException e) {
        e.printStackTrace();
    }

}

布局activity_main.xml:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical" android:layout_width="match_parent"
    android:layout_height="match_parent">

    <TextureView
        android:id="@+id/texture"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_alignParentStart="true"
        android:layout_alignParentTop="true" />

    <Button
        android:id="@+id/btn_takepicture"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:text="@string/picture"
        android:layout_alignParentBottom="true"
        android:layout_centerHorizontal="true" />

</RelativeLayout>

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使用android.hardware.camera2

来自分类Dev

实时查询Android Camera2的相机参数

来自分类Dev

使用 Camera2 API 设置相机变焦

来自分类Dev

使用android.hardware.Camera2进行人脸检测

来自分类Dev

使用android.hardware.Camera2进行人脸检测

来自分类Dev

如何在Fragment上使用android.hardware.camera2?

来自分类Dev

使用Android L和Camera2 API的相机预览图像数据处理

来自分类Dev

我们如何使用android硬件camera2创建后台相机服务

来自分类Dev

react-native 上的 android.hardware.camera2

来自分类Dev

Android JavaCV + Camera2

来自分类Dev

Android Camera2 getPreviewFrame

来自分类Dev

Android Camera2示例

来自分类Dev

如何使用API 19 /参考AppCompat库编译项目以使用android.hardware.Camera?

来自分类Dev

Camera2可以连续访问相机预览图像

来自分类Dev

火炬/手电筒应用程序(不建议使用android.hardware.camera)

来自分类Dev

火炬/手电筒应用程序(不建议使用android.hardware.camera)

来自分类Dev

使用Android camera2获得全屏预览

来自分类Dev

如何使用Android Camera2 API捕获单个图像?

来自分类Dev

Android 5,camera2仅使用闪光灯

来自分类Dev

使用Android Camera2 API在后台捕获视频

来自分类Dev

Android Camera2 API和EXIF

来自分类Dev

Android Camera2捕获歪斜的图像

来自分类Dev

Android Camera2预览被拉伸

来自分类Dev

Android Camera2参数展平

来自分类Dev

Android Camera2 空预览图像

来自分类Dev

错误:包android.hardware.camera2不存在OpenCV

来自分类Dev

函数隔离照相机的LED灯和java.lang.NullPointerException:尝试调用虚拟方法'void android.hardware.Camera $ Parameters

来自分类Dev

我应该为Android使用Camera2还是Camera API?

来自分类Dev

使用Android camera2使用闪光灯进行手动对焦

Related 相关文章

热门标签

归档