Android-Camera+SurfaceView
Camera相机是属于硬件,每台设备的Camera硬件配置的参数都是不一样的,Camera通常是用来拍照,扫描二维码等等
AndroidManifest.xml配置Camera需要的权限:
<!--
打开相机是很危险的行为,加入权限
-->
<uses-permission android:name="android.permission.CAMERA" />
<uses-feature android:name="android.hardware.camera" />
<uses-feature android:name="android.hardware.autofocus"/> <!-- 保存图片到sdcard外部存储 -->
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
AndroidManifest.xml配置Activity 横屏显示 + 全屏:
<!--
设置横屏显示: android:screenOrientation="landscape"
设置无标题+全屏: android:theme="@android:style/Theme.Black.NoTitleBar.Fullscreen"
-->
<activity android:name=".MyCameraActivity"
android:screenOrientation="landscape"
android:theme="@android:style/Theme.Black.NoTitleBar.Fullscreen"> <intent-filter>
<action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" />
</intent-filter> </activity>
activity_camera.xml布局文件:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"> <SurfaceView
android:id="@+id/surface_view"
android:layout_width="match_parent"
android:layout_height="match_parent" /> <Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="对焦"
android:layout_alignParentBottom="true"
android:onClick="focus"
/> <Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="拍照"
android:layout_alignParentBottom="true"
android:layout_alignParentRight="true"
android:onClick="takepicture"
/> </RelativeLayout>
MyCameraActivity.java
package liudeli.my_media1; import android.app.Activity;
import android.hardware.Camera;
import android.os.Bundle;
import android.os.Environment;
import android.util.Log;
import android.view.SurfaceHolder;
import android.view.SurfaceView;
import android.view.View;
import android.widget.Toast; import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream; public class MyCameraActivity extends Activity { private final String TAG = MySurfaceViewActivity.class.getSimpleName(); /**
* 操作的是SurfaceHolder,所以定义全局变量
*/
private SurfaceHolder surfaceHolder; @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState); setContentView(R.layout.activity_camera); // 获取在布局文件中定义的SurfaceView
SurfaceView surfaceView = findViewById(R.id.surface_view); // 不能直接操作SurfaceView,需要通过SurfaceView拿到SurfaceHolder
surfaceHolder = surfaceView.getHolder(); // 使用SurfaceHolder设置屏幕高亮,注意:所有的View都可以设置 设置屏幕高亮
surfaceHolder.setKeepScreenOn(true); // 使用SurfaceHolder设置把画面或缓存 直接显示出来
surfaceHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS); /**
* 由于要观察SurfaceView生命周期,所以需要设置监听
* 此监听不一样,是addCallback
*
*/
surfaceHolder.addCallback(callback);
} /**
* 定义相机对象
*/
private Camera camera; /**
* 定义SurfaceView监听回调
*/
private SurfaceHolder.Callback callback = new SurfaceHolder.Callback() { /**
* SurfaceView被创建了
* @param holder
*/
@Override
public void surfaceCreated(SurfaceHolder holder) {
/**
* 只有在SurfaceView生命周期方法-->SurfaceView被创建后在打开相机
* 以前我在 onResume 之前去打开相机,结果报错了,所以只有在这里打开相机,才是安全Android-Camera+SurfaceView的更多相关文章
- Android Camera+SurfaceView实现自己定义拍照
对Activity强制横屏,保证预览方向正确. 使用OrientationEventListener监听设备方向.推断竖拍时,旋转照片后再保存.保证竖拍时预览图片和保存后的图片方向一致. 执行效果: ...
- 玩转Android Camera开发(一):Surfaceview预览Camera,基础拍照功能完整demo
杂家前文是在2012年的除夕之夜仓促完成,后来很多人指出了一些问题,琐事缠身一直没有进行升级.后来随着我自己的使用,越来越发现不出个升级版的demo是不行了.有时候就连我自己用这个demo测一些性能. ...
- 【Android】Android Camera原始帧格式转换 —— 获取Camera图像(一)
概述: 做过Android Camera图像采集和处理的朋友们应该都知道,Android手机相机采集的原始帧(RawFrame)默认是横屏格式的,而官方API有没有提供一个设置Camera采集图像的 ...
- 玩转Android Camera开发(二):使用TextureView和SurfaceTexture预览Camera 基础拍照demo
Google自Android4.0出了TextureView,为什么推出呢?就是为了弥补Surfaceview的不足,另外一方面也是为了平衡GlSurfaceView,当然这是本人揣度的.关于Text ...
- android camera setParameters failed 类问题分析总结
在 monkey test 测试中出现了一例 RuntimeException ,即 setParameters failed. LOG显示为:09-01 18:47:17.348 15656 156 ...
- Android Camera 相机程序编写
Android Camera 相机程序编写 要自己写一个相机应用直接使用相机硬件,首先应用需要一个权限设置,在AndroidManifest.xml中加上使用设备相机的权限: <uses-per ...
- Android Camera 使用小结
Android手机关于Camera的使用,一是拍照,二是摄像,由于Android提供了强大的组件功能,为此对于在Android手机系统上进行Camera的开发,我们可以使用两类方法:一是借助Inten ...
- Android Camera开发:使用TextureView和SurfaceTexture预览Camera 基础拍照demo
Google自Android4.0出了TextureView,为什么推出呢?就是为了弥补Surfaceview的不足,另外一方面也是为了平衡GlSurfaceView,当然这是本人揣度的.关于Text ...
- Android Camera 流程梳理
毕业已经快两年了,一直没有写博客的习惯,这是第一篇,以后要慢慢养成这个习惯.毕业之后一直在做相机,先简单的梳理下Android Camera的流程. Android Camera 是一个client/ ...
- Android Camera开发系列(下)——自定义Camera实现拍照查看图片等功能
Android Camera开发系列(下)--自定义Camera实现拍照查看图片等功能 Android Camera开发系列(上)--Camera的基本调用与实现拍照功能以及获取拍照图片加载大图片 上 ...
随机推荐
- DllMain 用法
1.1 DllMain简介 跟exe有个main或者WinMain入口函数一样,DLL也有一个入口函数,就是DllMain.以“DllMain”为关键字,来看看MSDN帮助文档怎么介绍这个函数的. ...
- 利用VMware在虚拟机上安装Zookeeper集群
http://blog.csdn.net/u010246789/article/details/52101026 利用VMware在虚拟机上安装Zookeeper集群 pasting
- 微博短链接的生成算法(Java版本)
最近看到微博的短链接真是很火啊,新浪.腾讯.搜狐等微博网站都加入了短链接的功能.之所以要是使用短链接,主要是因为微博只允许发140 字,如果链接地址太长的话,那么发送的字数将大大减少.短链接的主要职责 ...
- ACM-ICPC 2018全国邀请赛(陕西西安)
一.火车晚点 星期五下午4.36的火车,我们3点到了长沙火车站.差不多4点了,提示,晚点1h45min,DZC马上说,不知道会不会延误郑州到西安的那趟车.过了一会,又提示,晚点2h17min,再过一会 ...
- jquery文件的引入
上节课说到,一般情况下,是库的文件,该库中都会抛出来构造函数或者对象 ,如果是构造函数,那么创建对象,如果是对象直接调用属性和方法 使用jquery第一步,先引入jquery,然后再写相应的jquer ...
- 原生态Vim使用快捷键
我的第一篇博客,凌晨2点加班不想睡,随便写点.本人菜鸟一个,努力学习,争取成为大神.. 第一篇写点什么东西呢,我目前是搞运维的,俗话说"工欲善其事必先利其器",Vim作为最基本的工 ...
- 725. Split Linked List in Parts
▶ 将一个单链表拆分为长度尽量接近的 k 段 ● 自己的代码,12 ms ■ 记链表长度为 count,目标段数为 k,quo = count / k,mod = count % k,part = m ...
- maven 编译解决jdk 版本问题
1.在父工程中pom 添加版本限制: <plugins> <plugin> <groupId>org.apache.maven.plugins</groupI ...
- tr th td
<table> <caption></caption> <thead> <tr> & ...
- S导入部门数据 更新父部门、责任人
导入部门数据分两步骤,EXCEL模板可以一样 一.导入部门主数据,导入时选择INSERT (注意以下还有问题,父区域会自动带出一个值) [Public] ConnectString=host=&quo ...