Android应用程序,一切正常,但相机无法对焦,散布效果糟透了,尽管不应如此
我不知道哪里是错误
public class QRCodeScannerActivity extends AppCompatActivity {
SurfaceView cameraSurfaceView;
TextView scanDescriptionTextView;
BarcodeDetector barcodeDetector;
CameraSource cameraSource;
final int requestCameraPermissionID = 1001;
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
switch (requestCode) {
case requestCameraPermissionID: {
if (grantResults[0] == PackageManager.PERMISSION_GRANTED) {
if (ActivityCompat.checkSelfPermission(this, Manifest.permission.CAMERA) != PackageManager.PERMISSION_GRANTED) {
return;
}
try {
cameraSource.takePicture();
cameraSource.start(cameraSurfaceView.getHolder());
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_qrcode_scanner);
cameraSurfaceView = (SurfaceView) findViewById(R.id.cameraSurfaceView);
scanDescriptionTextView = (TextView) findViewById(R.id.ScanDescriptionTextView);
barcodeDetector = new BarcodeDetector.Builder(this).setBarcodeFormats(Barcode.QR_CODE).build();
cameraSource = new CameraSource.Builder(this, barcodeDetector).setRequestedPreviewSize(1980, 1024).build();
//Add Event
cameraSurfaceView.getHolder().addCallback(new SurfaceHolder.Callback() {
@Override
public void surfaceCreated(SurfaceHolder surfaceHolder) {
if (ActivityCompat.checkSelfPermission(getApplicationContext(), Manifest.permission.CAMERA) != PackageManager.PERMISSION_GRANTED) {
//Request Permission
ActivityCompat.requestPermissions(QRCodeScannerActivity.this, new String[]{Manifest.permission.CAMERA}, requestCameraPermissionID);
return;
}
try{
cameraSource.start(cameraSurfaceView.getHolder());
}catch(IOException e){
e.printStackTrace();
}
}
@Override
public void surfaceChanged(SurfaceHolder surfaceHolder, int i, int i1, int i2) {
}
@Override
public void surfaceDestroyed(SurfaceHolder surfaceHolder) {
cameraSource.stop();
}
});
barcodeDetector.setProcessor(new Detector.Processor<Barcode>() {
@Override
public void release() {
}
@Override
public void receiveDetections(Detector.Detections<Barcode> detections) {
final SparseArray<Barcode> qrcode = detections.getDetectedItems();
if(qrcode.size()!=0)
{
scanDescriptionTextView.post(new Runnable() {
@Override
public void run() {
Vibrator vibrator = (Vibrator)getApplicationContext().getSystemService(Context.VIBRATOR_SERVICE);
vibrator.vibrate(1000);
scanDescriptionTextView.setText("Result : " + qrcode.valueAt(0).displayValue);
}
});
}
}
});
}
}
这是一个处理QR码的应用程序,除了聚焦相机外,我已经做了所有事情,该怎么办?我不知道
相机应该清晰可见,并能看到QR码。