相机setFocusAreas()无法运行Android 4.0

Jam*_*meo 12 camera android android-camera

我正在创建一个使用水龙头来聚焦功能的相机应用程序,就像许多标准相机应用程序一样.我首先得到触摸事件的(x,y)坐标,然后将此值传递给UI.然后,我尝试设置焦点区域,如下所示:

Rect newRect = new Rect(left,top,right, bottom);
Camera.Parameters params = mCamera.mCameraInstance.getParameters();
Camera.Area focusArea = new Camera.Area(newRect, 1000);
List<Camera.Area> focusAreas = new ArrayList<Camera.Area>();
focusAreas.add(focusArea);
params.setFocusAreas(focusAreas);
Run Code Online (Sandbox Code Playgroud)

但是,它似乎没有任何效果.所以,我将一些值硬编码到矩形中(这样,我可以排除触摸事件中的坏坐标). 根据文档,它正在寻找空间中的坐标(-1000,-1000)(左上)到(1000,1000)(右下).

所以我用这个替换了上面的矩形:

//should target a 100x100 square in the center of the screen
Rect newRect = new Rect(-50,-50,50, 50);
Run Code Online (Sandbox Code Playgroud)

而且,似乎没有效果.我知道我的相机支持设置对焦区域,因为首先,相机应用程序成功使用它,并且params.getMaxNumFocusAreas()返回1.

如果有人在过去成功使用过这个,请告诉我!

编辑:

我发现这个类似的问题似乎也表明这个API根本无法在Android 4.0设备上运行(我正在测试4.1.1,Galaxy S3).然而,这些设备上的相机应用程序仍然具有点对点功能.我错过了什么?

Bon*_*dax 0

它对我也不起作用,但无论如何,在设置你的矩形时,请确保 left < righttop < bottom!您正在将矩形的高度设置为-100!而且,顺便说一句,您设置的不是 50x50 的正方形,而是 100x-100。