Сканер Zxing не запускается при перезапуске активности - PullRequest
0 голосов
/ 13 мая 2019

Я программирую приложение, в котором пользователь получает информацию при сканировании QR-кода.

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

Я думаю, что проблема в процессе перезапуска активности, либо на onRestart, либо onStartметоды ... я могу ошибаться.

Это код активности сканера:

public class EscanerQrActivity extends AppCompatActivity implements ZXingScannerView.ResultHandler {

    public String code;
    private ZXingScannerView zXingScannerView;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_escaner_qr);

        getWindow().setFlags(WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS, WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS);
        zXingScannerView = (ZXingScannerView) findViewById(R.id.scanner);
        zXingScannerView.setResultHandler(this);
        zXingScannerView.startCamera();
    }

    @Override
    public void handleResult(Result result) {
        code = result.getText();
        saveLocal(readQRCode(code, 0)); //Guarda referencia QR del Local
        saveID(readQRCode(code, 1)); //Guarda referencia QR del ID de la mesa
        //Vibrar
        Vibrator vibrator = (Vibrator) getApplicationContext().getSystemService(Context.VIBRATOR_SERVICE);
        vibrator.vibrate(200);
        startActivity(new Intent(EscanerQrActivity.this, MainActivity.class));
    }

    @Override
    public void onBackPressed() {
        super.onBackPressed();
    }

    public String readQRCode(String s, int i){//i=0 Local ; i=1 IdMesa
        String [] parts = s.split("=="); //obtiene las partes
        String [] p = parts[0].split("//"); //limpia la primera parte
        parts[0] = p[1];
        return parts[i];
    }
    public String verificarQRCode(String s, int i){//i=0 Enlace BD
        String [] parts = s.split("Locales");
        return parts[i];
    }
    private void saveID(String qr){
        try { OutputStreamWriter fout= new OutputStreamWriter(openFileOutput("QR.IdMV", Context.MODE_PRIVATE));
            fout.write(qr);
            fout.close();
        } catch (Exception ex) {
            Log.e("Ficheros", "Error al escribir fichero a memoria interna");
        }
    }
    private void saveLocal(String qr){
        try { OutputStreamWriter fout= new OutputStreamWriter(openFileOutput("QR.Local", Context.MODE_PRIVATE));
            fout.write(qr);
            fout.close();
        } catch (Exception ex) {
            Log.e("Ficheros", "Error al escribir fichero a memoria interna");
        }
    }

    @Override
    protected void onRestart() {
        super.onRestart();
    }

    @Override
    protected void onStart() {
        super.onStart();
    }
}

Буду признателен за любой вклад.

...