参考链接:http://www.linuxidc.com/Linux/2013-11/92892p3.htm

原文链接:http://blog.csdn.net/tangcheng_ok/article/details/7036871

增加使用相机和写入权限:

    <uses-permission android:name="android.permission.CAMERA" /><uses-feature android:name="android.hardware.camera" /><uses-feature android:name="android.hardware.camera.autofocus" /><uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> 

主程序代码:

package com.example.carejulygpsmap;import android.support.v7.app.ActionBarActivity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.Date;  import android.app.Activity;
import android.content.pm.ActivityInfo;
import android.graphics.PixelFormat;
import android.hardware.Camera;
import android.os.AsyncTask;
import android.os.Bundle;
import android.os.Environment;
import android.text.format.DateFormat;
import android.util.Log;
import android.view.KeyEvent;
import android.view.SurfaceHolder;
import android.view.SurfaceView;
import android.view.View;
import android.view.Window;
import android.view.View.OnClickListener;
import android.widget.Button; import android.app.Activity;
import android.content.Intent;
import android.graphics.Bitmap;
import android.net.Uri;
import android.os.Bundle;
import android.os.Environment;
import android.provider.MediaStore;
import android.view.View;
import android.widget.Button;
import android.widget.ImageView;public class CareJulyActivity extends ActionBarActivity {private final static String TAG = "CameraActivity";  private SurfaceView surfaceView;  private SurfaceHolder surfaceHolder;  private Camera camera;  private File picture;  private Button btnSave;  private static final int NONE = 0;private static final int PHOTO_GRAPH = 1;// 拍照private static final int PHOTO_ZOOM = 2; // 缩放private static final int PHOTO_RESOULT = 3;// 结果private static final String IMAGE_UNSPECIFIED = "image/*";private ImageView imageView = null;private Button btnPhone = null;private Button btnTakePicture = null;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);  this.requestWindowFeature(Window.FEATURE_NO_TITLE);  setContentView(R.layout.activity_care_july);  setupViews();
//        imageView = (ImageView) findViewById(R.id.imageView);
//        btnPhone = (Button) findViewById(R.id.btnPhone);
//        btnPhone.setOnClickListener(onClickListener);
//        btnTakePicture = (Button) findViewById(R.id.btnTakePicture);
//        btnTakePicture.setOnClickListener(onClickListener);}//    @Override//src
//  protected void onCreate(Bundle savedInstanceState) {
//      super.onCreate(savedInstanceState);
//      setContentView(R.layout.activity_care_july);
//  }@Override//srcpublic boolean onCreateOptionsMenu(Menu menu) {// Inflate the menu; this adds items to the action bar if it is present.getMenuInflater().inflate(R.menu.care_july, menu);return true;}@Override//srcpublic boolean onOptionsItemSelected(MenuItem item) {// Handle action bar item clicks here. The action bar will// automatically handle clicks on the Home/Up button, so long// as you specify a parent activity in AndroidManifest.xml.int id = item.getItemId();if (id == R.id.action_settings) {return true;}return super.onOptionsItemSelected(item);}//CamCapprivate void setupViews(){  surfaceView = (SurfaceView) findViewById(R.id.camera_preview); // Camera interface to instantiate components  surfaceHolder = surfaceView.getHolder(); // Camera interface to instantiate components  surfaceHolder.addCallback(surfaceCallback); // Add a callback for the SurfaceHolder  surfaceHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);  btnSave = (Button) findViewById(R.id.save_pic);  btnSave.setOnClickListener(new OnClickListener() {  @Override  public void onClick(View v) {  takePic();  }  });  }  @Override  public boolean onKeyDown(int keyCode, KeyEvent event) {  if (keyCode == KeyEvent.KEYCODE_CAMERA  || keyCode == KeyEvent.KEYCODE_SEARCH) {  takePic();  return true;  }  return super.onKeyDown(keyCode, event);  }  private void takePic() {  camera.stopPreview();// stop the preview  camera.takePicture(null, null, pictureCallback); // picture  }  // Photo call back  Camera.PictureCallback pictureCallback = new Camera.PictureCallback() {  //@Override  public void onPictureTaken(byte[] data, Camera camera) {  new SavePictureTask().execute(data);  camera.startPreview();  }  };  // save pic  //保存图片,不过保存的图片较小,保存在根目录 的wishchin文件夹里面class SavePictureTask extends AsyncTask<byte[], String, String> {  @Override  protected String doInBackground(byte[]... params) {  String fname = DateFormat.format("yyyyMMddhhmmss", new Date()).toString()+".jpg";  Log.i(TAG, "fname="+fname+";dir="+Environment.getExternalStorageDirectory());  //picture = new File(Environment.getExternalStorageDirectory(),fname);// create file  picture = new File(Environment.getExternalStorageDirectory()+"/wishchin/"+fname);  try {  FileOutputStream fos = new FileOutputStream(picture.getPath()); // Get file output stream  fos.write(params[0]); // Written to the file  fos.close();   } catch (Exception e) {  e.printStackTrace();  }  return null;  }  }  // SurfaceHodler Callback handle to open the camera, off camera and photo size changes  SurfaceHolder.Callback surfaceCallback = new SurfaceHolder.Callback() {  public void surfaceCreated(SurfaceHolder holder) {  Log.i(TAG, "surfaceCallback====");  camera = Camera.open(); // Turn on the camera  try {  camera.setPreviewDisplay(holder); // Set Preview  } catch (IOException e) {  camera.release();// release camera  camera = null;  }  }  public void surfaceChanged(SurfaceHolder holder, int format, int width,  int height) {  Log.i(TAG,"====surfaceChanged");  Camera.Parameters parameters = camera.getParameters(); // Camera parameters to obtain  parameters.setPictureFormat(PixelFormat.JPEG);// Setting Picture Format
//          parameters.set("rotation", 180); // Arbitrary rotation  camera.setDisplayOrientation(0);
//          parameters.setPreviewSize(400, 300); // Set Photo Size  camera.setParameters(parameters); // Setting camera parameters  camera.startPreview(); // Start Preview  }  public void surfaceDestroyed(SurfaceHolder holder) {  Log.i(TAG,"====surfaceDestroyed");  camera.stopPreview();// stop preview  camera.release(); // Release camera resources  camera = null;  }  };
}

