扣丁学堂——Camera(调用系统摄像设备)

时间:2022-10-11 07:39:37

一丶源码见本文

二丶演示效果(略)

三丶课程讲解

扣丁学堂——Camera(调用系统摄像设备)

扣丁学堂——Camera(调用系统摄像设备)

扣丁学堂——Camera(调用系统摄像设备)

<uses-permission android:name="android.permission.CAMERA"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.RECORD_AUDIO"/>
扣丁学堂——Camera(调用系统摄像设备)

扣丁学堂——Camera(调用系统摄像设备)

扣丁学堂——Camera(调用系统摄像设备)

扣丁学堂——Camera(调用系统摄像设备)

扣丁学堂——Camera(调用系统摄像设备)

扣丁学堂——Camera(调用系统摄像设备)

MainActivity

public class Camera extends AppCompatActivity {
private static final int MEDIA_TYPE_IMAGE=1;
private static final int MEDIA_TYPE_VIDEO=2;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_camera);
}
public void imageCapture(View view){
Intent intent=new Intent();
intent.setAction(MediaStore.ACTION_IMAGE_CAPTURE);
intent.putExtra(MediaStore.EXTRA_OUTPUT, getOUtputMediaFileUri(MEDIA_TYPE_IMAGE));
startActivityForResult(intent, MEDIA_TYPE_IMAGE);
}
public void videoCapture(View view){
Intent intent=new Intent();
intent.setAction(MediaStore.ACTION_VIDEO_CAPTURE);
intent.putExtra(MediaStore.EXTRA_OUTPUT, getOUtputMediaFileUri(MEDIA_TYPE_VIDEO));
intent.putExtra(MediaStore.EXTRA_VIDEO_QUALITY,1);
startActivityForResult(intent,MEDIA_TYPE_IMAGE);
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
switch (requestCode){
case RESULT_OK:
if(MEDIA_TYPE_IMAGE==requestCode){
System.out.println(file);
}else if(MEDIA_TYPE_VIDEO==requestCode){
System.out.println(file);
}
}
}
File file=null;
private Uri getOUtputMediaFileUri(int type){
file=getOUtputMediaFile(type);
return Uri.fromFile(file);
}
private File getOUtputMediaFile(int type){
File file=null;
String rootPath=null;
switch(type){
case MEDIA_TYPE_IMAGE:
rootPath= Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES).getPath();
file=new File(rootPath+File.separator+System.currentTimeMillis()+".jpg");
break;
case MEDIA_TYPE_VIDEO:
rootPath= Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_MOVIES).getPath();
file=new File(rootPath+File.separator+System.currentTimeMillis()+".mp4");
break;
}
return file;
}
}
xml(略)就两个单击事件对应的按钮