Android ZXING代码读取器中的自定义摄像机视图,用于显示检测
我正在使用ZXING二维码阅读器。它工作得很好。检测代码等,但扫描二维码时不显示任何检测进度(如红线)。这是截图 我的活动是 JavaAndroid ZXING代码读取器中的自定义摄像机视图,用于显示检测,android,qr-code,zxing,Android,Qr Code,Zxing,我正在使用ZXING二维码阅读器。它工作得很好。检测代码等,但扫描二维码时不显示任何检测进度(如红线)。这是截图 我的活动是 Java public class ScanCode extends Activity implements OnClickListener { Button btnScan; TextView scanResult; String text; Bitmap bmp; ImageView ivPic; @Override public void onCreate(B
public class ScanCode extends Activity implements OnClickListener {
Button btnScan;
TextView scanResult;
String text;
Bitmap bmp;
ImageView ivPic;
@Override
public void onCreate(Bundle icicle) {
// TODO Auto-generated method stub
super.onCreate(icicle);
setContentView(R.layout.scan_code);
initViews();
}
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
if (v.getId() == R.id.btnScanCode) {
Intent intent = new Intent(
"com.google.zxing.client.android.SCAN");
intent.putExtra("SCAN_MODE", "QR_CODE_MODE");
startActivityForResult(intent, 1);
}
}
private void initViews() {
scanResult = (TextView) findViewById(R.id.scanResult);
ivPic = (ImageView) findViewById(R.id.capturedImg);
btnScan = (Button) findViewById(R.id.btnScanCode);
btnScan.setOnClickListener(this);
}
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == 1)
if (resultCode == Activity.RESULT_OK) {
String contents = data.getStringExtra("SCAN_RESULT");
String format = data.getStringExtra("SCAN_RESULT_FORMAT");
Toast.makeText(getApplicationContext(), contents,
Toast.LENGTH_SHORT).show();
scanResult.setText(contents);
}// if result_ok
}// onActivityResult
}
我知道这个答案有点晚了,但我最近刚在我的应用程序中使用了Zxing条形码/二维码扫描仪,如果有人在实现它时遇到问题,请按照以下步骤操作(使用Android Studio官方IDE for Android) 首先在
app-->build.gradle
文件中添加依赖项
dependencies {
compile 'com.journeyapps:zxing-android-embedded:3.2.0@aar'
compile 'com.google.zxing:core:3.2.1'
}
活动用法:
public class MainActivity extends AppCompatActivity {
Button btnScan;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
btnScan = (Button) findViewById(R.id.btnScan);
btnScan.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
scanBarcode();
}
});
}
private void scanBarcode()
{
new IntentIntegrator(this).initiateScan();
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
IntentResult result = IntentIntegrator.parseActivityResult(requestCode, resultCode, data);
if(result != null) {
if(result.getContents() == null) {
Log.d("MainActivity", "Cancelled scan");
Toast.makeText(this, "Cancelled", Toast.LENGTH_LONG).show();
} else {
Log.d("MainActivity", "Scanned");
Toast.makeText(this, "Scanned: " + result.getContents(), Toast.LENGTH_LONG).show();
}
}
}
}
如果要使用自定义回调和条形码视图。Zxing提供此功能,只需制作布局文件即可
<com.journeyapps.barcodescanner.CompoundBarcodeView
android:id="@+id/barcode_scanner"
android:layout_width="match_parent"
android:layout_height="match_parent">
</com.journeyapps.barcodescanner.CompoundBarcodeView>
<TextView
android:id="@+id/tvScanResult"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Scan Results will be shown here"
android:textColor="@android:color/white"
android:textStyle="bold"/>
在活动中,请使用以下代码
public class MainActivity extends AppCompatActivity
{
CompoundBarcodeView barcodeView;
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
barcodeView = (CompoundBarcodeView) findViewById(R.id.barcode_scanner);
barcodeView.decodeContinuous(callback);
barcodeView.setStatusText("");
}
@Override
protected void onResume()
{
super.onResume();
barcodeView.resume();
isScanned = false;
}
@Override
protected void onPause()
{
super.onPause();
barcodeView.pause();
}
@Override
public boolean onKeyDown(int keyCode, KeyEvent event)
{
return barcodeView.onKeyDown(keyCode, event) || super.onKeyDown(keyCode, event);
}
private BarcodeCallback callback = new BarcodeCallback()
{
@Override
public void barcodeResult(BarcodeResult result)
{
if (result.getText() != null)
{
barcodeView.setStatusText(result.getText());
tvscanResult.setText("Data found: " + result.getText());
}
//you can also Add preview of scanned barcode
//ImageView imageView = (ImageView) findViewById(R.id.barcodePreview);
//imageView.setImageBitmap(result.getBitmapWithResultPoints(Color.YELLOW));
}
@Override
public void possibleResultPoints(List<ResultPoint> resultPoints)
{
System.out.println("Possible Result points = " + resultPoints);
}
};
}
public类MainActivity扩展了AppCompatActivity
{
复合条码视图条码视图;
@凌驾
创建时受保护的void(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
条形码视图=(CompoundBarcodeView)findViewById(R.id.barcode\U扫描仪);
barcodeView.decodeContinuous(回调);
barcodeView.setStatusText(“”);
}
@凌驾
受保护的void onResume()
{
super.onResume();
resume();
ISS=假;
}
@凌驾
受保护的void onPause()
{
super.onPause();
barcodeView.pause();
}
@凌驾
公共布尔onKeyDown(int-keyCode,KeyEvent事件)
{
返回barcodeView.onKeyDown(keyCode,event)| super.onKeyDown(keyCode,event);
}
私有BarcodeCallback回调=新的BarcodeCallback()
{
@凌驾
公共无效条形码结果(条形码结果)
{
if(result.getText()!=null)
{
barcodeView.setStatusText(result.getText());
tvscanResult.setText(“找到的数据:+result.getText());
}
//您还可以添加扫描条形码的预览
//ImageView ImageView=(ImageView)findViewById(R.id.barcodePreview);
//setImageBitmap(result.getBitmapWithResultPoints(Color.YELLOW));
}
@凌驾
公共无效可能结果点(列出结果点)
{
System.out.println(“可能的结果点=”+resultPoints);
}
};
}
来源。希望有人能从这个解决方案中得到帮助