拍照,录像的代码简单实现

import android.net.Uri;
import android.provider.MediaStore;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.ImageView;
import android.widget.Toast;
import android.widget.VideoView;

import java.io.File;



//TODO 请求码的目的就是区别他们到底要执行什么功能
public class MainActivity extends AppCompatActivity {
    //TODO 拍照的请求码
    private static final int REQUEST_IMAGE = 0;
    //TODO 录像的请求码
    private static final int REQUEST_VIDEO = 1;
    private ImageView iv;
    private VideoView vv;

    private String pathImage = "/sdcard/image.jpg";
    private String pathVideo = "/sdcard/video.mp4";

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        iv = (ImageView) findViewById(R.id.iv);
        vv = (VideoView) findViewById(R.id.vv);
    }

            public void doClick(View view){
                switch (view.getId()){
                    case R.id.btn_image:
                        //TODO 启动拍照功能 2:打开相机进行拍照(当不传入MediaStore.EXTRA_OUTPUT时,
                        // TODO 将通过Intent返回缩略图,反之则通过我们指定的路径返回高清图)
                        Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
                        intent.putExtra(MediaStore.EXTRA_OUTPUT,Uri.fromFile(new File(pathImage)));
                        startActivityForResult(intent,REQUEST_IMAGE);
                        break;
                    case R.id.btn_video:
                        //TODO 打开相机进行录像,并启动录像功能
                        intent  = new Intent(MediaStore.ACTION_VIDEO_CAPTURE);
                        intent.putExtra(MediaStore.EXTRA_OUTPUT,Uri.fromFile(new File(pathVideo)));
                        startActivityForResult(intent,REQUEST_VIDEO);
                        break;
                }
            }

    //TODO 请求码
    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
       // super.onActivityResult(requestCode, resultCode, data);
        if (requestCode== Activity.RESULT_CANCELED){
            Toast.makeText(MainActivity.this, "您已取消操作", Toast.LENGTH_SHORT).show();

            return;
        }
        switch (requestCode){
            case REQUEST_IMAGE:
                //TODO 处理照相返回的数据
                if (data == null){
                    Bitmap bm = BitmapFactory.decodeFile(pathImage);
                    if (bm!=null){
                        iv.setImageBitmap(bm);
                    }
                }else {
                    //TODO 返回缩略图
                Bitmap bm = data.getParcelableExtra("data");
                if (bm!=null) {
                    //TODO
                    Log.e("info", "width" + bm.getWidth() + "heught=" + bm.getHeight());
                    iv.setImageBitmap(bm);
                }
                    break;
                } case REQUEST_VIDEO:
                        Uri uri = data.getData();
                        vv.setVideoURI(uri);
                        vv.start();
                        break;

                }
        }
    }

转载于:https://my.oschina.net/u/2899016/blog/750594

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值