短视频程序开发,Android:调用系统拍照和相册
短视频程序开发,Android:调用系统拍照和相册实现的相关代码
1、从相册选择
/**
* 从相册选取图片
*/
private void choosePhoto() {
/**
* 打开选择图片的界面
*/
Intent intent = new Intent(Intent.ACTION_PICK);
intent.setType("image/*");//相片类型
startActivityForResult(intent, REQUEST_CODE_PICK_IMAGE);
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
switch (requestCode) {
case REQUEST_CODE_PICK_IMAGE:
if (resultCode == Activity.RESULT_OK) {
try {
Uri uri = data.getData();
LogUtil.d("url:" + getRealPathFromURI(uri));
String realPathFromURI = getRealPathFromURI(uri);
uploadType = 2;
uploadFile(realPathFromURI, userId);
} catch (Exception e) {
e.printStackTrace();
Log.d(Constants.TAG, e.getMessage());
}
} else {
Log.d(Constants.TAG, "失败");
}
break;
}
}
public String getRealPathFromURI(Uri contentUri) {
String res = null;
String[] proj = {MediaStore.Images.Media.DATA};
Cursor cursor = mContext.getContentResolver().query(contentUri, proj, null, null, null);
if (cursor.moveToFirst()) {
int column_index = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);
res = cursor.getString(column_index);
}
cursor.close();
return res;
}
@Override
public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
if (requestCode == MY_PERMISSIONS_REQUEST_CHOOSE_PHOTO) {
if (grantResults[0] == PackageManager.PERMISSION_GRANTED) {
choosePhoto();
} else {
ToastUtils.showShort("请同意系统权限后继续");
}
}
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
}
2、拍照
private File output;
private Uri imageUri;
/**
* 拍照
*/
private void takePhoto() {
/**
* 最后一个参数是文件夹的名称,可以随便起
*/
File file = new File(Environment.getExternalStorageDirectory(), "external_files");
if (!file.exists()) {
file.mkdir();
}
/**
* 这里将时间作为不同照片的名称
*/
output = new File(file, System.currentTimeMillis() + ".jpg");
/**
* 如果该文件夹已经存在,则删除它,否则创建一个
*/
try {
if (output.exists()) {
output.delete();
}
output.createNewFile();
} catch (Exception e) {
e.printStackTrace();
}
/**
* 隐式打开拍照的Activity,并且传入CROP_PHOTO常量作为拍照结束后回调的标志
*/
Intent takePhotoIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
Uri photoUri = FileProvider.getUriForFile(
getContext(),
getContext().getPackageName() + ".fileprovider",
output);
Uri imageUri = photoUri;
takePhotoIntent.putExtra(MediaStore.EXTRA_OUTPUT, photoUri);
startActivityForResult(takePhotoIntent, CROP_PHOTO);
}
public void onActivityResult(int req, int res, Intent data) {
switch (req) {
case CROP_PHOTO:
if (res == Activity.RESULT_OK) {
try {
String realPath = output.getPath();
messageInfo.setImageUrl(realPath);
EventBus.getDefault().post(messageInfo);
} catch (Exception e) {
}
} else {
Log.d(Constants.TAG, "失败");
}
break;
}
}
以上就是短视频程序开发,Android:调用系统拍照和相册实现的相关代码, 更多内容欢迎关注之后的文章