호출 시스템 카메라
3488 단어 Android 호출 시스템 카메라
사진 과 촬영 기능 은 모두 Intent 의 setAction 방법 을 통 해 각각 MediaStore. ACTION 을 호출 할 수 있다.IMAGE_CAPTURE 와 MediaStore. ACTIONVIDEO_CAPTURE。
xml 에 세 개의 단 추 를 놓 고 하 나 는 사진 을 찍 고 하 나 는 촬영 하고 하 나 는 저장 하 며 하 나 는 ImageView 입 니 다. 먼저 사진 을 어떻게 호출 하 는 지 말씀 해 주세요.OnClick () 에 다음 코드 를 쓰 십시오.
intent.setAction(MediaStore.ACTION_IMAGE_CAPTURE);
intent.addCategory("android.intent.category.DEFAULT");
startActivityForResult(intent, 0);
그리고 저 는 onActivity Result () 에서 이미지 imageview 의 디 스 플레이 를 미리 보 거나 다른 작업 을 해도 됩 니 다.
if (resultCode == RESULT_OK) {
if (requestCode == 0) {
Bundle extras = data.getExtras();
bitmap = (Bitmap) extras.get("data");
image.setImageBitmap(bitmap);
}
} else {
Toast.makeText(this, " ", Toast.LENGTH_SHORT).show()
return;
}
마지막 으로 저장 하고 저장 하기 전에 사진 의 이름 을 지정 한 폴 더 에 저장 해 야 합 니 다.
시간 에 따라 이름 을 짓 면 이름 이 중복 되 지 않 음 을 보증 할 수 있 습 니 다.
private static String createFileName() {
SimpleDateFormat dateFormat = new SimpleDateFormat(
"yyyy-MM-dd-HH:mm:ss");
Date date = new Date(System.currentTimeMillis());
String fileName = dateFormat.format(date) + ".jpg";
return fileName;
}
지정 한 폴 더 로 저장:
//path = "/sdcard/1130photos"
public static void savePhotoToSdcard(String path, String photoName,
Bitmap bitmap) {
if (Environment.getExternalStorageState().equals(
Environment.MEDIA_MOUNTED)) {
File file = new File(path);
if (!file.exists()) {
file.mkdirs();
}
File photoFile = new File(file, photoName);
FileOutputStream fos = null;
try {
fos = new FileOutputStream(photoFile);
if (bitmap != null) {
compress = bitmap.compress(Bitmap.CompressFormat.JPEG, 100,
fos);
if (compress) {
fos.flush();
fos.close();
}
}
} catch (FileNotFoundException e) {
photoFile.delete();
e.printStackTrace();
} catch (IOException e) {
photoFile.delete();
e.printStackTrace();
} finally {
if (fos != null) {
try {
fos.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
}
마지막 저장:
if (bitmap == null) {
Toast.makeText(this, " ", Toast.LENGTH_SHORT).show();
} else {
savePhotoToSdcard(path, MainActivity.createFileName(), bitmap);
Toast.makeText(this, " ", Toast.LENGTH_SHORT).show();
image.setImageResource(R.drawable.ic_launcher);
bitmap = null;
}
촬영 기능 도 마찬가지다.
파일 이름:
private static String createVideoFileName() {
SimpleDateFormat dateFormat = new SimpleDateFormat(
"yyyy-MM-dd-HH:mm:ss");
Date date = new Date(System.currentTimeMillis());
String fileName = dateFormat.format(date) + ".3gp";
return fileName;
}
촬영 후 바로 저장
//path_video = "/sdcard/1130video"
intent.setAction(MediaStore.ACTION_VIDEO_CAPTURE);
File video_file = new File(path_video,
MainActivity.createVideoFileName());
if (video_file.exists()) {
video_file.delete();
}
Uri video_uri = Uri.fromFile(video_file);
intent.putExtra(MediaStore.EXTRA_OUTPUT, video_uri);
startActivity(intent);
시스템 카메라 디 렉 터 리 에 직접 저장 할 수도 있 습 니 다.