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();
}
}