要在Android Studio中实现条形码读取,可以使用Zxing库。以下是一个使用Zxing库实现条形码读取的示例代码:
build.gradle
文件中添加以下依赖项:dependencies {
implementation 'com.google.zxing:core:3.4.0'
implementation 'com.journeyapps:zxing-android-embedded:3.6.0'
}
AndroidManifest.xml
文件中添加以下权限:
SurfaceView
用于显示相机预览。例如,创建一个名为BarcodeScannerActivity
的Activity:public class BarcodeScannerActivity extends AppCompatActivity implements ZXingScannerView.ResultHandler {
private ZXingScannerView scannerView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_barcode_scanner);
scannerView = new ZXingScannerView(this);
FrameLayout contentFrame = findViewById(R.id.content_frame);
contentFrame.addView(scannerView);
}
@Override
public void onResume() {
super.onResume();
scannerView.setResultHandler(this);
scannerView.startCamera();
}
@Override
public void onPause() {
super.onPause();
scannerView.stopCamera();
}
@Override
public void handleResult(Result rawResult) {
// 处理扫描结果
String barcode = rawResult.getText();
Toast.makeText(this, "扫描结果:" + barcode, Toast.LENGTH_SHORT).show();
// 重新开始扫描
scannerView.resumeCameraPreview(this);
}
}
activity_barcode_scanner.xml
的布局文件:
BarcodeScannerActivity
:public class MainActivity extends AppCompatActivity {
private static final int REQUEST_CODE_SCAN = 100;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button scanButton = findViewById(R.id.scan_button);
scanButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(MainActivity.this, BarcodeScannerActivity.class);
startActivityForResult(intent, REQUEST_CODE_SCAN);
}
});
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == REQUEST_CODE_SCAN && resultCode == RESULT_OK) {
String barcode = data.getStringExtra("barcode");
// 处理扫描结果
Toast.makeText(this, "扫描结果:" + barcode, Toast.LENGTH_SHORT).show();
}
}
}
这样,当用户点击主Activity中的扫描按钮时,将启动BarcodeScannerActivity
进行条形码扫描。扫描结果将在handleResult
方法中处理,并通过Toast显示出来。