一.拍照

1.设置使用相机权限

  为了让用户知道我们的应用需要依赖相机,在Manifest清单文件中添加<uses-feature>标签:

<manifest ... ><uses-feature android:name="android.hardware.camera"android:required="true" />...
</manifest>

  当然我们有必要在使用相机之前通过调用hasSystemFeature(PackageManager.FEATURE_CAMERA)方法来检查设备上是否有相机。如果没有,我们应该禁用和相机相关的功能!

  此外还需要保证我们有使用Camera的权限:

<uses-permission android:name="android.permission.CAMERA2" />
或者:
<uses-permission android:name="android.permission.CAMERA" />

2.使用相机应用程序进行拍照

  实现拍照执行Intent对象实现:

static final int REQUEST_IMAGE_CAPTURE = 1;private void dispatchTakePictureIntent() {Intent takePictureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);if (takePictureIntent.resolveActivity(getPackageManager()) != null) {startActivityForResult(takePictureIntent, REQUEST_IMAGE_CAPTURE);}
}

  下面是简单实现调用相机拍照并且将拍照结构显示在ImageView的实现代码:

package com.example.hp.photointent;import android.content.Intent;
import android.graphics.Bitmap;
import android.provider.MediaStore;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.ImageView;public class MainActivity extends AppCompatActivity implements View.OnClickListener {static final int REQUEST_IMAGE_CAPTURE = 1;private ImageView mImageView;private Button btn_take_photo;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);init();}void init(){mImageView=(ImageView)findViewById(R.id.imageView1);btn_take_photo=(Button)findViewById(R.id.btn_take_photo);btn_take_photo.setOnClickListener(this);}@Overridepublic void onClick(View view) {switch( view.getId()){case R.id.btn_take_photo:dispatchTakePictureIntent();break;default:break;}}  //Android的相机应用会把拍好的照片编码为缩小的Bitmap,使用extra value的方式添加到返回的Intent当中  //并传送给onActivityResult(),对应的Key为"data"。@Overrideprotected void onActivityResult(int requestCode, int resultCode, Intent data) {if (requestCode == REQUEST_IMAGE_CAPTURE && resultCode == RESULT_OK) {Bundle extras = data.getExtras();Bitmap imageBitmap = (Bitmap) extras.get("data");mImageView.setImageBitmap(imageBitmap);}}//调用拍照Intentprivate void dispatchTakePictureIntent() {Intent takePictureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);if (takePictureIntent.resolveActivity(getPackageManager()) != null) {startActivityForResult(takePictureIntent, REQUEST_IMAGE_CAPTURE);}}
}

二.录像

  首先跟拍照一样需要获取相机权限,类似的,我们也是使用Intent对象来打开系统内置程序来录制视频。

static final int REQUEST_VIDEO_CAPTURE = 1;private void dispatchTakeVideoIntent() {Intent takeVideoIntent = new Intent(MediaStore.ACTION_VIDEO_CAPTURE);if (takeVideoIntent.resolveActivity(getPackageManager()) != null) {startActivityForResult(takeVideoIntent, REQUEST_VIDEO_CAPTURE);}
}

  Android的相机程序会把指向视频存储地址的URL添加到Intent中,所以我们可以通过返回的Idata来查看视频。

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {if (requestCode == REQUEST_VIDEO_CAPTURE && resultCode == RESULT_OK) {Uri videoUri = intent.getData();mVideoView.setVideoURI(videoUri);}
}

  

转载于:https://www.cnblogs.com/slothccc/p/7404676.html

