setPreviewSize没有在Nexus 5奇巧工作(setPreviewSize does n

2019-10-19 01:53发布

在我的应用程序,我需要在640×480设置相机预览大小。 我想我在不同的设备上(以及三星Galaxy S2,4.0.3华硕TF101G,4.3的Galaxy Nexus例如2.3.6)不同的Android版本的代码,并在最后的新的Nexus 5采用Android奇巧(4.4) 。

我的代码完美的作品中的所有设备,但在Nexus 5.为什么不起作用? 其实在此之后的步骤:

int PREVIEW_WIDTH = 640;
int PREVIEW_HEIGHT = 480;
if(isSupportedSize(PREVIEW_WIDTH,PREVIEW_HEIGHT,mCamera)){
//isSupportedSize controls that width and height are supported by mCamera
mCamera.getParameters().setPreviewSize(PREVIEW_WIDTH,PREVIEW_HEIGHT);
Log.d("debug myapp", "Preview sizes: "  + mCamera.getParameters().getPreviewSize().width
                    + ", "
                    + mCamera.getParameters().getPreviewSize().height);
}

或本步骤:

int PREVIEW_WIDTH = 640;
int PREVIEW_HEIGHT = 480;
Camera.Parameters param= mCamera.getParameters();
if(isSupportedSize(PREVIEW_WIDTH,PREVIEW_HEIGHT,param)){
//isSupportedSize controls that width and height are supported by mCamera
param.setPreviewSize(PREVIEW_WIDTH,PREVIEW_HEIGHT);
mCamera.setParameters(param);
Log.d("debug myapp", "Preview sizes: "  + mCamera.getParameters().getPreviewSize().width
                    + ", "
                    + mCamera.getParameters().getPreviewSize().height);
}

只有在Nexus5日志是1920,1080,为什么? 有人来过了同样的问题?

isSupportedSize():

private boolean isSupportedSize(int width, int height, Camera cam){
    Camera.Parameters param = cam.getParameters();
    List<Size> suppSizes = param.getSupportedPreviewSizes();
    for (Size s: suppSizes){
        if (s.width == width && s.height == height){
            Log.d("debug", "sizes supported!");
            return true;
        }
    }
    return false;
}

它完美的作品。

Answer 1:

您是否尝试过这个? 停止预览并重新启动。 有了这个代码,在我的应用程序,我不需要的功能“isSupportedSize”。 让我知道如果你需要更多的帮助。

    @Override
public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) {

    if (holder.getSurface() == null) {
        return;
    }

    try {
        mCamera.stopPreview();
    } catch (Exception e) {
        // TODO: handle exception
    }
    try {
        mCamera.setPreviewDisplay(holder);
        Camera.Parameters parameters=mCamera.getParameters();           
        parameters.setPreviewSize(mPreviewSize.width, mPreviewSize.height);
        mCamera.setParameters(parameters);
        mCamera.startPreview();

    } catch (Exception e) {
        e.printStackTrace();
    }
}


Answer 2:

见回答这个职位 。 有些药片似乎允许改变预览大小,而在预览模式已而有的则没有。



文章来源: setPreviewSize does not work on Nexus 5 kitkat