Android多媒体之相机Camera
这是布局整体预览图
layout布局文件夹中activity_main.xml
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"tools:context="${relativePackage}.${activityClass}" ><Button
android:id="@+id/take_b"android:layout_width="match_parent"android:layout_height="wrap_content"android:text="点击拍照" /><SurfaceView
android:id="@+id/surfaceView1"android:layout_width="match_parent"android:layout_height="wrap_content"android:layout_alignParentBottom="true"android:layout_below="@+id/take_b" /><ImageView android:id="@+id/img"android:layout_width="70dp"android:layout_height="70dp"android:layout_alignParentBottom="true"android:background="#0000FF"/></RelativeLayout>
MainActivity.java中源程序
package com.zhidi.stucamera;import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;import android.app.Activity;
import android.graphics.drawable.Drawable;
import android.hardware.Camera;
import android.hardware.Camera.Parameters;
import android.hardware.Camera.PictureCallback;
import android.os.AsyncTask;
import android.os.Bundle;
import android.os.Environment;
import android.view.SurfaceHolder;
import android.view.SurfaceHolder.Callback;
import android.view.SurfaceView;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.ImageView;public class MainActivity extends Activity implements OnClickListener{private Button take_b;private ImageView img;private SurfaceView surface;private Camera camera;private String fname;private SurfaceHolder holder;private final String SDCARD_HOME = Environment.getExternalStorageDirectory()+File.separator;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);init();initEvent();}@Overridepublic void onClick(View v) {switch (v.getId()) {case R.id.take_b:camera.takePicture(null, null, new PictureCallback() {@Overridepublic void onPictureTaken(byte[] data, Camera camera) {new MyAsyncTask().execute(data);camera.startPreview();}});break;default:break;}}class MyCallback implements Callback{@Overridepublic void surfaceCreated(SurfaceHolder holder) {//打开摄像头camera = Camera.open();//设置摄像头预览角度camera.setDisplayOrientation(90);try {//设置摄像头预览显示器camera.setPreviewDisplay(holder);} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}//开始预览camera.startPreview();}@Overridepublic void surfaceChanged(SurfaceHolder holder, int format, int width,int height) {//获得摄像头参数Parameters p = camera.getParameters();//设置摄像头参数camera.setParameters(p);//开始预览camera.startPreview();}@Overridepublic void surfaceDestroyed(SurfaceHolder holder) {//释放摄像头camera.release();camera = null;}}//自定义异步保存图片类class MyAsyncTask extends AsyncTask<byte[], String, String>{@Overrideprotected String doInBackground(byte[]... params) {byte[] param = params[0];fname = SDCARD_HOME+"IMG"+System.currentTimeMillis()+".jpg";File file = new File(fname);try {FileOutputStream out = new FileOutputStream(file);out.write(param);out.flush();out.close();return "OK";} catch (FileNotFoundException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}return null;}@Overrideprotected void onPostExecute(String result) {Drawable drawable = Drawable.createFromPath(fname);img.setImageDrawable(drawable);super.onPostExecute(result);}}private void init(){take_b = (Button) findViewById(R.id.take_b);img = (ImageView) findViewById(R.id.img);surface = (SurfaceView) findViewById(R.id.surfaceView1);holder = surface.getHolder();}private void initEvent(){take_b.setOnClickListener(this);holder.addCallback(new MyCallback());}
}
在AndroidManifest.xml文件中注册必要的权限
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"package="com.zhidi.stucamera"android:versionCode="1"android:versionName="1.0" ><!-- 调用摄像头功能 --><uses-feature android:name="android.hardware.camera" /><!-- 调用自动对焦功能 --><uses-feature android:name="android.hardware.camera.autofocus" /><!-- 设置允许拍照的权限--><uses-permission android:name="android.permission.CAMERA" /><!-- SD卡创建与删除文件权限--><uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" /><!-- 配置SD卡权限--><uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /><uses-sdk
android:minSdkVersion="14"android:targetSdkVersion="20" /><application
android:allowBackup="true"android:icon="@drawable/ic_launcher"android:label="@string/app_name"android:theme="@style/AppTheme" ><activity
android:name=".MainActivity"android:label="@string/app_name" ><intent-filter><action android:name="android.intent.action.MAIN" /><category android:name="android.intent.category.LAUNCHER" /></intent-filter></activity></application></manifest>
Android多媒体之相机Camera相关推荐
- Android平台美颜相机/Camera实时滤镜/视频编解码/影像后期/人脸技术探索——1.1 工程思路与难点
回到目录 本文主要探讨搭建一款Android平台下美颜相机可能需要填的坑,内容会不断更新.. 相机框架 相机框架相对比较简单,现有的开源代码很多,可以很容易的实现拍照和录像的功能. 预览尺寸选择 预览 ...
- Android简单调用相机Camera功能,实现打开照相功能
在最开始接触Android相机功能之前,先来体验一下Android调用系统照相功能吧 核心代码 Intent intent = new Intent(); //调用照相机 intent.setActi ...
- Android平台美颜相机/Camera实时滤镜/视频编解码/影像后期/人脸技术探索——目录
Github项目地址 缘起 不知道什么时候开始,朋友圈和好友动态里突然充斥着大量脸部贴纸.恶搞效果,以及各种美颜过度的大头照. 这很正常嘛,我想,女生发照片当然要大个眼瘦个脸啊,直到我看到了男生也发了 ...
- Android平台美颜相机/Camera实时滤镜/视频编解码/影像后期/人脸技术探索——2.3 仿制Snow相机和FaceU的边框/小脸模式
Github项目地址 回到目录 在体验各种美颜相机时,我发现FaceU和Snow相机都带一个小脸模式(或者边框模式),像这样的效果: 这是Snow相机的: 这是FaceU的: 两个看上去并不一样,因为 ...
- Android平台美颜相机/Camera实时滤镜/视频编解码/影像后期/人脸技术探索——2.4 滤镜以及配套代码的制作方法
Github项目地址 好久没有更新了,不行不行,怎么可以太监呢(`⌒´メ) 滤镜结构 滤镜主要是对于图像的处理,关于一款滤镜的制作方法可以看这里 既然是图像处理,那么滤镜的操作就主要是:卷积.像素映射 ...
- Android平台美颜相机/Camera实时滤镜/视频编解码/影像后期/人脸技术探索——2.2 来一份LOMO滤镜
Github项目地址 回到目录 了解了滤镜的基本知识以后,我们就可以试着来做我们的第一个滤镜了 虽然之前做过一个灰度滤镜,但是是采用直接修改片元着色器代码的方式,非常"不优雅",所 ...
- android camera 显示过程,Android相机Camera基础知识
一.概述本章节主要讲述的Android相机Camera的相关知识点,主要包含三个方面,Android启动系统相机生成缩略图.Android启动系统相机生成原图以及Android自定义相机等. 二.An ...
- android平台下OpenGL ES 3.0使用GLSurfaceView对相机Camera预览实时处理
OpenGL ES 3.0学习实践 android平台下OpenGL ES 3.0从零开始 android平台下OpenGL ES 3.0绘制纯色背景 android平台下OpenGL ES 3.0绘 ...
- android 5 相机,camera fv-5
极致相机Camera FV-5是手机专业相机,一款为安卓手机用户开发的专业摄像软件,让你的手机享受单反的手动操作,手机也成为专业的相机,参数非常多,足以让你拥有单反的感觉. Camera FV-5是一 ...
最新文章
- ElasticSearch(一)ElasticSearch的应用场景及为什么要选择ElasticSearch?
- Java 反射机制学习资料
- linux下产生core文件以及不产生core文件的条件
- Invalid config event received: {version=0, server
- vsco怎么两个滤镜叠加_PS插件 VSCO滤镜137款预设安装使用教程
- php 文件保存函数,php 写入和读取文件函数
- POJ 3537 Nim游戏
- 智能会议系统(35)---深入浅出sip协议
- java笔试之从单向链表中删除指定值的节点
- 数学建模1---基本方法和步骤
- 实用win7桌面小工具
- PMP 考点 第十章 项目沟通管理
- Airtest与夜神模拟器连接
- 浏览器劫持解决:解决浏览器的捆绑问题
- VC浏览器的定制与扩展
- 线性加权平均 c语言程序,【求助】编的一个加权平均分计算程序,总是出错。求高手指点~...
- 极光将赴美上市,哈米宣布倒闭,然:又有8家公司拿到融资!
- Android之——实现应用卸载功能
- 原理图以及vhdl设计一位全加器
- 关于在杭州滨江区租房的一些建议