현재 min sdk가 19 인 안드로이드 앱을 개발 중이며 26 시까 지 지원하고 있습니다. 이번 주에는 활동에 카메라 기능을 추가했으며, 이걸 디버깅하는 일은 터무니없이 어렵습니다.API 22 의도에 의한 카메라 문제 :
기본적으로 사용자는 카메라 아이콘을 클릭하고 인 텐트를 통해 Android 카메라를 시작하고 사용자가 사진을 찍은 다음 저장 한 다음 카메라 의도를 시작하기 전에보고 있던 슬라이더 갤러리에 추가합니다.
결국 19, 21, 23, 24, 25 및 26 API에서 작업하게되었습니다 ... 문제가되는 유일한 API는 22이며 실제로 이유를 파악할 수 없습니다. 카메라 아이콘을 클릭하면 인 텐트가 시작되고 카메라가 흰색 화면으로로드되며 앱이 다운됩니다. 키커는 이것입니다. 방금 시도했는데 제대로 작동했습니다. 앱이 성공적으로 사진을 찍어 저장하고 충돌하지 않았습니다. 이 일 후에
, 내가 다시 시도하고 나는이있어 :
09-09 17 : 19 : 22.381 6163-6163/com.android.camera의 E/카메라 : 오류 100 09-09을 17 : 19 : 22.381 6163-6163/com.android.camera E/CameraErrorCallback : Got> 카메라 오류 콜백입니다. 오류 = 100 09-09 17 : 19 : 22.381 6163-6163/com.android.camera E/AndroidRuntime : FATAL> EXCEPTION : 메인 공정> com.android.camera, PID : 6163
자바 .lang.RuntimeException : 미디어 서버가 사망했습니다. at> com.android.camera.CameraErrorCallback.onError (CameraErrorCallback.java:31) at> android.hardware.Camera $ EventHandler.handleMessage (Camera.java:1148) at> android.os.Handler.dispatchMessage (Handler .java : 102) 에있는 android.os.Looper.loop (Looper.java:135) at> android.app.ActivityThread.main (ActivityThread.java:5254) at java.lang.reflect.Method. invoke (네이티브 메소드) at> java.lang.reflect.Method.invoke (Method.java:372) at> com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run (ZygoteInit.java:903) at> com.android.internal.os.ZygoteInit.main (Zy goteInit.java:698)
그리고 조금 후에 내가 다시 또 다른 오류가 발생했습니다 시도 후 ..
내 코드는 카메라 기능/ACTI를 호출 주위를 회전한다 vity : 결과에 대한 활동에 대한09-09 17 : 32 : 22.185 1530-1611/system_process E/AudioService : 미디어 서버가 사망했습니다. 09-09 17 : 32 : 22.191 4072-4072/com.android.camera E/AndroidRuntime : FATAL> EXCEPTION : 메인 공정> com.android.camera, PID : 4072
있는 java.lang. RuntimeException : getParameters가 실패했습니다. (빈 매개 변수) android.hardware.Camera.native_getParameters (기본 메소드) at> android.hardware.Camera.getParameters (Camera.java:1888) > com.android.camera.Camera. initializeZoom (Camera.java:489) at> com.android.camera.Camera.initializeFirstTime (Camera.java:392) > com.android.camera.Camera.access $ 600 (Camera.java:87) > com.android.camera.Camera $ MainHandler.handleMessage (Camera.java:290) > android.os.Handler.dispatchMessage (Handler.java:102) at> android.os.Looper.loop (Looper.java:135) at> android.app.ActivityThread.main (ActivityThread.java:5254) at java.lang.reflect .Method.invoke (네이티브 메소드) > java.lang.reflect.Method.invoke (Method.java:372) at> com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run (ZygoteInit.java:903) > com.android.internal.os.ZygoteInit.main에서 (ZygoteInit.java:698) 여기
public boolean onCreateOptionsMenu(Menu menu) {
item.getActionView().setOnClickListener(new View.OnClickListener() >
@Override
public void onClick(View v) {
startActivityForResult(CameraUtility.dispatchTakePictureIntent(getApplicationContext(), mushroomFolder), 1);
return;
}
});
return super.onCreateOptionsMenu(menu);
}
의인 갤러리에 마지막으로 찍은 사진을 추가하고도 도달하지
그래서 나는 늘 그것을 포함 귀찮게 :설정 카메라 아이콘은 청취자를 온 클릭.
그리고 heres는 내 CameraUtility에 대한 코드 :
class CameraUtility extends AppCompatActivity {
private static String CURRENT_PHOTO_PATH;
public static String PHOTO_DIRECTORY;
public static void setPhotoDirectory(Context c) {
PHOTO_DIRECTORY = c.getExternalFilesDir(Environment.DIRECTORY_PICTURES) + "/MyTrackerPhotos/";
}
public static Intent dispatchTakePictureIntent(Context c, String name) {
String timeStamp = new SimpleDateFormat("dd-MM-yyyy_HHmmss").format(new Date());
String path = c.getExternalFilesDir(Environment.DIRECTORY_PICTURES) + "/MyTrackerPhotos/" + name + "/" + name + timeStamp + ".jpg";
File file = new File(path);
Uri outputFileUri;
if (Build.VERSION.SDK_INT >= 23)
outputFileUri=FileProvider.getUriForFile(c,
"com.tracker.mushroom.fileprovider", file);
else
outputFileUri = Uri.fromFile(file);
CURRENT_PHOTO_PATH = file.getPath();
Intent intent = new Intent(
MediaStore.ACTION_IMAGE_CAPTURE);
intent.putExtra(MediaStore.EXTRA_OUTPUT, outputFileUri);
return intent;
}
public static String getCurrentPhotoPath() {
return CURRENT_PHOTO_PATH;
}
public static File[] getImageFiles(Context c, String mushroomFolder) throws IOException {
String filePath = c.getExternalFilesDir(Environment.DIRECTORY_PICTURES) + "/MyTrackerPhotos/" + mushroomFolder;
File file = new File(filePath);
file.mkdirs();
file.setReadable(true);
file.setWritable(true);
return file.listFiles();
}
}
그래서 나는 내 코드의 문제, 또는 에뮬레이터 또는 다른 그 무언가가 내가 알지도 못하는 경우 경우의 경우 정말 확실하지 않다 왜냐하면 다른 모든 API가 작동하면 도움이되지 않지만 머리를 긁을 수 있기 때문입니다. 나는 getParameters() 오류가 Camera 클래스와 관련이 있다는 것을 알고 있지만, 왜 심지어 오류를 유발하는지 잘 모르겠다. 모든 입력은 환영하며 대단히 감사하겠습니다.
API 관련 문제가 아니므로 충돌하는 카메라 앱입니다. API 22 에뮬레이터에서이 기능을 사용하고 계십니까? – ianhanniballake
실제 장치로 작업하는 경우 단순히 장치 관련 문제 일 수 있습니다. 이상한 카메라 문제가있는 장치가 많이 있습니다. 또한 해당 장치의 기본 카메라 앱에 문제가있을 수도 있습니다. 소유자는 시스템 카메라 앱 대신 카메라 인 텐트가이를 처리하도록 지원하는 모든 앱을 설정할 수 있습니다. 심지어 시스템 카메라 앱도 덜 세련된 기기에서 버그가있을 수 있습니다. –
@ianhanniballake 예, api 22 에뮬레이터, 다양한 휴대 전화. 에뮬레이터에서 제공되는 기본 카메라 앱에 문제가 있다고 이야기하고 있습니까? 왜냐하면 그것은 많은 의미를 갖기 때문입니다. – Philtron