2013-08-16 4 views
1

Я работаю над пользовательской камерой, используя Surface view в своем приложении, а также записываю видео с захватом экрана.Zoom Control in Camera не работает в Android

Я ищу, чтобы реализовать управление увеличением в моем коде камеры, но не добился успеха.

Получение этого журнала во время зуммирования:

E/Adreno200-ES20(12756): <qgl2DrvAPI_glBufferSubData:709>: GL_INVALID_OPERATION 

Я использую ниже код:

/** * setZoomControl * @param Params */

public void setZoomControl(Camera.Parameters params) { 
    paramtrs = params; 
    ZoomControls zoomControls = (ZoomControls) findViewById(R.id.zoomcontrols); 

    if (params.isZoomSupported()) { 
     final int maxZoomLevel = paramtrs.getMaxZoom(); 
     Log.i("max ZOOM ", "is " + maxZoomLevel); 

     zoomControls.setIsZoomInEnabled(true); 
     zoomControls.setIsZoomOutEnabled(true); 

     zoomControls.setOnZoomInClickListener(new OnClickListener() { 
      public void onClick(View v) { 
       int currentZoomLevel = 0; 
       if (currentZoomLevel < maxZoomLevel) { 
        currentZoomLevel++; 
        camera.startSmoothZoom(currentZoomLevel); 
       } 
      } 
     }); 

     zoomControls.setOnZoomOutClickListener(new OnClickListener() { 
      public void onClick(View v) { 
       int currentZoomLevel = 0; 
       if (currentZoomLevel > 0) { 
        currentZoomLevel--; 
        camera.startSmoothZoom(currentZoomLevel); 
       } 
      } 
     }); 
    } else 
     zoomControls.setVisibility(View.GONE); 
} 

Пожалуйста, предложите меня то, что происходит в моем коде.

ответ

11

Вы можете использовать этот код

if (params.isZoomSupported()) { 
     final int maxZoomLevel = params.getMaxZoom(); 
     Log.i("max ZOOM ", "is " + maxZoomLevel); 
     zoomControls.setIsZoomInEnabled(true); 
     zoomControls.setIsZoomOutEnabled(true); 

     zoomControls.setOnZoomInClickListener(new OnClickListener(){ 
      public void onClick(View v){ 
       if(currentZoomLevel < maxZoomLevel){ 
        currentZoomLevel++; 
        //mCamera.startSmoothZoom(currentZoomLevel); 
        params.setZoom(currentZoomLevel); 
        mCamera.setParameters(params); 
       } 
      } 
     }); 

     zoomControls.setOnZoomOutClickListener(new OnClickListener(){ 
      public void onClick(View v){ 
       if(currentZoomLevel > 0){ 
        currentZoomLevel--; 
        params.setZoom(currentZoomLevel); 
        mCamera.setParameters(params); 
       } 
      } 
     });  
    } 
    else 
     zoomControls.setVisibility(View.GONE);