界面代码:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"  android:layout_width="fill_parent"  android:layout_height="fill_parent"  android:orientation="vertical" >  <android.view.SurfaceViewandroid:id="@+id/camera_preview"android:layout_width="462dp"android:layout_height="534dp"android:layout_alignParentTop="true"android:layout_centerInParent="true"android:layout_gravity="center_vertical|center_horizontal" /><Button  android:id="@+id/save_pic"  android:layout_width="fill_parent"  android:layout_height="wrap_content"  android:text="txt_save" />  </LinearLayout> 

Android开发之拍照功能实现相关推荐

  1. Android添加拍照功能,Android开发实现拍照功能的方法实例解析

    本文实例讲述了Android开发实现拍照功能的方法.分享给大家供大家参考,具体如下: 解析: 1)判断是否有摄像头checkCameraHardware(this) 2)获得相机camera = Ca ...

  2. android实现相机功能,Android开发实现拍照功能的方法实例解析

    本文实例讲述了Android开发实现拍照功能的方法.分享给大家供大家参考,具体如下: 解析: 1)判断是否有摄像头checkCameraHardware(this) 2)获得相机camera = Ca ...

  3. Android开发之拍照功能实现(附源码)

    大家好,这是一个简单的拍照功能,很简单的界面,一个显示图像区域SurfaceView一个"拍照"按钮.直接上代码! 1.CameraDemoActivity.java(主界面) p ...

  4. Android开发 Camera2开发_1_拍照功能开发

    Android开发 Camera2开发_1_拍照功能开发 介绍 google已经在Android5.1之后取消了对Camera1的更新,转而提供了功能更加强大的Camera2.虽然新版本依然可以使用C ...

  5. android程序设计拍照,Android编程实现拍照功能的2种方法分析

    本文实例讲述了Android编程实现拍照功能的2种方法.分享给大家供大家参考,具体如下: Android系统的照相功能,已实现2种方法,可供大家参考: 1. 调用系统摄像头来拍照 首先,找到Andro ...

  6. 怎么用程序实现调用Android手机的拍照功能

    怎么用程序实现调用Android手机的拍照功能 转载于:https://blog.51cto.com/1553021/643408

  7. android 静默拍照功能,Android实现静默拍照功能

    本文实例为大家分享了Android实现静默拍照功能的具体代码,供大家参考,具体内容如下 1.申请权限(6.0以后要动态申请) 2.创建相机工具类 CameraPreview: public class ...

  8. android 三星调用拍照功能吗,Android 开发手机(三星)拍照应用照片旋转问题解决办法...

    Android 开发手机(三星)拍照应用照片旋转问题解决办法 最近解决了一个令我头疼好久的问题,就是三星手机拍照图片旋转的问题,项目中有上传图片的功能,那么涉及到拍照,从相册中选择图片,别的手机都ok ...

  9. android 打开相机拍照功能吗,Android调用相机实现拍照功能

    引言 在Android开发中相信大家都会遇到修改用户头像的问题,用户信息常常包含用户头像,一般流程为:默认头像-->用户修改(拍照/相册选择)-->保存头像图片. 本期我们就来实现调用系统 ...

