2015-04-23 63 views
0

我遇到了一個錯誤,我猜在OpenCV應用程序中很常見。當我嘗試運行該應用程序時,它會說「看起來您的設備不支持相機(或已鎖定)」。我見過thisthis,我已經做了他們所說的任何事情,比如授予相機權限並重新啓動設備等。但仍然存在問題。我知道這個問題意味着任何其他應用程序必須使用相機,因此它被鎖定。當我使用相機清除所有使用相機的應用程序的緩存時,它可以使用相機,但只能使用一次。在那之後同樣的問題。任何解決這個問題的方法?看來您的設備不支持相機

謝謝。

+0

我不確定解決您的問題,但幾天後我有同樣的問題,事實證明,在默認攝像機有一些問題。所以檢查默認相機設置是否正確。 –

+0

@Rahulgalgali:請你詳細說明一下嗎?在月食或手機中設置相機? –

+0

我知道這可能是您查看的第一件事,但是您確定您之後會釋放相機或禁用顯示相機預覽的視圖? –

回答

0

我實際上在BlueStack中收到了這個錯誤,但我通過去任務管理器並結束了BlueStack的所有進程來解決它。再次啓動BlueStack,它工作得很完美。如果您在手機上遇到此問題,則可以做同樣的事情。只需重新啓動手機,它會正常工作。

6

我剛纔碰到與OpenCV進行Android的同樣的問題,發現要到手機的設置 - >應用(或類似) - >您的應用程序 - >權限並啓用Camera權限似乎可以解決問題。

希望這會有所幫助。


更新

如在下面的評論注意到@ F43nd1r,要求用戶更新其在應用設置菜單權限不應該爲自己的應用程序來完成。根據https://developer.android.com/training/permissions/requesting.html,應該做的是讓用戶獲得訪問攝像機的權限。

+1

請注意,運行時權限是從Android Marshmallow開始的。在API較低的設備上,這不會是問題。另外:應用可以請求用戶授予這些權限。這是應用程序應該做的,而不是讓他們進入設置。 – F43nd1r

+1

它對我來說是運行時權限 –

+1

根據F43nd1r的評論,這是從Marshmallow開始的新運行時權限:請參閱[本討論](https://stackoverflow.com/questions/32347532/android-m-permissions-confused-on-這個解釋](https://inthecheesefactory.com/blog/things-you-need-to-know-about-android-m-permission-developer-edition/en),以及[此開發者頁面](https://developer.android.com/training/permissions/requesting.html)。 – WillC

0

編輯org.opencv.android.JavaCameraView.java和搜索

Szie frameSize = calculateCameraFrameSize(sizes, new JavaCameraSizeAccessor(), width, height); 

替換後續

Size frameSize; 
       if(width>height) 
       { 
        frameSize = calculateCameraFrameSize(sizes, new JavaCameraSizeAccessor(), width, height); 
       } 
       else 
       { 
        frameSize = calculateCameraFrameSize(sizes, new JavaCameraSizeAccessor(), height, width); 
       } 
0

因此到Android docs

期初的Android 6.0(API級別23)時,用戶在應用程序運行時將權限授予 應用程序,而不是在應用程序運行時高的應用程序。

這意味着在新的Android設備上,您還需要請求運行時權限以使用相機。

我用question you mentioned所需的一段代碼發了一個答案。

檢查了這一點:https://stackoverflow.com/a/44087946/4398784

希望它能幫助!