Android 多媒体------相机相关推荐

  1. Android多媒体之GLES2战记第四集--移形换影

    视野限制了人对这个宇宙的认知,但没有视野,人将会一无所知 上集说到勇者坠入黑暗之渊,凭借对世界的认知构建出了世界系 到此为止,OpenGL的世界观已经映入脑海,新手十二副本已经通过 接下来等待他们的将 ...

  2. Android 多媒体之音频----(日积月累)

    在开发上,习惯的将音频.视频功能的使用称之为多媒体,实际上如果讲的宽泛一些的话,相机的使用,比如拍照,录制视频等,也可以划分到多媒体的范畴里面. 从本节课开始,我们就来看看Android中多媒体的AP ...

  3. 《android多媒体api》之MediaRecorder音视频录制api

    <android多媒体api>系列是整合梳理android开发中经常用到的媒体相关api:多媒体开发主要内容有音频.视频录制播放.摄像头操作.录制操作.流媒体.直播.推流.拉流等方面:最近 ...

  4. 《android多媒体api》之MediaPlayer自定义视频播放器

    <android多媒体api>系列是整合梳理android开发中经常用到的媒体相关api:多媒体开发主要内容有音频.视频录制播放.摄像头操作.录制操作.流媒体.直播.推流.拉流等方面:最近 ...

  5. 《android多媒体api》之AudioTrack原始音频pcm播放api

    <android多媒体api>系列是整合梳理android开发中经常用到的媒体相关api:多媒体开发主要内容有音频.视频录制播放.摄像头操作.录制操作.流媒体.直播.推流.拉流等方面:最近 ...

  6. 《android多媒体api》之VideoView 视频播放控件

    <android多媒体api>系列是整合梳理android开发中经常用到的媒体相关api:多媒体开发主要内容有音频.视频录制播放.摄像头操作.录制操作.流媒体.直播.推流.拉流等方面:最近 ...

  7. 《android多媒体api》之AudioRecord原始音频pcm录制api

    <android多媒体api>系列是整合梳理android开发中经常用到的媒体相关api:多媒体开发主要内容有音频.视频录制播放.摄像头操作.录制操作.流媒体.直播.推流.拉流等方面:最近 ...

  8. Android多媒体之GL-ES战记第二集--谜团立方

    上集回顾 旁白:上集说到,为了获取黑龙宝藏,勇者集结,共闯黑龙洞穴 经过一路艰辛,终于过了第四副本,前面还有什么困难等待着他们?一起收看 第五副本:龙之图阵 1.第一关卡:画一个矩形 NPC:隐藏任务 ...

  9. [Android多媒体二]调用系统录音机录音并存储到指定位置,适配安卓 7.0

    接上一篇文章,[Android多媒体一]调用系统相机拍照并存储到指定位置,适配安卓 7.0 本文讲述如何调用系统录音机,完成录音后,对录音进行指定位置的保存. 一.开始编写 首先,还是理清一下思路,在 ...

最新文章

  1. Linux多任务编程之五:exit()和_exit()函数(转)
  2. Python 全栈开发 -- 开发环境篇
  3. 使用JavaScript在下拉列表中获取选定的值
  4. 半阈值化的应用说明及利用函数threshold实现半阈值化的方法
  5. Another approach to enable table edit in SE16
  6. 实例变量和静态变量(或类变量static)
  7. 英国电信前掌门韦华恩出任阿尔卡特朗讯CEO
  8. phoneGap 中修改生成APP的名字
  9. linux申请cache和释放cache,Linux--- 手工释放系统cache
  10. 【Matlab学习笔记】【数学形态学】分水岭分割算法
  11. 我就是认真:Linux SWAP 深度解读(必须收藏)
  12. PIC中档单片机汇编指令详解(2)
  13. EasyUI 中自定义组件 icon 图标
  14. Mac修改文件名的颜色
  15. 【Python】WARNING: The script xx.exe is installed in xxdirectory which is not on PATH.
  16. 微信运营——利用python自动加微信(通往销冠之路)
  17. 主流DDR2内存芯片编号解析
  18. mt4 python神经网络_用Python写MT4自动交易策略来炒外汇
  19. 不夸张地说,这是我见过最通俗易懂的,pytest入门基础教程
  20. 马斯克76岁父亲与继女生子,华强北又出一个芯片IPO,原蚂蚁副总投身AI制药,今日更多大新闻在此...

热门文章

  1. 嵌入式中单任务程序典型架构
  2. 各种ARM仿真器接口图
  3. 以指针的形式和以下标的形式访问指针?以指针的形式和以下标的形式访问数组?
  4. 数据恢复软件extundelete介绍
  5. 【新产品发布】《EVC8021 RS-232RS-485/422 隔离接口转换器》
  6. authentication list default is not defined for PPP
  7. CSS+DIV-公司网站
  8. openssl passwd之openssl命令详解
  9. Windows10安装配置ChromeDriver
  10. 安装vue脚手架创建项目