我目前正在開發Android應用程序與分SDK是19,並試圖以支持一路攀升至26這周我已經添加了攝像頭功能,活動和我」我覺得調試這個很荒唐。API 22相機通過意向問題
基本上,用戶點擊相機圖標,它通過一個意圖開始Android相機,用戶拍攝照片,它被保存,然後添加到他們啓動相機的意圖之前所查看的滑塊畫廊。
所以,我終於得到它的API 19,21,23,24,25和26的工作......這是給我一個問題,唯一的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:致命>例外:主 工藝:> com.android.camera,PID:6163
的java .lang.RuntimeException:媒體服務器死亡。 (Camera.java:1148) at> 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(Native Method) 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)
,並試圖有點後,我接到再次,不同的錯誤以後。
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:致命>例外:主 工藝:> com.android.camera,PID:4072
java.lang中。 RuntimeException:getParameters失敗(空參數) at> android.hardware.Camera.native_getParameters(Native Method) at> android.hardware.Camera.getParameters(Camera.java:1888) at> com.android.camera.Camera。 initializeZoom(Camera.java:489) 在> 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(Native Method) at> 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)
這裏是我的代碼周圍循環調用相機功能/ ACTI VITY:
設置相機圖標的onclick監聽器:
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);
}
的對結果的活動只是增加了最後拍攝的照片的畫廊,而不是甚至達到了所以我不會理會它包括。
而且繼承人我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()誤差是與相機有關的類,但我甚至不使用它,所以我不知道爲什麼它甚至觸發錯誤。所有和任何輸入是受歡迎的,非常感謝。
這不是一個API相關的問題,這是你打電話到崩潰的攝像頭應用程序。你在API 22模擬器上試試這個嗎? – ianhanniballake
如果你有一個真實的設備工作,它可能僅僅是一個特定於設備的問題。我遇到了不少設備,這些設備都有奇怪的相機問題。此外,它也可能是該設備上的默認相機應用程序的問題。所有者可以設置任何支持相機意圖處理它們的應用程序,而不是系統相機應用程序。甚至系統相機應用程序可能是在一個拋光不足的設備上的越野車。 –
@ianhanniballake是,API 22模擬器,不同的手機。您是否試圖說他們是模擬器上提供的默認相機應用程序的問題?因爲這會很有意義。 – Philtron