这是布局整体预览图

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相关推荐

  1. Android平台美颜相机/Camera实时滤镜/视频编解码/影像后期/人脸技术探索——1.1 工程思路与难点

    回到目录 本文主要探讨搭建一款Android平台下美颜相机可能需要填的坑,内容会不断更新.. 相机框架 相机框架相对比较简单,现有的开源代码很多,可以很容易的实现拍照和录像的功能. 预览尺寸选择 预览 ...

  2. Android简单调用相机Camera功能,实现打开照相功能

    在最开始接触Android相机功能之前,先来体验一下Android调用系统照相功能吧 核心代码 Intent intent = new Intent(); //调用照相机 intent.setActi ...

  3. Android平台美颜相机/Camera实时滤镜/视频编解码/影像后期/人脸技术探索——目录

    Github项目地址 缘起 不知道什么时候开始,朋友圈和好友动态里突然充斥着大量脸部贴纸.恶搞效果,以及各种美颜过度的大头照. 这很正常嘛,我想,女生发照片当然要大个眼瘦个脸啊,直到我看到了男生也发了 ...

  4. Android平台美颜相机/Camera实时滤镜/视频编解码/影像后期/人脸技术探索——2.3 仿制Snow相机和FaceU的边框/小脸模式

    Github项目地址 回到目录 在体验各种美颜相机时,我发现FaceU和Snow相机都带一个小脸模式(或者边框模式),像这样的效果: 这是Snow相机的: 这是FaceU的: 两个看上去并不一样,因为 ...

  5. Android平台美颜相机/Camera实时滤镜/视频编解码/影像后期/人脸技术探索——2.4 滤镜以及配套代码的制作方法

    Github项目地址 好久没有更新了,不行不行,怎么可以太监呢(`⌒´メ) 滤镜结构 滤镜主要是对于图像的处理,关于一款滤镜的制作方法可以看这里 既然是图像处理,那么滤镜的操作就主要是:卷积.像素映射 ...

  6. Android平台美颜相机/Camera实时滤镜/视频编解码/影像后期/人脸技术探索——2.2 来一份LOMO滤镜

    Github项目地址 回到目录 了解了滤镜的基本知识以后,我们就可以试着来做我们的第一个滤镜了 虽然之前做过一个灰度滤镜,但是是采用直接修改片元着色器代码的方式,非常"不优雅",所 ...

  7. android camera 显示过程,Android相机Camera基础知识

    一.概述本章节主要讲述的Android相机Camera的相关知识点,主要包含三个方面,Android启动系统相机生成缩略图.Android启动系统相机生成原图以及Android自定义相机等. 二.An ...

  8. 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绘 ...

  9. android 5 相机,camera fv-5

    极致相机Camera FV-5是手机专业相机,一款为安卓手机用户开发的专业摄像软件,让你的手机享受单反的手动操作,手机也成为专业的相机,参数非常多,足以让你拥有单反的感觉. Camera FV-5是一 ...

最新文章

  1. ElasticSearch(一)ElasticSearch的应用场景及为什么要选择ElasticSearch?
  2. Java 反射机制学习资料
  3. linux下产生core文件以及不产生core文件的条件
  4. Invalid config event received: {version=0, server
  5. vsco怎么两个滤镜叠加_PS插件 VSCO滤镜137款预设安装使用教程
  6. php 文件保存函数,php 写入和读取文件函数
  7. POJ 3537 Nim游戏
  8. 智能会议系统(35)---深入浅出sip协议
  9. java笔试之从单向链表中删除指定值的节点
  10. 数学建模1---基本方法和步骤
  11. 实用win7桌面小工具
  12. PMP 考点 第十章 项目沟通管理
  13. Airtest与夜神模拟器连接
  14. 浏览器劫持解决:解决浏览器的捆绑问题
  15. VC浏览器的定制与扩展
  16. 线性加权平均 c语言程序,【求助】编的一个加权平均分计算程序,总是出错。求高手指点~...
  17. 极光将赴美上市,哈米宣布倒闭,然:又有8家公司拿到融资!
  18. Android之——实现应用卸载功能
  19. 原理图以及vhdl设计一位全加器
  20. 关于在杭州滨江区租房的一些建议

热门文章

  1. Golang后台快速开发框架
  2. 小白如何学3D建模?从0到1,学习经验分享
  3. 如何做好软文营销?这3个关键点要记好
  4. JVM原理 | TLAB是什么
  5. 黄家驹--奔跑在理想与诗意的道上
  6. SA1456C HG8245C2 HG8245H华为系列光猫通用教材
  7. mybatisplus解决分页最多500条数据
  8. 2018-8-10-win10-uwp-气泡
  9. 【win10小技巧】解决windows 10睡眠后再唤醒,就会自动关机并重启的问题(仅限Dell)
  10. PHP常见的面试问题