Android如何调用外置摄像头
发表于:2025-11-12 作者:千家信息网编辑
千家信息网最后更新 2025年11月12日,这篇文章主要介绍了Android如何调用外置摄像头的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Android如何调用外置摄像头文章都会有所收获,下面我们一起来看看吧。1
千家信息网最后更新 2025年11月12日Android如何调用外置摄像头
这篇文章主要介绍了Android如何调用外置摄像头的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Android如何调用外置摄像头文章都会有所收获,下面我们一起来看看吧。
1、布局文件
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添加用户权限
关于"Android如何调用外置摄像头"这篇文章的内容就介绍到这里,感谢各位的阅读!相信大家对"Android如何调用外置摄像头"知识都有一定的了解,大家如果还想学习更多知识,欢迎关注行业资讯频道。
摄像头
摄像
知识
内容
文件
权限
用户
篇文章
检查
成功
代码
价值
图像
布局
操作简单
文章
日期
时间
易懂
更多
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
服务器密码忘记怎么关机
奉贤区信息化软件开发服务是什么
上海测试软件开发费用
后宫秘史服务器维护好几个小时
天安杯网络安全技能大赛
浙江售后维修管理软件开发
软件开发 vb 手机
网络安全产品优秀奖
网络安全不可忽视600字
sip服务器端口设置北京联通
数据库结构从逻辑上分为
数据库并的定义
网络技术求职函
静安区特殊软件开发技术指导
岳阳it软件开发培训
注意网络安全的英文
机场免费无线网络安全吗
外国数据库排名
网络安全与信息工作座谈会
动态链接数据库修复
指纹机怎么清理之前的数据库
google 代理服务器
南海农商行软件开发岗位职责
我的世界网易手机版官方服务器
软件开发ide 什么意思
bat网络安全谁更强
新型网络技术 知网
数据库安全 公司
数据库主用户
实用网络技术网络考试题库