Java ZXing:当应用程序重新打开时,相机没有重新打开(MainActivity为空)?

Java ZXing:当应用程序重新打开时,相机没有重新打开(MainActivity为空)?,java,android,zxing,Java,Android,Zxing,基本上,我要做的是切换活动(历史记录列表),并能够恢复扫描。它切换活动,恢复扫描仪视图,但不再扫描。当我关闭并重新打开应用程序时,我只会看到一个空白的白色屏幕,上面有应用程序名称和一个: W/CameraBase:连接到摄像头时出错:0 我读到的是当相机没有关好的时候。我似乎找不到问题的确切位置。这几天来,我一直无法正确关闭相机。我对安卓工作室比较陌生。我环顾了一下这里,一直在克制自己不发帖,但我发现什么都不管用。我的代码如下。知道我的错误在哪里吗?多谢各位 MainActivity.java

基本上,我要做的是切换活动(历史记录列表),并能够恢复扫描。它切换活动,恢复扫描仪视图,但不再扫描。当我关闭并重新打开应用程序时,我只会看到一个空白的白色屏幕,上面有应用程序名称和一个:

W/CameraBase:连接到摄像头时出错:0

我读到的是当相机没有关好的时候。我似乎找不到问题的确切位置。这几天来,我一直无法正确关闭相机。我对安卓工作室比较陌生。我环顾了一下这里,一直在克制自己不发帖,但我发现什么都不管用。我的代码如下。知道我的错误在哪里吗?多谢各位

MainActivity.java

import android.app.AlertDialog;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.Toast;

import com.google.zxing.Result;

import java.io.IOException;
import java.io.OutputStreamWriter;
import me.dm7.barcodescanner.zxing.ZXingScannerView;

public class MainActivity extends AppCompatActivity implements ZXingScannerView.ResultHandler {
    private ZXingScannerView mScannerView;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        mScannerView = new ZXingScannerView(this);   // Programmatically initialize the scanner view
        setContentView(mScannerView);

        mScannerView.setResultHandler(this); // Register ourselves as a handler for scan results.
        mScannerView.startCamera();         // Start camera
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.menu, menu);
        return true;
    }

    @Override
    // Overflow menu with "History". Touching that button launches a new activity
    public boolean onOptionsItemSelected(MenuItem item) {
        int selectedId = item.getItemId();

        switch (selectedId) {
            case R.id.mniHistory:
                mScannerView.stopCamera();
                Intent historyIntent = new Intent(MainActivity.this, ResultsActivity.class);
                startActivity(historyIntent);

                return true;
            default:
                return super.onOptionsItemSelected(item);
        }
    }


    @Override
    public void onPause() {
        super.onPause();
        mScannerView.stopCamera();           // Stop camera on pause

    }

    public void onResume() {
        super.onResume();
        mScannerView.setResultHandler(this); // Register ourselves as a handler for scan results.
        mScannerView.startCamera();          // Start camera on resume
        mScannerView.resumeCameraPreview(MainActivity.this);
    }

    @Override
    public void handleResult(final Result rawResult) {
        // Do something with the result here


        Log.e("handler", rawResult.getText()); // Prints scan results
        Log.e("handler", rawResult.getBarcodeFormat().toString()); // Prints the scan format (qrcode)


        // Alert Box
        AlertDialog.Builder builder1 = new AlertDialog.Builder(MainActivity.this);
        builder1.setTitle("Scan Result");
        builder1.setMessage(rawResult.getText() + "\n" + "Would you like to send this?");
        builder1.setCancelable(true);

        builder1.setPositiveButton(
                "Yes",
                new DialogInterface.OnClickListener() {
                    public void onClick(DialogInterface dialog, int id) {
                        Toast.makeText(MainActivity.this, "Message Sent", Toast.LENGTH_LONG).show();


                        // Add scan to text file
                        try {
                            OutputStreamWriter outputStreamWriter = new OutputStreamWriter(openFileOutput("History.txt", Context.MODE_APPEND));
                            outputStreamWriter.write(rawResult.getText());
                            outputStreamWriter.append("\n");
                            outputStreamWriter.close();
                        } catch (IOException e) {
                            Log.e("Exception", "File write failed: " + e.toString());
                        }

                        dialog.cancel();
                    }
                });

        builder1.setNegativeButton(
                "No",
                new DialogInterface.OnClickListener() {
                    public void onClick(DialogInterface dialog, int id) {
                        dialog.cancel();
                        mScannerView.resumeCameraPreview(MainActivity.this);
                    }
                });

        AlertDialog alert11 = builder1.create();
        alert11.show();
    }
}