1. <p>import java.io.File;
  2. import java.text.SimpleDateFormat;
  3. import java.util.Date;
  4. import android.app.Activity;
  5. import android.content.Intent;
  6. import android.database.Cursor;
  7. import android.net.Uri;
  8. import android.os.Bundle;
  9. import android.os.Environment;
  10. import android.provider.MediaStore;
  11. import android.view.View;
  12. import android.view.View.OnClickListener;
  13. import android.widget.Button;
  14. import android.widget.Toast;</p><p>public class ActivityMedia extends Activity  implements OnClickListener {
  15. private static final int RESULT_CAPTURE_IMAGE = 1;// 照相的requestCode
  16. private static final int REQUEST_CODE_TAKE_VIDEO = 2;// 摄像的照相的requestCode
  17. private static final int RESULT_CAPTURE_RECORDER_SOUND = 3;// 录音的requestCode
  18. private String strImgPath = "";// 照片文件绝对路径
  19. private String strVideoPath = "";// 视频文件的绝对路径
  20. private String strRecorderPath = "";// 录音文件的绝对路径
  21. Button buttonShot;
  22. Button buttonVideo;
  23. Button buttonRecorder;
  24. @Override
  25. protected void onCreate(Bundle savedInstanceState) {
  26. super.onCreate(savedInstanceState);
  27. this.setContentView(R.layout.media);
  28. buttonShot = (Button)findViewById(R.id.ButtonShot);
  29. buttonShot.setOnClickListener(this);
  30. buttonVideo = (Button)findViewById(R.id.ButtonVideo);
  31. buttonVideo.setOnClickListener(this);
  32. buttonRecorder = (Button)findViewById(R.id.ButtonRecorder);
  33. buttonRecorder.setOnClickListener(this);
  34. }
  35. @Override
  36. protected void onActivityResult(int requestCode, int resultCode, Intent data) {
  37. super.onActivityResult(requestCode, resultCode, data);
  38. switch (requestCode) {
  39. case RESULT_CAPTURE_IMAGE://拍照
  40. if (resultCode == RESULT_OK) {
  41. Toast.makeText(this, strImgPath, Toast.LENGTH_SHORT).show();
  42. }
  43. break;
  44. case REQUEST_CODE_TAKE_VIDEO://拍摄视频
  45. if (resultCode == RESULT_OK) {
  46. Uri uriVideo = data.getData();
  47. Cursor cursor=this.getContentResolver().query(uriVideo, null, null, null, null);
  48. if (cursor.moveToNext()) {
  49. /* _data:文件的绝对路径 ,_display_name:文件名 */
  50. strVideoPath = cursor.getString(cursor.getColumnIndex("_data"));
  51. Toast.makeText(this, strVideoPath, Toast.LENGTH_SHORT).show();
  52. }
  53. }
  54. break;
  55. case RESULT_CAPTURE_RECORDER_SOUND://录音
  56. if (resultCode == RESULT_OK) {
  57. Uri uriRecorder = data.getData();
  58. Cursor cursor=this.getContentResolver().query(uriRecorder, null, null, null, null);
  59. if (cursor.moveToNext()) {
  60. /* _data:文件的绝对路径 ,_display_name:文件名 */
  61. strRecorderPath = cursor.getString(cursor.getColumnIndex("_data"));
  62. Toast.makeText(this, strRecorderPath, Toast.LENGTH_SHORT).show();
  63. }
  64. }
  65. break;
  66. }
  67. }
  68. /**
  69. * 照相功能
  70. */
  71. private void cameraMethod() {
  72. Intent imageCaptureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
  73. strImgPath = Environment.getExternalStorageDirectory().toString() + "/CONSDCGMPIC/";//存放照片的文件夹
  74. String fileName = new SimpleDateFormat("yyyyMMddHHmmss").format(new Date()) + ".jpg";//照片命名
  75. File out = new File(strImgPath);
  76. if (!out.exists()) {
  77. out.mkdirs();
  78. }
  79. out = new File(strImgPath, fileName);
  80. strImgPath = strImgPath + fileName;//该照片的绝对路径
  81. Uri uri = Uri.fromFile(out);
  82. imageCaptureIntent.putExtra(MediaStore.EXTRA_OUTPUT, uri);
  83. imageCaptureIntent.putExtra(MediaStore.EXTRA_VIDEO_QUALITY, 1);
  84. startActivityForResult(imageCaptureIntent, RESULT_CAPTURE_IMAGE);
  85. }
  86. /**
  87. * 拍摄视频
  88. */
  89. private void videoMethod() {
  90. Intent intent = new Intent(MediaStore.ACTION_VIDEO_CAPTURE);
  91. intent.putExtra(MediaStore.EXTRA_VIDEO_QUALITY, 0);
  92. startActivityForResult(intent, REQUEST_CODE_TAKE_VIDEO);
  93. }
  94. /**
  95. * 录音功能
  96. */
  97. private void soundRecorderMethod() {
  98. Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
  99. intent.setType("audio/amr");
  100. startActivityForResult(intent, RESULT_CAPTURE_RECORDER_SOUND);
  101. }
  102. /**
  103. * 提示信息
  104. * @param text
  105. * @param duration
  106. */
  107. private void showToast(String text, int duration) {
  108. Toast.makeText(ActivityMedia.this, text, duration).show();
  109. }</p><p>   public void onClick(View v) {
  110. int id = v.getId();
  111. switch(id){
  112. case R.id.ButtonShot:
  113. cameraMethod();
  114. break;
  115. case R.id.ButtonVideo:
  116. videoMethod();
  117. break;
  118. case R.id.ButtonRecorder:
  119. soundRecorderMethod();
  120. break;
  121. }
  122. }
  123. }</p>

