我開始對Android的默認攝像頭應用程序使用下面的代碼來獲得我的應用程序的圖片:Android的默認攝像頭應用打開兩次
//create parameters for Intent with filename
ContentValues values = new ContentValues();
values.put(MediaStore.Images.Media.TITLE, fileName);
values.put(MediaStore.Images.Media.DESCRIPTION,"Image capture by camera");
//imageUri is the current activity attribute, define and save it for later usage (also in onSaveInstanceState)
imageUri = getContentResolver().insert(
MediaStore.Images.Media.EXTERNAL_CONTENT_URI, values);
//create new Intent
Intent intent = new Intent("android.media.action.IMAGE_CAPTURE");
intent.putExtra(MediaStore.EXTRA_OUTPUT, imageUri);
intent.putExtra(MediaStore.EXTRA_VIDEO_QUALITY, 1);
startActivityForResult(intent, actionCode);
,並趕在onActivityResult方法中的圖片。
通常,這將工作得很好,設備將拍攝照片並將其返回給應用程序,但有時在完成相機應用程序(通過保存圖像或點擊取消)後,它會啓動相機應用程序一秒鐘時間。我怎樣才能防止應用程序打開兩次?
編輯:感謝Krylez的評論我能夠提出一個解決方案。
我已經在使用一個靜態類來保存來自相機的圖像,以便它可以被我選中的Activity所訪問,所以我也在其中放置了一個布爾值。現在,在我開始Activity來處理相機之前,我將該布爾值設置爲true,然後在檢查之後將其設置爲false,以便如果再次調用onCreate方法,則不會再次加載相機。
此代碼塊屬於哪種方法? – Krylez
它在onCreate方法中。相機實際上是以選項卡式的意圖來使用,但startActivityForResult在這種情況下會產生奇怪的結果,所以我開始另一個在選項卡之外的活動來處理從相機意圖獲取圖像。 – Laser
好的,爲什麼它發生了一些時間,而不是其他的原因是活動停留在內存中,直到操作系統需要它。返回到相機的活動會導致onCreate方法再次被調用,重新打開相機。 – Krylez