Авторизация
Lost your password? Please enter your email address. You will receive a link and will create a new password via email.
После регистрации вы можете задавать вопросы и отвечать на них, зарабатывая деньги. Ознакомьтесь с правилами, будем рады видеть вас в числе наших авторов!
Вы должны войти или зарегистрироваться, чтобы добавить ответ.
Для считывания QR-кода на устройствах Android можно использовать библиотеку ZXing (Zebra Crossing). Вот пример кода, который позволяет считать QR-код с помощью этой библиотеки:
1. Добавьте следующую зависимость в файл build.gradle (Module: app):
«`
implementation ‘com.google.zxing:core:3.4.1’
implementation ‘com.journeyapps:zxing-android-embedded:3.6.0’
«`
2. В макете активности добавьте SurfaceView для предпросмотра камеры:
«`xml
«`
3. В коде активности добавьте следующий код для настройки и запуска сканера QR-кода:
«`java
import android.Manifest;
import android.content.pm.PackageManager;
import android.os.Bundle;
import android.util.Log;
import android.view.SurfaceHolder;
import android.view.SurfaceView;
import android.view.View;
import android.widget.Toast;
import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;
import androidx.core.app.ActivityCompat;
import androidx.core.content.ContextCompat;
import com.google.zxing.BarcodeFormat;
import com.google.zxing.Result;
import com.journeyapps.barcodescanner.BarcodeCallback;
import com.journeyapps.barcodescanner.BarcodeResult;
import com.journeyapps.barcodescanner.CompoundBarcodeView;
import java.util.Collections;
import java.util.List;
public class MainActivity extends AppCompatActivity {
private static final int CAMERA_PERMISSION_REQUEST_CODE = 200;
private CompoundBarcodeView barcodeView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
barcodeView = findViewById(R.id.barcode_scanner);
if (ContextCompat.checkSelfPermission(this, Manifest.permission.CAMERA) != PackageManager.PERMISSION_GRANTED) {
ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.CAMERA}, CAMERA_PERMISSION_REQUEST_CODE);
} else {
startBarcodeScanner();
}
}
private void startBarcodeScanner() {
barcodeView.decodeContinuous(new BarcodeCallback() {
@Override
public void barcodeResult(BarcodeResult result) {
if (result.getText() != null) {
// QR-код успешно считан
String qrCodeText = result.getText();
Log.d(«QR Code», qrCodeText);
Toast.makeText(MainActivity.this, qrCodeText, Toast.LENGTH_SHORT).show();
}
}
@Override resultPoints) {
public void possibleResultPoints(List
}
});
}
@Override
protected void onResume() {
super.onResume();
barcodeView.resume();
}
@Override
protected void onPause() {
super.onPause();
barcodeView.pause();
}
@Override
protected void onDestroy() {
super.onDestroy();
barcodeView.destroy();
}
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
if (requestCode == CAMERA_PERMISSION_REQUEST_CODE) {
if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
startBarcodeScanner();
} else {
Toast.makeText(this, «Permission denied», Toast.LENGTH_SHORT).show();
}
}
}
}
«`
Этот код настраивает и запускает сканер QR-кода с использованием ZXing. Когда QR-код успешно считывается, его текст будет выведен в журнал Log и отображен во всплывающем сообщении Toast.