美文网首页
Camera (拍照)

Camera (拍照)

作者: 涛涛123759 | 来源:发表于2016-11-22 16:02 被阅读48次

1、调用系统Camera App实现拍照和摄像功能

//重写onActivityResult方法 
@Override
 protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
    if(requestCode == Activity.DEFAULT_KEYS_DIALER && resultCode == Activity.RESULT_OK){
        Bundle bundle = data.getExtras(); 
        Bitmap bitmap = (Bitmap) bundle.get("data");
        img_show.setImageBitmap(bitmap);

     // img_show.setImageURI(Uri.fromFile(currentImageFile));

   }
}


private static final int TAKE_PHOTO_REQUEST_CODE = 1;   
 public static void takePhoto(Context context) {
        String filePath = "";
        //手动获取拍照权限
        if (ContextCompat.checkSelfPermission(context, Manifest.permission.CAMERA) != PackageManager.PERMISSION_GRANTED) {
            ActivityCompat.requestPermissions((Activity) context, new String[]{Manifest.permission.CAMERA}, TAKE_PHOTO_REQUEST_CODE);   

         } else {
           
          //获取Uri
            ContentValues contentValues = new ContentValues(1);
            contentValues.put(MediaStore.Images.Media.DATA, currentImageFile.getAbsolutePath());
            Uri uri = context.getContentResolver().insert(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, contentValues);  

             Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);  
            /** * FLAG_GRANT_READ_URI_PERMISSION:表示读取权限; 
                * FLAG_GRANT_WRITE_URI_PERMISSION:表示写入权限。
             */
            intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION | Intent.FLAG_GRANT_WRITE_URI_PERMISSION);  
            startActivityForResult(intent, Activity.DEFAULT_KEYS_DIALER);  

         }
}

准备工作

上面调用系统Camera App,我们压根不需要任何权限,但是这里用Camera API,就必须在manifest内声明使用权限,通常由以下三项

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

一般拍照和摄像的时候需要写到sd卡上,所以还有一向权限声明如下

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>

真做摄像功能时,需要音频录制和视频录制功能,所以又需要下面两项权限声明

<uses-permission android:name="android.permission.RECORD_VIDEO"/>
<uses-permission android:name="android.permission.RECORD_AUDIO"/>

另外使用Camera API拍照或摄像,都需要用到预览,预览就要用到SurfaceView,为此Activity的布局中必须有SurfaceView。

相关文章

  • Android Camer Framework

    Camera框架 Camera拍照流程 拍照采用ImageReader来作为中介保存图片例子参考android-C...

  • Camera (拍照)

    1、调用系统Camera App实现拍照和摄像功能 准备工作 上面调用系统Camera App,我们压根不需要任何...

  • Android视频拍摄及直播

    Camera类是用来设置“拍照设置”、开始/停止“预览”、拍照、为视频编码获取帧。这个类是Camera Servi...

  • (照相机)Camera

    Camera 拍照或拍摄视频。需要和Cordova插件:cordova-plugin-camera。 有关更多信息...

  • 控制摄像头拍照

    1、调用Camera的open方法打开相机 2、调用Camera的getParameters()方法获取拍照参数,...

  • Android 多媒体 -- Camera拍照的使用

    Camera的使用。横竖屏,画面不变形 一、调用系统提供的拍照 二、自定义Camera 调用系统的Camera 实...

  • H5+

    camera Camera模块管理设备的摄像头,可用于拍照、摄像操作,通过plus.camera获取摄像头管理对象...

  • 学习目标

    学习java 编写camera apk功能包括:预览、拍照、录像等 阅读framework层camera模块相关源...

  • Android Camera SurfaceView 预览拍照

    Android使用 Camera API + SurfaceView 方式进行预览拍照。 SurfaceView ...

  • Form教程翻译(五)设备

    本节原文教程 ----------- From能调用设备的许多特性。 相机拍照camera preview 拍照组...

网友评论

      本文标题:Camera (拍照)

      本文链接:https://www.haomeiwen.com/subject/lmidpttx.html