广告
返回顶部
首页 > 资讯 > 移动开发 >Android调用外置摄像头的方法
  • 813
分享到

Android调用外置摄像头的方法

2024-04-02 19:04:59 813人浏览 独家记忆
摘要

本文实例为大家分享了Android调用外置摄像头的具体代码,供大家参考,具体内容如下 1、布局文件 <?xml version="1.0" encoding="utf-8"?&

本文实例为大家分享了Android调用外置摄像头的具体代码,供大家参考,具体内容如下

1、布局文件

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

    <TextureView
        android:id="@+id/textureview"
        android:layout_width="1dp"
        android:layout_height="1dp"/>

    <ImageButton
        android:id="@+id/play"
        android:layout_width="60dp"
        android:layout_height="60dp"
        android:layout_centerHorizontal="true"
        android:layout_alignParentBottom="true"
        android:background="@drawable/ic_launcher_background"
        android:contentDescription="@string/app_name"
        android:layout_marginBottom="10dp"/>

</RelativeLayout>

2、相应的MainActivity.java的主要代码如下

package com.deepreality.takephotowithusbcamera;

import android.Manifest;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.SurfaceTexture;
import android.hardware.Camera;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.TextureView;
import android.view.View;
import android.widget.ImageButton;
import android.widget.Toast;

import com.tbruyelle.rxpermissions2.RxPermissions;

import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.text.SimpleDateFORMat;
import java.util.Date;

public class MainActivity extends AppCompatActivity implements TextureView.SurfaceTextureListener, View.OnClickListener {

    private static final String TAG = MainActivity.class.getSimpleName();
    private Camera mCamera;
    private ImageButton mPlayButton;

    private RxPermissions rxPermissions;
    private int permissionNum;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        rxPermissions = new RxPermissions(MainActivity.this);
        checkUserAllPermissions();

        mPlayButton = (ImageButton) findViewById(R.id.play);
        mPlayButton.setOnClickListener(this);
        ((TextureView) findViewById(R.id.textureview))
                .setSurfaceTextureListener(this);
    }

    private void takePic() {
        if (mCamera != null) {
            //调用抓拍摄像头抓拍
            mCamera.takePicture(null, null, pictureCallback);
        } else {
            Log.e("TAG", "请检查摄像头!");
        }
    }

    private Bitmap mBitmap;
    public Camera.PictureCallback pictureCallback = new Camera.PictureCallback() {

        @Override
        public void onPictureTaken(byte[] data, Camera camera) {
            Log.i("ygy", "onPictureTaken");
            SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");//设置日期格式
            System.out.println(df.format(new Date()));// new Date()为获取当前系统时间
            String picName = df.format(new Date());
            Toast.makeText(getApplicationContext(), "正在保存...", Toast.LENGTH_LONG).show();
            mBitmap = BitmapFactory.decodeByteArray(data, 0, data.length);
            File file = new File("/storage/emulated/0/" + picName + ".jpg");
            try {
                file.createNewFile();
                BufferedOutputStream os = new BufferedOutputStream(new FileOutputStream(file));
                mBitmap.compress(Bitmap.CompressFormat.JPEG, 100, os);
                os.flush();
                os.close();
                Toast.makeText(getApplicationContext(), "图像保存成功", Toast.LENGTH_LONG).show();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }

    };

    @Override
    public void onSurfaceTextureAvailable(SurfaceTexture surface, int width, int height) {
        mCamera = Camera.open(0);
        if (mCamera != null) {
            try {
                mCamera.setPreviewTexture(surface);
                mCamera.startPreview();
            } catch (IOException e) {
                Log.d("TAG", e.getMessage());
            }
        }
    }

    @Override
    protected void onStop() {
        if (mCamera != null) {
            mCamera.stopPreview();
            mCamera.release();
            mCamera = null;
        }
        super.onStop();
    }

    @Override
    public void onSurfaceTextureSizeChanged(SurfaceTexture surface, int width, int height) {

    }

    @Override
    public boolean onSurfaceTextureDestroyed(SurfaceTexture surface) {
        if (mCamera != null) {
            mCamera.stopPreview();
            mCamera.release();
            mCamera = null;
        }
        return false;
    }

    @Override
    public void onSurfaceTextureUpdated(SurfaceTexture surface) {

    }

    @Override
    public void onClick(View v) {
        if (mCamera == null) {
            return;
        }
        takePic();
    }

    
    private void checkUserAllPermissions() {
        rxPermissions
                .requestEach(Manifest.permission.WRITE_EXTERNAL_STORAGE,
                        Manifest.permission.CAMERA
                )
                .subscribe(permission -> {
                    if (permission.granted) {
                    } else if (permission.shouldShowRequestPermissionRationale) {
                    } else {}
                    permissionNum ++;
                    if (permissionNum == 2) {

                    }
                });
    }
}

