Android 调用系统的拍照与摄像程序
2017-04-12 20:22
387 查看
项目简介:
该项目为调用系统的照相机和摄像机详细介绍:
用户点击 “拍照”按钮后,调用系统的照相机,并保存拍照的照片用户点击“摄像”按钮后,调用系统的摄像机,并保存摄像的照片
并且,拍照后的照片可以在图库中查看到,视频可以再播放器中查看到
该应用涉及到的知识有:
1.如何调用系统照相功能实际上就是隐式启动一个活动
2.如何调用系统摄像功能
与1相似
3.onActivityResult的使用
注意:
1.尽管照相、摄像都需要系统的权限,如写入SD卡权限等,但是这个项目是调用系统的照相、摄像功能,该项目中并没有涉及到SD卡的写入,完成SD卡写入动作的是系统的照相、摄像功能,所以这里不需要添加权限2.照片完成后,要发送SD卡就绪广播,让系统遍历SD卡,否则排除的照片无法在手机中显示。
早期时是扫描整个SD卡,现在横扫使用了,这样很耗时,现在一般都是指定更新一个文件。
步骤:
1.创建一个Android项目,首先是布局文件
布局文件就连个按钮:
<LinearLayout 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" android:orientation="vertical" tools:context="hhh.exercise.smultimedia_e_camera.MainActivity" > <Button android:layout_width="match_parent" android:layout_height="wrap_content" android:onClick="image" android:text="拍照" android:textColor="#00ff00" android:textSize="30sp" /> <Button android:layout_width="match_parent" android:layout_height="wrap_content" android:onClick="video" android:text="摄像" android:textColor="#00ff00" android:textSize="30sp" /> </LinearLayout>
2.编写Activity代码
import java.io.File; import android.app.Activity; import android.content.Intent; import android.net.Uri; import android.os.Bundle; import android.os.Environment; import android.provider.MediaStore; import android.view.View; import android.widget.Toast; public class MainActivity extends Activity { private File imgFile; private File videoFile; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); } /** * 调用系统的相机拍照 */ public void image(View view) { // 启动系统提供的拍照Activity Intent it = new Intent(); it.setAction(MediaStore.ACTION_IMAGE_CAPTURE); // 设置系统路劲 imgFile = new File(Environment.getExternalStorageDirectory().getPath(), "h1.jpg"); Uri uri = Uri.fromFile(imgFile); it.putExtra(MediaStore.EXTRA_OUTPUT, uri); // 使用该API,it所对应的Activity销毁时的时候会回调onActivityResult方法 startActivityForResult(it, 1); } /** * 调用系统的相机摄像 */ public void video(View view) { Intent it = new Intent(); it.setAction(MediaStore.ACTION_VIDEO_CAPTURE); videoFile = new File(Environment.getExternalStorageDirectory().getPath(), "h2.3gp"); Uri uri = Uri.fromFile(videoFile); it.putExtra(MediaStore.EXTRA_OUTPUT, uri); // 设置视频的质量,0表示低质量,1表示高质量 it.putExtra(MediaStore.EXTRA_VIDEO_QUALITY, 1); startActivityForResult(it, 2); } // 当时用了startActivityForResult启动的Activity销毁时,回调该方法 @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); if (requestCode == 1) { Toast.makeText(getApplicationContext(), "拍照成功", 0).show(); // 通知媒体数据库,跟新制定的URL Intent it = new Intent(); it.setAction(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE); it.setData(Uri.fromFile(imgFile)); sendBroadcast(it); } else if (requestCode == 2) { Toast.makeText(getApplicationContext(), "摄像成功", 0).show(); // 通知媒体数据库,跟新制定的URL Intent it = new Intent(); it.setAction(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE); it.setData(Uri.fromFile(videoFile)); sendBroadcast(it); } } }
3.完成
相关文章推荐
- Android 通过Intent调用系统拍照程序出现图片太小的问题解决办法
- Android调用系统照相机拍照与摄像的方法
- android调用系统拍照程序和从图库选取图片,返回后调用系统裁剪工具
- 转载--Android--调用系统照相机拍照与摄像
- Android--调用系统照相机拍照与摄像
- 解决通过Intent调用系统拍照程序,返回图片太小的问题[android] 【转】
- Android--调用系统照相机拍照与摄像
- android -调用系统的拍照程序
- 解决通过Intent调用系统拍照程序,返回图片太小的问题[android]
- android调用系统拍照程序和从图库选取图片,返回后调用系统裁剪工具
- 转载 Android解决通过Intent调用系统拍照程序,返回图片太小的问题
- Android--调用系统照相机拍照与摄像
- 解决通过Intent调用系统拍照程序,返回图片太小的问题[android]
- Android调用系统拍照,录音,摄像
- 【转】 解决通过Intent调用系统拍照程序,返回图片太小的问题[android]
- Android调用系统程序
- Android 调用相册 拍照 实现系统控件缩放 切割图片 .
- 主题:android调用系统摄像头拍照图片和视频
- android 调用系统安装程序
- 解决通过Intent调用系统拍照程序,返回图片太小的问题