Java 扫描条形码Mobile vision API时出错? public类MainActivity扩展了AppCompatActivity{ 文本视图; 位图; 按钮btn; @凌驾 创建时受保护的void(Bundle savedInstanceState){ super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); txt=(TextView)findViewById(R.id.txt); ImageView myImageView=(ImageView)findViewById(R.id.imgview); myBitmap=BitmapFactory.decodeResource( getApplicationContext().getResources(), R.可绘制条形码); 设置图像位图(myBitmap); btn=(按钮)findViewById(R.id.Button); btn.setOnClickListener(新视图.OnClickListener(){ @凌驾 公共void onClick(视图v){ bar(); } }); } 公共空白栏(){ 条形码检测器= 新的条形码检测器.Builder(getApplicationContext()) .setBarcodeFormats(条形码.数据|矩阵|条形码.二维码) .build(); 如果(!detector.isOperational()){ txt.setText(“无法设置检测器!”); 返回; } Frame Frame=new Frame.Builder().setBitmap(myBitmap.build(); SparseArray条码=检测器。检测(帧); 条形码thisCode=条形码。值位于(0); txt.setText(thisCode.rawValue); Toast.makeText(getApplicationContext(),thisCode.rawValue.toString(),Toast.LENGTH_SHORT).show(); } }
Java 扫描条形码Mobile vision API时出错? public类MainActivity扩展了AppCompatActivity{ 文本视图; 位图; 按钮btn; @凌驾 创建时受保护的void(Bundle savedInstanceState){ super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); txt=(TextView)findViewById(R.id.txt); ImageView myImageView=(ImageView)findViewById(R.id.imgview); myBitmap=BitmapFactory.decodeResource( getApplicationContext().getResources(), R.可绘制条形码); 设置图像位图(myBitmap); btn=(按钮)findViewById(R.id.Button); btn.setOnClickListener(新视图.OnClickListener(){ @凌驾 公共void onClick(视图v){ bar(); } }); } 公共空白栏(){ 条形码检测器= 新的条形码检测器.Builder(getApplicationContext()) .setBarcodeFormats(条形码.数据|矩阵|条形码.二维码) .build(); 如果(!detector.isOperational()){ txt.setText(“无法设置检测器!”); 返回; } Frame Frame=new Frame.Builder().setBitmap(myBitmap.build(); SparseArray条码=检测器。检测(帧); 条形码thisCode=条形码。值位于(0); txt.setText(thisCode.rawValue); Toast.makeText(getApplicationContext(),thisCode.rawValue.toString(),Toast.LENGTH_SHORT).show(); } },java,android,android-vision,Java,Android,Android Vision,barcode.png是: 每当我将此作为位图运行应用程序时,它就会崩溃,导致越界数组0异常。我不知道为什么会发生这种情况,但应用程序一直在崩溃 它可以检测到方形条形码,但它无法检测到这一个。这里的问题是什么 LOGCAT:条形码数组是一个SparseArray,这意味着返回值中可能存在间隙,也可能为空 您应该迭代这些键,然后从SparseArray检索值,如下所示: public class MainActivity extends AppCompatActivity { TextV
barcode.png
是:
每当我将此作为位图运行应用程序时,它就会崩溃,导致越界数组0
异常。我不知道为什么会发生这种情况,但应用程序一直在崩溃
它可以检测到方形条形码,但它无法检测到这一个。这里的问题是什么
LOGCAT:条形码数组是一个
SparseArray
,这意味着返回值中可能存在间隙,也可能为空
您应该迭代这些键,然后从SparseArray
检索值,如下所示:
public class MainActivity extends AppCompatActivity {
TextView txt;
Bitmap myBitmap;
Button btn;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
txt = (TextView)findViewById(R.id.txt);
ImageView myImageView = (ImageView) findViewById(R.id.imgview);
myBitmap = BitmapFactory.decodeResource(
getApplicationContext().getResources(),
R.drawable.barcode);
myImageView.setImageBitmap(myBitmap);
btn = (Button) findViewById(R.id.button);
btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
bar();
}
});
}
public void bar(){
BarcodeDetector detector =
new BarcodeDetector.Builder(getApplicationContext())
.setBarcodeFormats(Barcode.DATA_MATRIX | Barcode.QR_CODE)
.build();
if(!detector.isOperational()){
txt.setText("Could not set up the detector!");
return;
}
Frame frame = new Frame.Builder().setBitmap(myBitmap).build();
SparseArray<Barcode> barcodes = detector.detect(frame);
Barcode thisCode = barcodes.valueAt(0);
txt.setText(thisCode.rawValue);
Toast.makeText(getApplicationContext(), thisCode.rawValue.toString(), Toast.LENGTH_SHORT).show();
}
}
for(int i=0;i
条形码数组是一个SparseArray
,这意味着返回值中可能存在间隙,也可能为空
您应该迭代这些键,然后从SparseArray
检索值,如下所示:
public class MainActivity extends AppCompatActivity {
TextView txt;
Bitmap myBitmap;
Button btn;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
txt = (TextView)findViewById(R.id.txt);
ImageView myImageView = (ImageView) findViewById(R.id.imgview);
myBitmap = BitmapFactory.decodeResource(
getApplicationContext().getResources(),
R.drawable.barcode);
myImageView.setImageBitmap(myBitmap);
btn = (Button) findViewById(R.id.button);
btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
bar();
}
});
}
public void bar(){
BarcodeDetector detector =
new BarcodeDetector.Builder(getApplicationContext())
.setBarcodeFormats(Barcode.DATA_MATRIX | Barcode.QR_CODE)
.build();
if(!detector.isOperational()){
txt.setText("Could not set up the detector!");
return;
}
Frame frame = new Frame.Builder().setBitmap(myBitmap).build();
SparseArray<Barcode> barcodes = detector.detect(frame);
Barcode thisCode = barcodes.valueAt(0);
txt.setText(thisCode.rawValue);
Toast.makeText(getApplicationContext(), thisCode.rawValue.toString(), Toast.LENGTH_SHORT).show();
}
}
for(int i=0;i
你能发布logcat吗?@prasad,我已经添加了logcat。请在问题中发布,而不是作为某个场外文档共享网站的链接。而不是作为一个“pdf”文件,大声呼喊!你能发布logcat吗?@prasad,我已经添加了logcat。请在问题中发布它,而不是作为某个场外文档共享站点的链接。而不是作为一个“pdf”文件,大声呼喊!