최근에 카메라의 빌드에서 사진을 찍어 내 응용 프로그램에서 다시 가져와야하는 안드로이드 응용 프로그램을 작성했습니다. 나는 거기에있는 많은 튜토리얼 중 하나를 사용했고 모든 것이 잘 작동했다. 하지만 다른 장치에서 테스트 한 결과 전혀 작동하지 않았습니다. 문제가있는 것처럼 보이므로 모든 장치에서 사진을 찍을 수 있도록 어떻게해야합니까? (내 대답은 자습서와 비슷합니다.)Android : 카메라에서 사진 가져 오기 - 조심하십시오
답변
많은 튜토리얼 중 하나를 사용했는데 모든 것이 잘 동작했습니다. 하지만 다른 장치에서 테스트 한 결과 전혀 작동하지 않았습니다. 처음에 나는 매우 놀랐지 만, 나는이 주제에 더 깊이 들어가기로 결정했다. 그리고 나는 많은 튜토리얼이 큰 문제를 일으킬 수 있다는 것을 깨달았습니다. 그래서 나는 당신과 나의 경험을 공유하기로 결정했습니다.
대부분의 자습서가 사용하고있는 일반적인 승인 절차부터 시작하겠습니다.
private static final int CAMERA_PIC_REQUEST = 1337;
그런 다음 당신이 의도를 작성하고 시작
Intent cameraIntent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
startActivityForResult(cameraIntent, CAMERA_PIC_REQUEST);
다시 사진을 얻으려면 당신이 onActivityResult를 기능을 사용하여 카메라의 활동을 읽기 :
은 처음에는 그런 RequestID가 뭔가를 선택 수신 된 인 텐트 데이터의 화상
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == CAMERA_PIC_REQUEST && resultCode == RESULT_OK && data != null) {
// do something like
Bitmap bitmap = (Bitmap) data.getExtras().get("data");
}
}
고개 그렇지 않니? 잘 작동하지만 지금은 까다로운 부분이 있습니다.
안드로이드 문서에 기록 된대로 인 텐트 데이터는 축소 된 사진 만 반환하거나 찍은 사진의 작은 버전을 말하고 일부 장치는 전혀 반환하지 않습니다. 데이터가 null이 아니지만 결과 ResultInfo 전달 실패 예외가 발생할 수도 있습니다.
이제 무엇을 할 수 있습니까? 이를위한 솔루션은 매우 간단합니다. 카메라에 그림을 SD 카드에 저장하고이 파일에 URI를 반환하도록 지정하면됩니다. 아래에서, 위에서 편집 된 코드를 보여 드리겠습니다.
우리는 URI에 정적 RequestID가 및을 만들 카메라 활동을 만들지 만,이 시간 우리는 추가 매개 변수 (우리 URI) 지금Intent cameraIntent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
cameraIntent.putExtra(MediaStore.EXTRA_OUTPUT, outputFileUri);
startActivityForResult(cameraIntent, CAMERA_PIC_REQUEST);
과에 합격 우리보다
private static final int CAMERA_PIC_REQUEST = 1337;
private static Uri outputFileUri;
위와 같은 방법을 사용하지만 URI를 사용하는 의도 데이터 대신
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == CAMERA_PIC_REQUEST && resultCode == RESULT_OK) {
// do something to get the bitmap from the uri for example
Bitmap bitmap = MediaStore.Images.Media.getBitmap(this.getContentResolver(), outputFileUri);
}
이 솔루션을 사용하면 모든 장치에서 사진을 얻을 수 있습니다. 그러나 풀 스케일 비트 맵을 얻었으므로 메모리 오류를 피하기 위해 비트 맵을 축소해야 할 수도 있습니다. 사용자가 SD 카드에 저장된 사진을 유지하지 않으려면 해당 파일을 삭제하면됩니다.
읽어 주셔서 감사합니다.
- 1. 카메라에서 사진 가져 오기
- 2. cocos2d의 라이브러리 및 카메라에서 사진 가져 오기
- 3. Android : 자바 카메라에서 IplImage 가져 오기
- 4. 카메라에서 정보 가져 오기
- 5. EDSDK 2.9를 사용하여 Canon 카메라에서 사진 가져 오기
- 6. 사진 라이브러리에서 사진 가져 오기
- 7. 서비스중인 카메라에서 사진 찍기
- 8. 주어진 크기의 사진 가져 오기 Android
- 9. Android 유니버설 이미지 로더 사진 가져 오기
- 10. Android - 다운로드하지 않고 URL에서 사진 가져 오기
- 11. 안드로이드 카메라에서 이미지 가져 오기
- 12. 카메라에서 사진 찍기 오버뷰보기
- 13. 카메라에서 사진 저장하지 않음
- 14. iOS 카메라에서 사진 찍기
- 15. 트위터에서 사진 가져 오기
- 16. 스트림에서 사진 가져 오기
- 17. PDF에서 사진 가져 오기
- 18. Instagram에서 사진 가져 오기
- 19. 사진 가져 오기 옵션
- 20. 안드로이드 스튜디오의 에뮬레이터에서 잘못된 사진 가져 오기
- 21. Android : 이미지 뷰어에 표시되는 카메라에서 픽셀 가져 오기
- 22. 아이폰에서 사진 가져 오기 사진 라이브러리
- 23. iOS 카메라에서 사진 촬영 문제 :
- 24. Canon SDK. 카메라에서 사진 찍기
- 25. iPhone : UIImagePickerController없이 카메라에서 이미지 가져 오기
- 26. iPhone; 계속 카메라에서 비디오 가져 오기
- 27. iOS : 카메라에서 픽셀 단위로 데이터 가져 오기
- 28. 지정된 디지털 카메라에서 파일 가져 오기
- 29. 스트림의 안드로이드 카메라에서 RGB 데이터 가져 오기
- 30. 페이지의 프로필 사진 가져 오기