2015-04-23 23 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

希望它能帮助!