界面布局:

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <ScrollView
  3. xmlns:android="http://schemas.android.com/apk/res/android"
  4. android:layout_width="fill_parent"
  5. android:layout_height="fill_parent">
  6. <LinearLayout
  7. android:orientation="vertical"
  8. android:layout_width="fill_parent"
  9. android:layout_height="fill_parent">
  10. <Button
  11. android:id="@+id/ButtonShot"
  12. android:layout_width="fill_parent"
  13. android:layout_height="wrap_content"
  14. android:text="拍照"/>
  15. <Button
  16. android:id="@+id/ButtonVideo"
  17. android:layout_width="fill_parent"
  18. android:layout_height="wrap_content"
  19. android:text="录像"/>
  20. <Button
  21. android:id="@+id/ButtonRecorder"
  22. android:layout_width="fill_parent"
  23. android:layout_height="wrap_content"
  24. android:text="录音"/>
  25. </LinearLayout>
  26. </ScrollView>

manifest添加权限:

    1. <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"></uses-permission>
    2. <uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"></uses-permission>
    3. <uses-permission android:name="android.permission.GET_TASKS"></uses-permission>
    4. <uses-permission android:name="android.permission.RECORD_AUDIO"></uses-permission>
    5. <uses-permission android:name="android.permission.CAMERA"></uses-permission>

