Android如何调用外置摄像头
发表于:2025-01-19 作者:千家信息网编辑
千家信息网最后更新 2025年01月19日,这篇文章主要介绍了Android如何调用外置摄像头的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Android如何调用外置摄像头文章都会有所收获,下面我们一起来看看吧。1
千家信息网最后更新 2025年01月19日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安全错误
数据库的锁怎样保障安全
无锡电商软件开发标志
GISAlD数据库
网络安全高校巡展
网络安全博览会举行参观成都
万方数据库可以批量下载吗
网络安全警告图片
经典数据库面试题
网络安全主题推荐
倩女幽魂服务器不存在了
复古传奇怎么加入服务器
数据库的岗位有哪些
数据库服务器属于什么资产分类
无服务器
java 数据库异常信息
经济对计算机网络技术的作用
大众网络安全技术
html5 操作数据库
苹果手机服务器地址和端口号
服务器安全员 总结
oracle怎么查找多个数据库
科迅软件开发
2020网络安全培训考试答案
畅捷链接服务器失败什么原因
河南率臣网络技术有限公司
华为服务器怎么查序列号
网络技术大专好找工作吗
怎么看网络有没有连接到服务器
湖南文理学院网络安全考试
管理员服务器地址
qt的数据库能存放什么