android拍照功能无预览,Android 无预览拍照
最近得到了一个需求,在后台拍照并保存
public void onTakePhotoClicked() {
final SurfaceView preview = new SurfaceView(this);
SurfaceHolder holder = preview.getHolder();
// deprecated setting, but required on Android versions prior to 3.0
holder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
holder.addCallback(new SurfaceHolder.Callback() {
@Override
//The preview must happen at or after this point or takePicture fails
public void surfaceCreated(SurfaceHolder holder) {
Log.d(TAG, "Surface created");
camera = null;
try {
camera = Camera.open(Camera.CameraInfo.CAMERA_FACING_BACK);
Log.d(TAG, "Opened camera");
try {
camera.setPreviewDisplay(holder);
} catch (IOException e) {
throw new RuntimeException(e);
}
camera.startPreview();
Log.d(TAG, "Started preview");
//延时拍照
ThreadUtils.postOnUiThreadDelayed(new Runnable() {
@Override
public void run() {
Log.e("zgj","开始拍照");
camera.takePicture(null, null, CameraService.this);
}
},5000);
} catch (Exception e) {
if (camera != null)
camera.release();
throw new RuntimeException(e);
}
}
@Override
public void surfaceDestroyed(SurfaceHolder holder) {}
@Override
public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) {}
});
WindowManager wm = (WindowManager)getSystemService(Context.WINDOW_SERVICE);
WindowManager.LayoutParams params = new WindowManager.LayoutParams(
1, 1, //Must be at least 1x1
WindowManager.LayoutParams.TYPE_SYSTEM_OVERLAY,
0,
//Don't know if this is a safe default
PixelFormat.UNKNOWN);
//Don't set the preview visibility to GONE or INVISIBLE
wm.addView(preview, params);
}
@Override
public void onPictureTaken(byte[] bytes, Camera camera) {
Log.e("zgj", "拍照结束");
File pictureDir = Environment.getExternalStorageDirectory();
if (pictureDir == null) {
Log.d("zgj",
"Error creating media file, check storage permissions!");
return;
}
try {
String pictureName = "ssss.png";
File file = new File(pictureDir + "/pic/");
if (!file.exists()) {
file.mkdir();
}
file = new File(pictureDir + "/pic/" + pictureName);
FileOutputStream fos = new FileOutputStream(file);
fos.write(bytes);
fos.close();
} catch (FileNotFoundException e) {
Log.d("zgj", "File not found: " + e.getMessage());
} catch (IOException e) {
Log.d("zgj", "Error accessing file: " + e.getMessage());
}
}
android拍照功能无预览,Android 无预览拍照相关推荐
- Android打电话功能权限报错,Android实现简单的拨号器功能
简易拨号器的制作方法,具体如下 一.布局构造 android:layout_width="match_parent" android:layout_height="mat ...
- mix2s android p功能,小米MIX2S升级Android P教程 小米mix2s安卓9.0下载地址
原标题:小米MIX2S升级Android P教程 小米mix2s安卓9.0下载地址 谷歌今天正式开启了Android P的测试,如果没多大问题的话就是之后会发布的Android 9.0了,比较惊喜的是 ...
- android 发帖功能,GitHub - qiaop/android-post: Android图文发帖与浏览
Android图文发帖与浏览 简述 很多的社交类项目中都有类似论坛的发帖功能,在探索了很多的实现方式之后找到了一种最为简单的实现. 功能非常丰富,核心文件只有5个: RichEditor.java e ...
- android 投票功能,腾讯新闻Android客户端更新 加入投票功能
腾讯近日更新了其应用<腾讯新闻>安卓版,加入了新闻专题,投票两大新功能,同事还优化了用户界面,大家在浏览各类新闻方面又有了新的选择. 新版特点: 1.新闻专题:热门新闻专题呈现,聚合浏览, ...
- android 设置功能,NDK 使用入门 | Android NDK | Android Developers
原生开发套件 (NDK) 是一套工具,使您能够在 Android 应用中使用 C 和 C++ 代码,并提供众多平台库,您可使用这些平台库管理原生 Activity 和访问实体设备组件,例如传感器和触摸 ...
- android ota功能,支持 OTA 更新 | Android 开源项目 | Android Open Source Project
为支持无线下载 (OTA) 更新,引导加载程序必须能够在启动期间访问恢复 RAM 磁盘.如果设备使用未经修改的 AOSP 恢复映像,引导加载程序会读取 misc 分区的前 32 个字节:如果数据与 b ...
- android 新闻功能列表,news: 用Android基本技术实现的新闻App
News App git clone https://github.com/hjzf/news.git 项目描述: 一个Android开发基础学习阶段的新闻App实战项目 开发思路: 设计的缺陷1: ...
- android讨论功能,集成融云Android SDK实现在群聊/讨论组中@人的功能
集成融云Android SDK实现在群聊/讨论组中@人的功能 可以确定的是融云SDK本身不提供@的功能,需要自定义实现. 在实现这个功能时,基本模仿微信的做法: 在列表中显示有人@了你 通知显示有人@ ...
- android日记本功能界面图片,基于android的日记本的设计和开发.ppt
基于android的日记本的设计和开发 基于android的日记本的设计与开发 指导教师:闫宇帅 答辩人:廉若榕 毕业答辩 2014年5月18日 背景 手机的发展给人们的生活带来了极大的便利.以往,我 ...
- android付款功能,Qpay,利用 Android 新特性,把所有付款方式放在一起 | App+1
应用快捷方式(App Shortcuts)是 Android 7.1 引入的众多新特性之一,利用这一特性,我们只需长按应用图标,即可通过在弹出的快捷方式列表进行操作.这一特性类似 iOS 设备上的 3 ...
最新文章
- Spark DataFrameDataSet
- 白话Elasticsearch01- 结构化搜索之使用term query来搜索数据
- Lucene.Net学习
- p怎么调用python的实例属性_Python中类的声明,使用,属性,实例属性,计算属性及继承,重写...
- 关于idea Tomcat部署的一个小坑
- 关于微软的VB和C#:为何Basic需要存在,为何VB如此像C#,为何两者不合并等
- java arraystoreexception_java基础面试
- nodejs应用在linux服务器中的部署
- 智慧能源管理系统解决方案
- Java爬坑--集合(二)List
- iOS 音乐播放 Swift
- 基于微信小程序的自驾旅游管理系统
- 数字孪生开启传统行业数字化转型升级之路
- 多元共线性检测 -- 方差膨胀因子(Python 实现)
- SpringBoot vue电影购票系统 电影院系统
- SQL注入进阶练习(一)一些进阶的注入方法
- 中文的括号和英文的括号区别_小括号、中括号、大括号,英文怎么说?
- Unity Editor修改分辨率
- 极光推送的别名alias和标签tag分别是什么意思
- python车牌识别系统抬杆_小区车牌识别自动抬杆系统安装要求
热门文章
- 可网管交换机的三种管理方式介绍
- 1G、3G都失败了,5G也会失败吗?
- 编写一个watchdog.sh脚本_五大原因!为何要将Jupyter Notebook转换为python脚本?
- 【MFC系列-第21天】GDI算法实战——过渡色
- 卷积码Viterbi译码算法基本原理及C语言实现
- python 字段升序,python 根据两个字段排序, 一个升序, 一个降序
- 64位内核第二讲,进程保护之对象钩子
- canvas绘制多边形
- lnmp pathinfo问题
- C#中FuncT,TResult的用法和Lambda表达式