我正在编写一个应用程序,以便用户在扫描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();
}
}
我将不胜感激。