android实现手机App实现拍照功能示例
发布时间 - 2026-01-10 23:15:14 点击率:次实现手机App实现拍照功能结果如下

第一步:
activity_takephoto.xml布局用SurfaceView
<?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_takephoto"
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.example.android_27.TakephotoActivity">
<SurfaceView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/sv_takephoto"
/>
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="拍照"
android:id="@+id/b_OK"
/>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="切换"
android:id="@+id/b_qh"
/>
</LinearLayout>
</RelativeLayout>
第二步:TakephotoActivity类
public class TakephotoActivity extends AppCompatActivity {
private SurfaceView sv_takephoto;
private Button b_OK;
private Button b_qh;
private Camera camera;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_takephoto);
//获得SurfaceView的ID
sv_takephoto =(SurfaceView) findViewById(R.id.sv_takephoto);
//获得拍照的ID
b_OK =(Button)findViewById(R.id.b_OK);
//获得切换镜头的ID
b_qh =(Button)findViewById(R.id.b_qh);
sv_takephoto.getHolder().addCallback(new SurfaceHolder.Callback() {
@Override
public void surfaceCreated(SurfaceHolder surfaceHolder) {
//打开相机
camera = Camera.open();
//给相机设置参数
Camera.Parameters parameters= camera.getParameters();
//设置保存的格式
parameters.setPictureFormat(PixelFormat.JPEG);
parameters.set("jpeg-quality",85);
camera.setParameters(parameters);
//将画面展示到SurfaceView中
try {
camera.setPreviewDisplay(sv_takephoto.getHolder());
//开启预览
camera.startPreview();
} catch (IOException e) {
e.printStackTrace();
}
}
@Override
public void surfaceChanged(SurfaceHolder surfaceHolder, int i, int i1, int i2) {
}
@Override
public void surfaceDestroyed(SurfaceHolder surfaceHolder) {
}
});
//拍照的点击事件
b_OK.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
//拍照
camera.takePicture(null, null, new Camera.PictureCallback() {
@Override
public void onPictureTaken(byte[] bytes, Camera camera) {
//将字节数组转成图片
Bitmap bitmap= BitmapFactory.decodeByteArray(bytes,0,bytes.length);
try {
FileOutputStream fos=new FileOutputStream("/mnt/sdcard/DCIM/"+System.currentTimeMillis()+".jpg");
bitmap.compress(Bitmap.CompressFormat.PNG,85,fos);
camera.stopPreview();
camera.startPreview();
} catch (FileNotFoundException e) {
e.printStackTrace();
}
}
});
}
});
}
}
第三步:在AndroidManifest.xml中加权限
<uses-permission android:name="android.permission.CAMERA" />
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
# android实现拍照功能
# android
# 实现拍照
# android拍照功能
# Android编程调用系统自带的拍照功能并返回JPG文件示例【附demo源码下载】
# Android自定义相机实现定时拍照功能
# Android使用系统自带的相机实现一键拍照功能
# Android仿微信选择图片和拍照功能
# Android实现手机拍照功能
# Android调用手机拍照功能的方法
# Android启动相机拍照并返回图片
# Android仿微信发表说说实现拍照、多图上传功能
# Android实现从本地图库/相机拍照后裁剪图片并设置头像
# Android手机拍照或选取图库图片作为头像
# Android编程实现拍照功能的2种方法分析
# 第二步
# 第三步
# 转成
# 大家多多
# 中加
# text
# Button
# activity_horizontal_margin
# sv_takephoto
# b_qh
# b_OK
# wrap_content
# context
# paddingTop
# LinearLayout
# paddingRight
# TakephotoActivity
# java
# Bundle
# onCreate
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
Laravel如何安装使用Debugbar工具栏_Laravel性能调试与SQL监控插件【步骤】
黑客入侵网站服务器的常见手法有哪些?
实例解析Array和String方法
如何彻底删除建站之星生成的Banner?
C++时间戳转换成日期时间的步骤和示例代码
大学网站设计制作软件有哪些,如何将网站制作成自己app?
Laravel如何使用API Resources格式化JSON响应_Laravel数据资源封装与格式化输出
小视频制作网站有哪些,有什么看国内小视频的网站,求推荐?
Laravel如何实现API版本控制_Laravel API版本化路由设计策略
Python函数文档自动校验_规范解析【教程】
如何用IIS7快速搭建并优化网站站点?
为什么php本地部署后css不生效_静态资源加载失败修复技巧【技巧】
英语简历制作免费网站推荐,如何将简历翻译成英文?
如何在 React 中条件性地遍历数组并渲染元素
Laravel如何生成和使用数据填充?(Seeder和Factory示例)
Win11怎么设置默认图片查看器_Windows11照片应用关联设置
Laravel如何配置中间件Middleware_Laravel自定义中间件拦截请求与权限校验【步骤】
Linux后台任务运行方法_nohup与&使用技巧【技巧】
Laravel如何实现API速率限制?(Rate Limiting教程)
大连网站制作费用,大连新青年网站,五年四班里的视频怎样下载啊?
Laravel如何实现图片防盗链功能_Laravel中间件验证Referer来源请求【方案】
如何在腾讯云服务器快速搭建个人网站?
js实现点击每个li节点,都弹出其文本值及修改
JavaScript如何操作视频_媒体API怎么控制播放
网站视频制作书签怎么做,ie浏览器怎么将网站固定在书签工具栏?
网站制作企业,网站的banner和导航栏是指什么?
Laravel怎么实现一对多关联查询_Laravel Eloquent模型关系定义与预加载【实战】
jQuery中的100个技巧汇总
韩国网站服务器搭建指南:VPS选购、域名解析与DNS配置推荐
浅析上传头像示例及其注意事项
如何快速生成凡客建站的专业级图册?
高防网站服务器:DDoS防御与BGP线路的AI智能防护方案
iOS发送验证码倒计时应用
Laravel怎么使用Intervention Image库处理图片上传和缩放
详解Oracle修改字段类型方法总结
如何在IIS7中新建站点?详细步骤解析
EditPlus中的正则表达式 实战(1)
Laravel PHP版本要求一览_Laravel各版本环境要求对照
制作公司内部网站有哪些,内网如何建网站?
Laravel项目结构怎么组织_大型Laravel应用的最佳目录结构实践
Laravel怎么实现验证码(Captcha)功能
百度输入法ai组件怎么删除 百度输入法ai组件移除工具
百度输入法ai面板怎么关 百度输入法ai面板隐藏技巧
如何挑选最适合建站的高性能VPS主机?
Laravel Seeder怎么填充数据_Laravel数据库填充器的使用方法与技巧
如何在阿里云虚拟机上搭建网站?步骤解析与避坑指南
教学论文网站制作软件有哪些,写论文用什么软件
?
用v-html解决Vue.js渲染中html标签不被解析的问题
Laravel集合Collection怎么用_Laravel集合常用函数详解
如何用PHP工具快速搭建高效网站?