Android拍照、录像、录音代码范例的更多相关文章

  1. Android WebView 上传各种文件(包括拍照 录像 录音 文件 音乐 等,用到图片或拍照的,可以参考下)

    我也是从网上扒下来的,经过多次实验,找到了个好用的.网上能搜到最多的也就是这个解决方案,我英文不好,也没仔细研究,但大多数都是出自这: http://stackoverflow.com/questio ...

  2. Android拍照,录制视频,相机简单功能实现

    1.效果图,功能没有录制出来. 基本实现了拍照,录制视频,前后摄像头切换的功能,可以转屏,聚焦. 代码在最下面,可以看代码,运行apk看实际效果. 2.权限不能忘 <uses-permissio ...

  3. 【Android】【录音】Android录音--AudioRecord、MediaRecorder

    [Android][录音]Android录音--AudioRecord.MediaRecorder Android提供了两个API用于实现录音功能:android.media.AudioRecord. ...

  4. 我的Android进阶之旅------>Android拍照小例子

    今天简单的学习了一下android拍照的简单实现. 当然该程序是个小例子,非常简单,没有什么复杂的操作,但是可以学习到Android 拍照API流程. 1.在布局文件中添加一个 surfaceView ...

  5. android——拍照,相册图片剪切其实就这么简单

    接触android这么久了.还没有真正的浩浩看看android拍照,相册图片剪切到底是怎么回事,每次都是从别人的代码一扣,就过来了.其实,谷歌提供的API已经很强大.只需要用的好,就那么几句就可以搞定 ...

  6. 简单的 Android 拍照并显示以及获取路径后上传

    简单的 Android 拍照并显示以及获取路径后上传 Activity 中的代码,我只贴出重要的事件部分代码 public void doPhoto(View view) { destoryBimap ...

  7. 功能强大的图片截取修剪神器:Android SimpleCropView及其实例代码重用简析(转)

    功能强大的图片截取修剪神器:Android SimpleCropView及其实例代码重用简析 SimpleCropView是github上第一个第三方开源的图片修剪截取利器,功能强大,设计良好.我个人 ...

  8. [Android] 拍照、截图、保存并显示在ImageView控件中

    近期在做Android的项目,当中部分涉及到图像处理的内容.这里先讲述怎样调用Camera应用程序进行拍照,并截图和保存显示在ImageView控件中以及遇到的困难和解决方法.     PS:作者购买 ...

  9. android 拍照上传文件 原生定位

    最近公司需要一个android拍照上传和定位功能的的单一功能页面,一开始选择ionic cordova angular的一套H5框架,但是遇到和上传文件报错的问题,bug找了一天没找到原因,怀疑是io ...

随机推荐

  1. 《JS高程》事件类型学习笔记

    事件类型: UI事件&焦点事件: 鼠标滚轮事件: 键盘与文本事件: 复合事件&变动事件: HTML5事件: 设备事件&触摸与手势事件:

  2. vs2013 c++代码内出现中文导致编译错误

    简单的做法就是,首先,菜单栏->文件->高级保存选项,选择utf-8 无签名, 然后,如果是发现注释语句里有中文,可以让注释语句与下行代码中间空一行, 如果是代码里有用到中文,那么就在中文 ...

  3. Java 数组 可变长参数 实例

    可以把类型相同但个数可变的参数传递给方法,方法中的参数声明如下: typeName...parameterName (类型名...参数名) 在方法声明中,指定类型后紧跟着省略号...,只能给方法指定一 ...

  4. Java中生成随机字符的方法总结

    package learnExercise; public class RandomCharacter { public static char getRandomCharacter(char ch1 ...

  5. for each 循环

    前言 在C++中,经常用到类似 for (int i=0; i<n; i++); 这样的循环控制结构. 然而,如果要求循环变量的改变方式不是简单的+1递增,而是依次取某个数组里面的元素,那么C+ ...

  6. 六 JSP 和 Servlet 的系统调优技巧

    方法一:在 Servlet 的 init() 函数中申请缓冲数据 方法二:禁止 Servlet 和 JSP 的自动重载: Servlet/JSP 提供了一个实用的技术,即自动重载技术,它为开发人员提供 ...

  7. ZOJ Problem Set - 3329 One Person Game

    题目大意:有三个骰子,分别有k1,k2,k3个面. 每次掷骰子,如果三个面分别为a,b,c则分数置0,否则加上三个骰子的分数之和. 当分数大于n时结束.求游戏的期望步数.初始分数为0分析  设 E[i ...

  8. hdu 4258 Covered Walkway

    题目大意: 一个N个点的序列,要将他们全部覆盖,求总最少费用:费用计算: c+(x-y)2 分析: 斜率优化DP 我们假设k<j<i.如果在j的时候决策要比在k的时候决策好,那么也是就是d ...

  9. ANTLR3完全参考指南读书笔记[02]

    前言 程序语言是什么? 用wiki上的描述,程序语言是一种人工设计的语言,用于通过指令与机器交互:程序语言是编程程序的标记,而程序是一种计算或算法的描述.详细介绍和背景信息参考: Programmin ...

  10. Y_TEXT001-(保存长文本)

    DATA: gs_header TYPE thead .DATA: gt_ltxts TYPE STANDARD TABLE OF tline .DATA: lw_ltxt TYPE tline . ...