从其他活动导航时,不显示相机预览和AR项目

时间:2011-04-08 13:08:02

标签: android camera preview augmented-reality surfaceview

我正在尝试开发用于培训目的的AR应用程序。 有一个主要活动包含一个带有两个视图的FrameLayout:摄影机预览(实现SurfaceHolder.Callback的SurfaceView)和另一个用于在摄像机预览上绘制文本的自定义曲面。 此FrameLayout是在MainActivity的onCreate方法中创建的:

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    requestWindowFeature(Window.FEATURE_NO_TITLE);

    try{
        setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
        requestWindowFeature(Window.FEATURE_NO_TITLE); 
        getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, 
                WindowManager.LayoutParams.FLAG_FULLSCREEN);

        //Panel for AR items
        **panelSurface = new PanelSurface(this);**

        WindowManager w = getWindowManager();
        Display d = w.getDefaultDisplay();
        int width = d.getWidth();
        int height = d.getHeight();
        panelSurface.setScreenSize(width, height);


        loadARItems();            

         //General frame
        FrameLayout rl = new FrameLayout(this);
         //Camera Surface
        **cv = new CustomCameraView(this);**
        rl.addView(cv, width, height);
        rl.addView(panelSurface, width, height);
        setContentView(rl);

        //Initialize sensors
        sensorMan = (SensorManager) getSystemService(Context.SENSOR_SERVICE);
        sensor = sensorMan.getDefaultSensor(Sensor.TYPE_ORIENTATION);
        locMan = (LocationManager)getSystemService(Context.LOCATION_SERVICE);
    }
    catch(Exception e){
        Log.e(TAG, "Error creating main activity: " + e.getMessage());
    }
}

如果此活动是第一个要调用的活动:相机预览会正确显示我的AR项目。 然而,当我来自另一个活动时,问题出现了: 有一个包含几个按钮的菜单活动。其中一个按钮将调用主要活动:

private OnClickListener mapListener = new OnClickListener() {
    public void onClick(View v) {
        Intent intent = new Intent(MenuActivity.this, MainActivity.class);
        startActivity(intent);          
    }
}; 

从其他活动导航时,相机未显示!!屏幕保持黑色。 并且AR项目被绘制一次但没有刷新,它们被绘制再次绘制所有屏幕whitout清洁它之前显示运动!

为什么使用相同代码的相同活动在从另一个活动调用时无法正常工作???

调试我检查过的两个场景: 当MainActivity是第一个Activity时,日志: 04-08 13:43:03.498:INFO / ActivityManager(85):显示的活动com.lagunitacrew.activities / .MainActivity:929 ms(总计929 ms) 在打开相机之前显示。 但是,在第二种情况下,从Menu活动调用MainActivity时,打开相机后会写入此跟踪

非常感谢!!!

1 个答案:

答案 0 :(得分:0)

当您的活动进入后台时,您是否尝试销毁当前屏幕?我认为问题是camera.open()函数返回时不起作用。我建议您在应用程序进入后台并在onPause函数中调用此函数时编写一个销毁UI的函数。