Android 导致碰撞的方向错误
我有一个活动,该活动将方向设置为lanscape,该活动运行正常,但如果启动活动时手机处于纵向模式,我会收到此错误,活动停止并返回到其他活动:Android 导致碰撞的方向错误,android,android-camera,android-orientation,Android,Android Camera,Android Orientation,我有一个活动,该活动将方向设置为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 ducat
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
正在从另一个也设置为横向的活动调用该活动,如果在横向中保持设备时切换活动,则不会崩溃。。仅在启动时以纵向方式握住设备时
在这两个活动中,我在onCreate()中设置方向,如下所示:
这似乎与我在即将启动的活动中放置CameraPreview曲面有关,因此我将包括camera类,以防出现问题:
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()中,如下所示:
好吧,看来如果我在清单中为那个活动设置方向。。问题消失了。。但我不明白确切的原因。
修正:
android:screenOrientation=“landscape”
在活动清单中因为此属性强制您的相机活动处于横向,所以当未定义方向时,选项设备本身无法决定要执行哪个视图
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();
}
}
camPreview = new KNCamLayer(this);
frame.addView(camPreview, new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT));