• 转载 Android拍照、录像、录音代码范例


    编辑器加载中..

    import java.io.File;  
    import java.text.SimpleDateFormat;
    import java.util.Date;
    import android.app.Activity;
    import android.content.Intent;
    import android.database.Cursor;
    import android.net.Uri;
    import android.os.Bundle;
    import android.os.Environment;
    import android.provider.MediaStore;
    import android.view.View;
    import android.view.View.OnClickListener;
    import android.widget.Button;
    import android.widget.Toast;</p><p>public class ActivityMedia extends Activity implements OnClickListener {
    private static final int RESULT_CAPTURE_IMAGE = 1;// 照相的requestCode
    private static final int REQUEST_CODE_TAKE_VIDEO = 2;// 摄像的照相的requestCode
    private static final int RESULT_CAPTURE_RECORDER_SOUND = 3;// 录音的requestCode

    private String strImgPath = "";// 照片文件绝对路径
    private String strVideoPath = "";// 视频文件的绝对路径
    private String strRecorderPath = "";// 录音文件的绝对路径

    Button buttonShot;
    Button buttonVideo;
    Button buttonRecorder;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    this.setContentView(R.layout.media);
    buttonShot
    = (Button)findViewById(R.id.ButtonShot);
    buttonShot.setOnClickListener(
    this);
    buttonVideo
    = (Button)findViewById(R.id.ButtonVideo);
    buttonVideo.setOnClickListener(
    this);
    buttonRecorder
    = (Button)findViewById(R.id.ButtonRecorder);
    buttonRecorder.setOnClickListener(
    this);
    }

    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    switch (requestCode) {
    case RESULT_CAPTURE_IMAGE://拍照
    if (resultCode == RESULT_OK) {
    Toast.makeText(
    this, strImgPath, Toast.LENGTH_SHORT).show();
    }
    break;
    case REQUEST_CODE_TAKE_VIDEO://拍摄视频
    if (resultCode == RESULT_OK) {
    Uri uriVideo
    = data.getData();
    Cursor cursor
    =this.getContentResolver().query(uriVideo, null, null, null, null);
    if (cursor.moveToNext()) {
    /* _data:文件的绝对路径 ,_display_name:文件名 */
    strVideoPath
    = cursor.getString(cursor.getColumnIndex("_data"));
    Toast.makeText(
    this, strVideoPath, Toast.LENGTH_SHORT).show();
    }
    }
    break;
    case RESULT_CAPTURE_RECORDER_SOUND://录音
    if (resultCode == RESULT_OK) {
    Uri uriRecorder
    = data.getData();
    Cursor cursor
    =this.getContentResolver().query(uriRecorder, null, null, null, null);
    if (cursor.moveToNext()) {
    /* _data:文件的绝对路径 ,_display_name:文件名 */
    strRecorderPath
    = cursor.getString(cursor.getColumnIndex("_data"));
    Toast.makeText(
    this, strRecorderPath, Toast.LENGTH_SHORT).show();
    }
    }
    break;
    }
    }



    /**
    * 照相功能
    */
    private void cameraMethod() {
    Intent imageCaptureIntent
    = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
    strImgPath
    = Environment.getExternalStorageDirectory().toString() + "/CONSDCGMPIC/";//存放照片的文件夹
    String fileName = new SimpleDateFormat("yyyyMMddHHmmss").format(new Date()) + ".jpg";//照片命名
    File out = new File(strImgPath);
    if (!out.exists()) {
    out.mkdirs();
    }
    out
    = new File(strImgPath, fileName);
    strImgPath
    = strImgPath + fileName;//该照片的绝对路径
    Uri uri = Uri.fromFile(out);
    imageCaptureIntent.putExtra(MediaStore.EXTRA_OUTPUT, uri);
    imageCaptureIntent.putExtra(MediaStore.EXTRA_VIDEO_QUALITY,
    1);
    startActivityForResult(imageCaptureIntent, RESULT_CAPTURE_IMAGE);

    }

    /**
    * 拍摄视频
    */
    private void videoMethod() {
    Intent intent
    = new Intent(MediaStore.ACTION_VIDEO_CAPTURE);
    intent.putExtra(MediaStore.EXTRA_VIDEO_QUALITY,
    0);
    startActivityForResult(intent, REQUEST_CODE_TAKE_VIDEO);
    }

    /**
    * 录音功能
    */
    private void soundRecorderMethod() {
    Intent intent
    = new Intent(Intent.ACTION_GET_CONTENT);
    intent.setType(
    "audio/amr");
    startActivityForResult(intent, RESULT_CAPTURE_RECORDER_SOUND);
    }

    /**
    * 提示信息
    *
    @param text
    *
    @param duration
    */
    private void showToast(String text, int duration) {
    Toast.makeText(ActivityMedia.
    this, text, duration).show();
    }
    </p><p> public void onClick(View v) {
    int id = v.getId();
    switch(id){
    case R.id.ButtonShot:
    cameraMethod();
    break;
    case R.id.ButtonVideo:
    videoMethod();
    break;
    case R.id.ButtonRecorder:
    soundRecorderMethod();
    break;
    }
    }

    }
    </p>
    界面布局
        <?xml version="1.0" encoding="utf-8"?>  
        <ScrollView  
            xmlns:android="http://schemas.android.com/apk/res/android"  
            android:layout_width="fill_parent"  
            android:layout_height="fill_parent">  
            <LinearLayout  
              android:orientation="vertical"  
              android:layout_width="fill_parent"  
              android:layout_height="fill_parent">  
              <Button  
                android:id="@+id/ButtonShot"  
                android:layout_width="fill_parent"  
                android:layout_height="wrap_content"  
                android:text="拍照"/>
    manifest添加权限:
    view plain

    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"></uses-permission>
    <uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"></uses-permission>
    <uses-permission android:name="android.permission.GET_TASKS"></uses-permission>
    <uses-permission android:name="android.permission.RECORD_AUDIO"></uses-permission>
    <uses-permission android:name="android.permission.CAMERA"></uses-permission>

              <Button  
                android:id="@+id/ButtonVideo"  
                android:layout_width="fill_parent"  
                android:layout_height="wrap_content"  
                android:text="录像"/>  
              <Button  
                android:id="@+id/ButtonRecorder"  
                android:layout_width="fill_parent"  
                android:layout_height="wrap_content"  
                android:text="录音"/>  
            </LinearLayout>  
        </ScrollView>  
    



  • 相关阅读:
    mongodb本地搭建过程
    vue-cli+webpack搭建简单的vue项目框架
    jquery效果
    通过类名查找类名里面的标签
    高亮显示代码部分
    高亮显示用户键盘输入(<kbd>)
    排版----描述
    排版----引用
    排版----首字母缩略语()
    排版----缩略语(<title>)
  • 原文地址:https://www.cnblogs.com/xiao0/p/2174357.html
Copyright © 2020-2023  润新知