Share this question

Welcome to Teachnovice Q&A, where you can ask questions and receive answers from other members of the community.

This is a collaboratively edited question and answer site for computer enthusiasts and power users. It's 100% free, no registration required.

Custom Zoom On Google Glass, Image captured is not what preview shows?

0 like 0 dislike
230 views

So I successfully implemented my own zoom feature on the Google Glass because right now Google did not add this feature. It looks like so:

@Override
public boolean onFling( MotionEvent e1, MotionEvent e2, float velocityX, float velocityY ) 
{
    Camera.Parameters parameters = mCamera.getParameters();
    parameters.setPreviewFpsRange(30000, 30000);
    int zoom = parameters.getZoom();

    if ( velocityX < 0.0f )
    {
        zoom -= 10;
        if ( zoom < 0 )
            zoom = 0;
    }
    else if ( velocityX > 0.0f )
    {
        zoom += 10;
        if ( zoom > parameters.getMaxZoom() )
            zoom = parameters.getMaxZoom();
    }

    mCamera.startSmoothZoom(zoom);

    return false;
}

Then I detect if the surface changed and call a preview function to update the preview on the screen:

 private void initPreview(int width, int height) 
{
    if ( mCamera != null && mPreviewHolder.getSurface() != null) {
        try 
        {
            mCamera.setPreviewDisplay(mPreviewHolder);
        }
        catch (Throwable t) 
        {
            Log.e(TAG, "Exception in initPreview()", t);
            Toast.makeText(CameraZoom.this, t.getMessage(), Toast.LENGTH_LONG).show();
        }

        if ( !mCameraConfigured ) 
        {
            Camera.Parameters parameters = mCamera.getParameters();
            parameters.setPreviewFpsRange(30000, 30000);
            parameters.setPreviewSize(1920, 1080); // hard coded the largest size for now
            mCamera.setParameters(parameters);
            mCamera.enableShutterSound(true); 
            mCamera.setZoomChangeListener(this);

            mCameraConfigured = true;
        }
    }
}

The problem is when I call the camera to take the picture, it takes a picture of the preview that is significantly above where the preview is at. The height is not getting set to the preview parameters or something I am not sure. This is is the call to capture:

public void onClick(View v)
{
    mCamera.takePicture(null, null, capturedIt);
}

and captureIt is just a PictureCallback. So in summary the image in the preview is not the one being captured by the camera. Any help would be much appreciated.

asked Jan 24, 2015 by Troy Zuroske  

Your answer

Your name to display (optional):
Privacy: Your email address will only be used for sending these notifications.
Anti-spam verification:
To avoid this verification in future, please log in or register.
...