gpt4 book ai didi

java - 点击返回时相机变黑(二维码)

转载 作者:行者123 更新时间:2023-12-02 11:42:56 27 4
gpt4 key购买 nike

我有一个使用相机扫描二维码的应用程序。当我打开应用程序并转到二维码阅读器时,一切正常。一旦我扫描代码,信息就会发送到另一个 Activity ,但是一旦我点击后退按钮,相机就会变黑(见下文),我就无法再拍照了。因此,以某种方式恢复 Activity 会停止相机。

enter image description here

我尝试扫描代码,即使它是空白的,因为我认为这可能只是屏幕问题,但事实并非如此。但如果我离开 Activity 并回来, Activity 就会恢复。 Logcat 没有显示任何问题,只是在 Firebase 中注册了事件。谁能帮我看看这是硬件问题还是代码错误?或者这是需要重新启动 Activity 的正常行为?

用于QR扫描的Java文件如下:

import android.Manifest;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.os.Bundle;
import android.support.v4.app.ActivityCompat;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.Toast;

import com.google.zxing.Result;

import me.dm7.barcodescanner.zxing.ZXingScannerView;

public class CodQR extends AppCompatActivity implements ZXingScannerView.ResultHandler {
private static final int ID_UL_MEU_PENTRU_PERMISIA_DE_CAMERA = 1000;
private ZXingScannerView zXingScannerView;


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

public void scan() {
zXingScannerView = new ZXingScannerView(getApplicationContext());
setContentView(zXingScannerView);
zXingScannerView.setResultHandler(this);
zXingScannerView.startCamera();

}

@Override
public void handleResult(Result result) {
Toast.makeText(getApplicationContext(), result.getText(), Toast.LENGTH_SHORT).show();
String MyText = result.getText().toString();
Intent intent = new Intent(CodQR.this, Qr_Results.class);
intent.putExtra(Intent.EXTRA_TEXT, MyText);
startActivity(intent);
zXingScannerView.resumeCameraPreview(this);
}
//Permissions

public void CheckPermissionsCamera(View view) {
if (ActivityCompat.checkSelfPermission(this, Manifest.permission.CAMERA) != PackageManager.PERMISSION_GRANTED) {
Toast.makeText(this, "Insufficient permissions.", Toast.LENGTH_LONG).show();
ActivityCompat.requestPermissions(this,
new String[] {
Manifest.permission.CAMERA
},
ID_UL_MEU_PENTRU_PERMISIA_DE_CAMERA
);
} else {
scan();
}
}


@Override
public void onRequestPermissionsResult(int requestCode, String permissions[], int[] grantResults) {
switch (requestCode) {
case ID_UL_MEU_PENTRU_PERMISIA_DE_CAMERA:
{
if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
Toast.makeText(this, "Permission granted", Toast.LENGTH_SHORT).show();
} else {
// daca grantResults e gol, a dat cancel
Toast.makeText(this, "You didn't accept the permission", Toast.LENGTH_LONG).show();
}
}
}
}
}


public class Qr_Results extends AppCompatActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_qr_results);
TextView myText = findViewById(R.id.Text_Qr_Results);
//Get Intent
Intent intent = getIntent();
//Get the string value of the intent
String text = intent.getStringExtra(Intent.EXTRA_TEXT);
//Set text to TextView
myText.setText(text);
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);

if (getSupportActionBar() != null) {
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
getSupportActionBar().setDisplayShowHomeEnabled(true);
}
}
public boolean onSupportNavigateUp() {
onBackPressed();
return true;
}
}

我也可以发布布局,但我认为它们不相关。代码中是否有某些内容可能会触发此行为?或者我应该添加一些东西来重新启动相机?

最佳答案

如果你看一下 barcodescanner repo 中的示例代码,您应该在 CodQR Activity 的 onPause() 方法中停止相机预览。

这是因为当 Activity 暂停且不再位于前台时,需要释放相机资源。当您转到 Qr_Results Activity 时,CodQR Activity 仅暂停而不释放相机。这就是当您点击后退按钮时预览不会重新启动的原因。当不再需要某个 Activity 的资源时,最好始终释放它们。

尝试在 CodQR Activity 中添加对 stopCamera() 的调用,看看是否可以解决问题:

@Override
public void onPause() {
super.onPause();
zXingScannerView.stopCamera();
}

关于java - 点击返回时相机变黑(二维码),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48405665/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com