2015-04-16 55 views
0

我正在爲HTC Doubleshot開發ROM,並且我遇到了一些相機故障(它強制關閉)。尤其是股票相機和大多數第三方相機(UCam Ultra Camera沒有)。E/AndroidRuntime(2671):java.lang.RuntimeException:setParameters失敗

我有幾個logcats(樂趣從最新一行的696行開始),我很難理解發生了什麼。其他相機,如Google相機,也有相同的結果。

我的ROM是CarbonROM 4.4.4,其中成功的工作已經由開發建設的CyanogenMod 11所以我的表現已經分裂我的github(joelmaxuel)和他之間已經完成(EmmanuelU,KitKatDS)的構建:

<?xml version="1.0" encoding="UTF-8"?> 

<manifest> 

    <remote name="DS" 
     fetch="git://github.com/KitKatDS/"/> 

    <remote name="emmanuel" 
     fetch="git://github.com/EmmanuelU/"/> 

    <remote name="joelmaxuel" 
     fetch="git://github.com/joelmaxuel/"/> 

    <remote name="githubby" 
     fetch="git://github.com/"/> 

    <project path="buildbot" name="James_Buildbot" revision="master" remote="emmanuel"> 
     <copyfile src="James" dest="James" /> 
    </project> 

    <project name="android_device_htc_common" path="device/htc/common" revision="gingerbread" remote="DS" /> 

    <project path="device/htc/doubleshot" name="android_device_htc_doubleshot" remote="joelmaxuel" revision="kk" /> 
    <project path="device/htc/msm8660-common" name="android_device_htc_msm8660-common" remote="joelmaxuel" revision="kk" /> 
    <project path="vendor/htc/doubleshot" name="android_vendor_htc_doubleshot" remote="joelmaxuel" revision="kk" /> 
    <project path="kernel/htc/doubleshot" name="wild_kernel_htc_msm8660" remote="emmanuel" revision="android-msm-doubleshot-3.0-ion" /> 

    <remove-project name="CyanogenMod/android_hardware_libhardware_legacy" /> 
    <remove-project name="CarbonDev/android_frameworks_av" /> 
    <remove-project name="CarbonDev/android_frameworks_native" /> 
    <remove-project name="CarbonDev/android_packages_apps_Camera2" /> 
    <project name="android_hardware_libhardware_legacy" path="hardware/libhardware_legacy" revision="cm-11.0" remote="DS" /> 
    <project name="android_hardware_qcom_media-legacy" path="hardware/qcom/media-legacy" revision="cm-11.0-ion" remote="DS" /> 
    <project name="android_hardware_qcom_display-legacy" path="hardware/qcom/display-legacy" revision="cm-11.0-ion" remote="DS" /> 
    <project name="android_frameworks_av" path="frameworks/av" revision="cm-11.0" remote="DS" /> 
    <project name="android_packages_apps_Camera2" path="packages/apps/Camera2" revision="cm-11.0" remote="DS" /> 
    <project name="android_frameworks_native" path="frameworks/native" revision="kk" remote="joelmaxuel" /> 

</manifest> 

我確信這是我的BoardConfigCommon.mk:

# Camera 
BOARD_USES_QCOM_LEGACY_CAM_PARAMS := true 
COMMON_GLOBAL_CFLAGS += -DICS_CAMERA_BLOB -DNO_UPDATE_PREVIEW -DQCOM_BSP_CAMERA_ABI_HACK 

而對於BOARD_USES_QCOM_LEGACY_CAM_PARAMS代碼將添加相應的CFLAG(我查了frameworks_av代碼,文件攝像機/ Android.mk):

ifeq ($(BOARD_USES_QCOM_HARDWARE),true) 
LOCAL_CFLAGS += -DQCOM_HARDWARE 
endif 
ifeq ($(BOARD_USES_QCOM_LEGACY_CAM_PARAMS),true) 
LOCAL_CFLAGS += -DQCOM_LEGACY_CAM_PARAMS 
endif 

我不知道接下來要檢查什麼。有什麼建議麼?

+0

你有沒有偶然發現這個呢?這聽起來類似:http://stackoverflow.com/questions/3890381/camera-setparameters-failed-in-android –

+1

我做到了。感謝您再次提醒我注意。我最初解僱它是因爲它更多的是相機設計,我的問題是框架設計(或者更合適的設備樹設計)。我可以(理論上)在股票相機2應用程序中禁用一堆東西(或修改以適應我的需要)以使其工作,但這不能解決第三方相機(如谷歌相機,也是FC的)。 –

回答

0

設備的相機實現相信您傳遞的設置值無效。

這是一個有點難以看到所有的其他相機記錄之間的實際的投訴,但它的日誌中:

E/QualcommCameraHardwareZSL(171):無效的對焦模式值:連續畫面 E/QualcommCameraHardwareZSL( 171):虛擬android :: status_t android :: QualcommCameraHardware :: setParameters(const android :: CameraParameters &):6487,rc = -22

如果在支持的AF模式列表中未定義連續圖片,則應用無效嘗試設置它。如果列出,則相機實施不正確地拒絕它。

+0

我現在看到它... 在這裏,我正在對抗上週基於AndroidCameraManagerImpl.java:298(線路初始化人臉檢測)的人臉檢測。我今晚可能有一份工作彙編,我們將在早上看到。但如果你是對的,它仍然會崩潰。 對於連續自動對焦 - 是否有設備樹標誌,我應該使用,我是否(相同),或我完全錯過了這一點?我正在尋找解決方案,以解決其他相機應用程序,而不僅僅是股票之一。謝謝。 –

+0

一旦我看了它,我認爲它是後者,根據框架AV文件[https://github.com/CarbonDev/android_frameworks_av/blob/kk/camera/CameraParameters.cpp]:const char CameraParameters :: FOCUS_MODE_CONTINUOUS_PICTURE [] =「連續照片」;'。另外,它不隱藏任何#ifdef後面。這意味着我再次卡住了。 –

+0

有了您的洞察力和來自此設備上的其他開發人員的幫助,bug已被壓扁!所有需要做的事情都是評論/刪除「參數」。set(android :: CameraParameters :: KEY_SUPPORTED_FOCUS_MODES,「auto,infinity,normal,macro,continuous-picture」);'在設備樹的camerawrapper/CameraWrapper.cpp文件下。還有一個攝像機錯誤,但這是另一個問題! –