3、注意在清单文件里AndroidManifest.xml添加用户权限

<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持编程网。

--结束END--

本文标题: Android调用外置摄像头的方法

本文链接: https://www.lsjlt.com/news/144193.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Android调用外置摄像头的方法
    本文实例为大家分享了Android调用外置摄像头的具体代码,供大家参考,具体内容如下 1、布局文件 <xml version="1.0" encoding="utf-8">...
    99+
    2022-11-13
  • Android如何调用外置摄像头
    这篇文章主要介绍了Android如何调用外置摄像头的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Android如何调用外置摄像头文章都会有所收获,下面我们一起来看看吧。布局文件<xml vers...
    99+
    2023-06-29
  • Android相机调用-CameraX【外接摄像头】【USB摄像头】
    Android相机调用有原生的Camera和Camera2,我觉得调用代码都太复杂了,CameraX调用代码简洁很多。 说明文档:https://developer.android.com/jetpack/androidx/releases...
    99+
    2023-10-22
    数码相机 android
  • Android调用手机摄像头的方法
    本文实例为大家分享了Android调用手机摄像头的具体代码,供大家参考,具体内容如下 根据<第一行代码>进行改写: 布局文件,只有一个按钮,和一个Imageview,im...
    99+
    2022-11-13
  • ubuntu调用外接摄像头
    一、ubuntu20.04调用外接摄像头(如果是Ubuntu18.04用melodic放在第二行) 1.检查是否连接摄像头 ls /dev/video* 输出/dev/video0  /dev/video1  /dev/video2  /d...
    99+
    2023-08-31
    ubuntu linux python
  • C#调用USB摄像头的方法
    C#调用USB摄像头使用AForge类库进行开发,供大家参考,具体内容如下 1、AForge安装 右击工程,在管理NuGet程序包中搜索Aforge类库,选择安装,如下图所示 2...
    99+
    2022-11-13
  • Android实现调用摄像头
    应用场景: 在Android开发过程中,有时需要调用手机自身设备的功能,本文侧重摄像头拍照功能的调用。 知识点介绍: 使用权限:调用手机自身设备功能(摄像头拍照功能),应该确保...
    99+
    2022-06-06
    调用 摄像 摄像头 Android
  • yolov5调用usb摄像头及本地摄像头的方法实例
    目录yolov5调用usb摄像头YOLOv5调用本地摄像头总结yolov5 调用 usb 摄像头 文章是在yolov5 v5.0版本的detect.py所修改编写 其他v1.0-v4...
    99+
    2022-11-13
  • Python调用摄像头的方法是什么
    Python调用摄像头的方法可以使用OpenCV库中的VideoCapture类。以下是一个简单的示例代码:```pythonimp...
    99+
    2023-08-18
    Python
  • win10外接摄像头的方法是什么
    连接外接摄像头到Windows 10 上的方法如下:1.首先,确保你的摄像头是兼容Windows 10系统的。查看摄像头的说明书或制...
    99+
    2023-08-21
    win10
  • Android中怎么调用摄像头拍照
    本篇文章给大家分享的是有关Android中怎么调用摄像头拍照,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。第一步,获取权限if (ContextCompat.chec...
    99+
    2023-06-04
  • Android开发教程之调用摄像头功能的方法详解
    本文实例讲述了Android调用摄像头功能的方法。分享给大家供大家参考,具体如下: 我们要调用摄像头的拍照功能,显然 第一步必须加入调用摄像头硬件的权限,拍完照后我们要将图片保...
    99+
    2022-06-06
    程之 调用 方法 摄像 android开发 摄像头 教程 Android
  • win8连接摄像头 win8 摄像头不能用的解决方法
    Win8系统下使用相机应用,提示:此应用需要相应权限才能使用你的摄像头,无法拍摄画面。原因分析:在相机应用里,设置了摄像头的权限为关闭。解决方案: 一、在相机应用中调出超级按钮,选择“设置&rd...
    99+
    2022-06-04
    摄像头 不能用 解决方法
  • 云服务器怎么调用摄像头模式的设置方法
    要使用云服务器来调用摄像头模式的设置方法,需要在云服务器的控制台中添加以下代码: ```php $crawl = getcrawlparams("calibratemode", $server); echo $crawl > 1; ...
    99+
    2023-10-26
    摄像头 模式 服务器
  • 云服务器调用本地摄像头的密码设置方法
    1. 了解云服务器和本地摄像头的连接方式 在开始设置密码之前,首先需要了解云服务器和本地摄像头之间的连接方式。通常情况下,云服务器通过网络连接到本地摄像头,以实现对摄像头的远程访问和控制。 2. 设置本地摄像头的密码 为了保护本地摄像头的...
    99+
    2023-10-27
    摄像头 密码 服务器
  • 云服务器怎么调用摄像头模式设置方法
    要使用云服务器来调用摄像头模式设置方法,您需要以下步骤: 打开摄像头应用程序并登录到其服务器。 点击云主机控制台中的“开发”选项卡,在弹出的新窗口中选择“创建新摄像头”。 在新窗口中,您可以创建不同的摄像头控制器,并选择一个适合您需求的...
    99+
    2023-10-26
    摄像头 模式 服务器
  • 云服务器怎么调用摄像头模式设置方法教程
    首先,需要下载摄像头模式设置的APK文件,可以在官网上找到。 然后,打开摄像头模式设置的程序。在程序的开发者界面中,你可以通过选择“开发者模式”、“网络请求”、“本地存储”等来调整摄像头模式。 在“开发者模式”下,你需要选择“启用云备份”...
    99+
    2023-10-26
    摄像头 模式 服务器
  • 云服务器怎么调用摄像头监控系统设置方法
    要使用云服务器来调用摄像头监控系统,您需要遵循以下步骤: 登录云服务器。 在本例中,您需要先注册一个账户(可以是一个电子邮件地址),然后登录到您的云服务器并设置监控系统。 下载所需的文件。 在本例中,您可能需要下载一个包含摄像头设...
    99+
    2023-10-26
    系统设置 摄像头 服务器
  • Android实现调用手机摄像头录像限制录像时长
    本文实例为大家分享了Android实现调用手机摄像头录像限制录像时长的具体代码,供大家参考,具体内容如下 因为服务器空间有限,所以视频时长必须有所限制。 在xml中先布局一个按钮,点...
    99+
    2022-11-13
  • Android编程实现摄像头临摹效果的方法
    本文实例讲述了Android编程实现摄像头临摹效果的方法。分享给大家供大家参考,具体如下:这篇文章结合本人的开发实例,介绍如何实现摄像头临摹效果,即将摄像头拍摄的画面作为临摹的物体投射到画纸上,用户可以在画纸上继续作画,效果如图1.主要可以...
    99+
    2023-05-30
    android 摄像头 roi
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作