Я программирую приложение, в котором пользователь получает информацию при сканировании 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();
}
}
Буду признателен за любой вклад.