最新文章

  1. 你只使用到了 VS Code 20% 的功能?让 VS Code 首著作者带你玩转 VS Code!
  2. Redis重新连接弹性
  3. “汇新杯”新兴科技+互联网创新大赛青年创客专项赛决赛
  4. 苹果系统从零开始--MAC OS X 教程1 -- Finder
  5. 清华大学郑莉c++答疑
  6. 数据结构题:由逆置数组方法——逆置线性表L的所有元素
  7. 全国计算机一级12月考试答案,12月到12月全国高校计算机等级考试(广西考区)一级笔试真题及答案...
  8. 使用 ESLint 禁止项目导入特定模块
  9. 线性表的顺序存储结构--数组(顺序表)、栈、队列
  10. NGINX 自动列目录
  11. vulkan sdk 下载地址
  12. 行为主义心理学在游戏领域的10年发展
  13. HTML+CSS期末大作业:家乡旅游网站设计——山东菏泽(6页) 简单个人网页设计作业 静态HTML旅行主题网页作业 DW个人网站模板下载 大学生简单个人网页作品代码
  14. 求解-----组合优化问题
  15. 计算机链接投影仪后不显示桌面,win10系统连接投影后不显示桌面图标怎么办
  16. 如何下载B站视频,解决视频没有声音/音画分离问题(IDM+Potplayer)
  17. HTML+CSS整理大全
  18. JavaScript进阶-高级特性及ES6
  19. 英文中常见连读规律总结
  20. Hyper-V共享主机磁盘 2021-12-10

热门文章

  1. DataBinding 学习系列(2)详解DataBinding在xml中的使用
  2. 产品经理常用工具有哪些?哪些产品经理工具最有用?
  3. DeepMind开源面向对象的机器学习库Sonnet,请与TF配合服用
  4. XML文件中的CDATA的使用.
  5. UITableView加载几种不同的cell
  6. 处理上百万条的数据库如何提高处理查询速度
  7. iphone网络交互json实现
  8. Python的小特别
  9. 【bzoj1726/Usaco2006 Nov】Roadblocks第二短路——SPFA
  10. Apache+PHP环境搭建