2013-05-30 3 views
0

У меня есть активность, которая устанавливает ориентацию на lanscape для работы, которая работает нормально, но если телефон находится в портретном режиме при запуске этой активности, я получаю эту ошибку, и действие останавливается и возвращается к другому активность:ошибка ориентации, вызывающая сбой

05-30 11:06:48.335: D/DOMX(125): ERROR: failed check:(eError == OMX_ErrorNone) || (eError == OMX_ErrorNoMore) - returning error: 0x80001005 - Error returned from OMX API in ducati 
05-30 11:06:48.335: E/CameraHAL(125): Error while configuring rotation 0x80001005 
05-30 11:06:48.460: D/DOMX(125): ERROR: failed check:(eError == OMX_ErrorNone) || (eError == OMX_ErrorNoMore) - returning error: 0x80001005 - Error returned from OMX API in ducati 
05-30 11:06:48.460: E/CameraHAL(125): Error while configuring rotation 0x80001005 
05-30 11:06:48.765: E/CameraHAL(125): Adapter state switch PREVIEW_ACTIVE Invalid Op! event = 0xf 

активность вызывается из другой деятельности, которая также устанавливается в ландшафт и не вылетать, если я переключить деятельность, удерживая устройство в альбомной .. только держа устройство в портретном из на время запуска ..

в обеих действиях i задает ориентацию в onCreate() следующим образом:

this.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE); 

кажется, что нужно сделать с тем, что я помещаю поверхность CameraPreview в деятельности, которая запускает поэтому я в том числе класса камеры упаковывают, что это проблема:

public class KNCamLayer extends SurfaceView { 
     Camera camera; 
     SurfaceHolder previewHolder; 

     public KNCamLayer(Context context) 
     { 
      super(context); 
      previewHolder = this.getHolder(); 

      //previewHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS); 
      previewHolder.addCallback(surfaceHolderListener); 

     } 

     SurfaceHolder.Callback surfaceHolderListener = new SurfaceHolder.Callback() { 

      public void surfaceCreated(SurfaceHolder holder) { 
       camera=Camera.open(); 
      try { 
       camera.setPreviewDisplay(previewHolder); 

      } 
       catch (Throwable e){ } 
      } 
      public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) 
      { 
       Parameters params = camera.getParameters(); 
       //params.setPreviewSize(width, height); 
       params.setPictureFormat(PixelFormat.JPEG); 
       camera.setParameters(params); 
       camera.startPreview(); 


      } 
      public void surfaceDestroyed(SurfaceHolder arg0) 
      { 
       camera.stopPreview(); 
       camera.release(); 
      } 

     }; 

     public void onResume() { 
      camera.startPreview(); 

     } 

     public void onPause() { 
      // TODO Auto-generated method stub 
      camera.stopPreview(); 
     } 

} 

CameraView добавляется в onResume своей деятельности в() следующим образом:

camPreview = new KNCamLayer(this); 
     frame.addView(camPreview, new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT)); 

ответ

0

Ok, так что кажется, что если я установить ориентацию в манифесте для этой деятельности .. проблема уходит .. но я не understan что именно.
фикс:

android:screenOrientation="landscape" в манифесте деятельности

+0

it'e, потому что это свойство сил камеры активность, чтобы быть в ландшафте, который не дает сам вариант устройства, чтобы решить, какой вид он хочет выполнить, когда ориентация является не определен – Saqib

Смежные вопросы