Активность превращается в пейзаж после открытия камеры - PullRequest
0 голосов
/ 13 июня 2018

Когда я открываю камеру, моя активность на секунду переходит в ландшафт, а затем обратно в портрет, после чего все данные в моем ListView исчезают.Вы знаете, как это исправить?

Я пытался использовать SCREEN_ORIENTATION_PORTRAIT, но у меня это не сработало.

Вот мой код.

private void onClick() {

        scanBtn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {

                IntentIntegrator integrator = new IntentIntegrator(MainActivity.this);

                integrator.setDesiredBarcodeFormats(IntentIntegrator.ALL_CODE_TYPES);
                integrator.setPrompt("Scan Code");
                integrator.setBeepEnabled(false);
                integrator.setCameraId(0);
                integrator.setBarcodeImageEnabled(false);
                integrator.initiateScan();
            }
        });
    }

    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        IntentResult result = IntentIntegrator.parseActivityResult(requestCode, resultCode, data);


        if (result != null) {

            scandata = result.getContents();
            scanFormat = result.getFormatName();

            if (scandata != null) {
                dta.add("Data: " + scandata + "     Format: " + scanFormat);

            }
        }



    }

Ответы [ 2 ]

0 голосов
/ 13 июня 2018

Ваше устройство плохо себя ведет, но не стоит отчаиваться.Если вы добавите «прокси» действие, которое будет скрывать список и отвечать за запуск намерения камеры и обработку результата, ваше основное действие будет защищено от нежелательного поворота.

С другой стороны, пустое представление спискаможет все еще появиться, если не на вашем устройстве, то на устройстве вашего клиента, особенно на устройствах с небольшим объемом ОЗУ или плохим приложением камеры.

Вы должны сохранять и восстанавливать состояние активности при необходимости, как описано в этомклассический ответ .

0 голосов
/ 13 июня 2018

Поместите один тег android:screenOrientation="portrait" в manifest.xml для требуемой активности в режиме портрета

, чтобы ваш код выглядел следующим образом:

 <activity
            android:name=".MainActivity"
            android:screenOrientation="portrait" />
...