2013-08-21 51 views
1

我試圖在ADT中使用模擬器來測試拍攝照片的應用程序,我可以啓動攝像頭,但拍照後點擊「確認」按鈕logcat引發錯誤:模擬安卓攝像頭拍照時發生錯誤

08-21 13:46:18.933:E /的Soundpool(289):錯誤裝載/system/media/audio/ui/Effect_Tick.ogg

在此之後,回調事件在我應用程序沒有被調用,我無法獲得圖片,但是我可以點擊「取消」,並使用代碼RESULT_CANCELED調用回調。

這裏是我的代碼(部分):

@Override 
protected void onCreate(Bundle savedInstanceState) { 

    super.onCreate(savedInstanceState); 

    Intent i = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); 

    File imagesFolder = new File(Environment.getExternalStorageDirectory(), "MyImages"); 
    imagesFolder.mkdirs(); // <---- 
    File image = new File(imagesFolder, "image_001.jpg"); 
    Uri fileUri = Uri.fromFile(image); 

    i.putExtra(MediaStore.EXTRA_OUTPUT, fileUri); // set the image file name 

    // start the image capture Intent 
    startActivityForResult(i, 100); 
    ... 
} 

@Override 
protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
    if (resultCode == 100){  
     if (resultCode == RESULT_OK){  
     } else if (resultCode == RESULT_CANCELED){  
     } else {   
     } 
    } 
} 

我「可能」在真實設備上測試我的代碼,但我真的想解決我的模擬器,任何想法如何做到這一點?

- 編輯 -

這是我的AVD的配置文件:

avd.ini.encoding=ISO-8859-1 
hw.dPad=no 
hw.lcd.density=320 
sdcard.size=200M 
hw.cpu.arch=arm 
hw.device.hash=298918422 
hw.camera.back=emulated 
disk.dataPartition.size=200M 
skin.dynamic=yes 
skin.path=768x1280 
hw.keyboard=yes 
hw.cpu.model=cortex-a8 
hw.ramSize=768 
hw.device.manufacturer=Google 
hw.sdCard=yes 
hw.mainKeys=no 
hw.accelerometer=yes 
skin.name=768x1280 
abi.type=armeabi-v7a 
hw.trackBall=no 
hw.device.name=Nexus 4 
hw.battery=yes 
hw.sensors.proximity=yes 
image.sysdir.1=system-images\android-18\armeabi-v7a\ 
hw.sensors.orientation=yes 
hw.audioInput=yes 
hw.camera.front=emulated 
hw.gps=yes 
vm.heapSize=64 

我還增加了以下的標記在我的清單:

<uses-permission android:name="android.permission.CAMERA" /> 
<uses-feature android:name="android.hardware.camera" /> 
<uses-feature android:name="android.hardware.camera.autofocus" /> 

回答

0

我發現,這個問題是由應用程序試圖保存的圖片文件造成的,我刪除了線下面,它開始工作

File imagesFolder = new File(Environment.getExternalStorageDirectory(), "MyImages"); 
imagesFolder.mkdirs(); // <---- 
File image = new File(imagesFolder, "image_001.jpg"); 
Uri fileUri = Uri.fromFile(image); 

i.putExtra(MediaStore.EXTRA_OUTPUT, fileUri); // set the image file name 
1

默認情況下,當你創建一個Android中的Android虛擬設備(AVD)會禁用相機。所以如果你的應用程序使用Camera API,它可能無法在Android模擬器中正常工作。此外,SD卡必須在模擬器中定義才能使用相機。 要在Android模擬器中啓用相機,只需在AVD的config.ini文件中添加以下突出顯示的代碼。您可以在您的用戶目錄/ .android文件夾下找到config.ini文件。

在我的情況

這是路徑C:\用戶\ Gaurav.android \ AVD \ GingerBread.avd

File: ~/.android/config.ini 
hw.lcd.density=160 
skin.name=HVGA 
skin.path=platforms\android-9\skins\HVGA 
hw.cpu.arch=arm 
abi.type=armeabi 
vm.heapSize=24 
image.sysdir.1=platforms\android-9\images\ 
hw.camera=yes 
sdcard.size=256M 

或創建一個新的AVD,使相機在創建。

捕獲和你外部目錄的店面形象,你必須指定存儲權限您的應用程序

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> 
+0

我可以拍照的相機應用程序,看到他們在畫廊,所以我不認爲這是問題,加上幾行並沒有改變我的應用程序的行爲。 –