Предварительный просмотр камеры и элементы AR не отображаются при переходе из другого действия - PullRequest
0 голосов
/ 08 апреля 2011

Я пытаюсь разработать приложение AR для учебных целей. Существует основное действие, которое содержит FrameLayout с двумя видами: предварительный просмотр камеры (SurfaceView реализует SurfaceHolder.Callback) и другую пользовательскую поверхность для рисования текста поверх предварительного просмотра камеры. Этот FrameLayout создается в методе onCreate MainActivity:

@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 рисуются один раз, но не обновляются, они снова рисуются, рисуя весь экран без очистки, прежде чем показывать движение!

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

Отладка обоих сценариев, которые я проверил: Когда MainActivity является первым действием, журнал: 04-08 13: 43: 03.498: INFO / ActivityManager (85): отображаемое действие com.lagunitacrew.activities / .MainActivity: 929 мс (всего 929 мс) отображается перед открытием камеры. Однако во втором сценарии, когда MainActivity вызывается из действия «Меню», эта трассировка записывается после открытия камеры

Большое спасибо !!!

1 Ответ

0 голосов
/ 11 апреля 2011

Когда ваша активность переходит в фоновый режим, вы пытаетесь уничтожить текущий экран?Я думаю, что проблема в том, что функция camera.open () не работает, когда вы возвращаетесь.Я предлагаю вам написать функцию для уничтожения пользовательского интерфейса, когда приложение переходит в фоновый режим, и вызывать эту функцию в функции onPause.

...