Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/unix/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 使用ZXING进行QRCode编码_Android_Android Intent - Fatal编程技术网

Android 使用ZXING进行QRCode编码

Android 使用ZXING进行QRCode编码,android,android-intent,Android,Android Intent,我正在尝试在二维码五星中兴库中编码一个字符串。这是与此对应的代码行: Button btn; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); btn = (Button)findViewById(R.id.button1); btn.s

我正在尝试在二维码五星中兴库中编码一个字符串。这是与此对应的代码行:

Button btn;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    btn = (Button)findViewById(R.id.button1);
    btn.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            Intent intent = new Intent("com.google.zxing.client.android.ENCODE");
            intent.addCategory(Intent.CATEGORY_DEFAULT);
            intent.putExtra("ENCODE_TYPE", "TEXT_TYPE");
            intent.putExtra("ENCODE_DATA","HELLO WORLD");
            startActivityForResult(intent, 0);

        }
    });
}
点击按钮后,我有一个“强制关闭”

在浏览了一些网站后,我们说它只适用于这些行。不幸的是,这不是给我的

请你给我一些建议,让它发挥作用。或者,如果你有其他方法将QRCode生成器集成到我的ANDROID应用程序中,那也会很棒

这一行:

Intent intent = new Intent("com.google.zxing.client.android.ENCODE");
标识您正在调用的活动。为了使其工作,设备上必须存在该活动。如果您尚未在项目中实现活动(即,
com.google.zxing.client.android
包中没有类
ENCODE
),那么您将从自己的程序调用外部应用程序。如果设备/模拟器上没有响应
com.google.zxing.client.android.ENCODE
广播的应用程序,那么使用此解决方案,将一事无成

您需要安装一个响应
com.google.zxing.client.android.ENCODE
的应用程序,或者找到另一种方法


可以使用应用程序中的zxing库自己生成条形码。有一个在谷歌代码的一些下载项目看看。这将消除您对现有外部应用程序的依赖性,提供更彻底的解决方案。

Enzo,这是另一种使其工作的方法,请尝试以下方法:

private void encode(String uniqueID) {
        // TODO Auto-generated method stub
         BarcodeFormat barcodeFormat = BarcodeFormat.QR_CODE;

            int width0 = 500;
            int height0 = 500;

            int colorBack = 0xFF000000;
            int colorFront = 0xFFFFFFFF;

            QRCodeWriter writer = new QRCodeWriter();
            try
            {
                EnumMap<EncodeHintType, Object> hint = new EnumMap<EncodeHintType, Object>(EncodeHintType.class);
                hint.put(EncodeHintType.CHARACTER_SET, "UTF-8");
                BitMatrix bitMatrix = writer.encode(uniqueID, barcodeFormat, width0, height0, hint);
                int width = bitMatrix.getWidth();
                int height = bitMatrix.getHeight();
                int[] pixels = new int[width * height];
                for (int y = 0; y < height; y++)
                {
                    int offset = y * width;
                    for (int x = 0; x < width; x++)
                    {

                        pixels[offset + x] = bitMatrix.get(x, y) ? colorBack : colorFront;
                    }
                }

                Bitmap bitmap = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888);
                bitmap.setPixels(pixels, 0, width, 0, 0, width, height);
                ImageView imageview = (ImageView)findViewById(R.id.qrCode);
                imageview.setImageBitmap(bitmap);
            } catch (WriterException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
    }
private void编码(字符串唯一ID){
//TODO自动生成的方法存根
BarcodeFormat BarcodeFormat=BarcodeFormat.QR_码;
整数宽度0=500;
内部高度0=500;
int colorBack=0xFF000000;
int colorFront=0xFFFFFFFF;
QRCodeWriter=新的QRCodeWriter();
尝试
{
EnumMap hint=新的EnumMap(EncodeHintType.class);
提示.put(EncodeHintType.CHARACTER_集,“UTF-8”);
BitMatrix BitMatrix=writer.encode(唯一标识、条形码格式、宽度0、高度0、提示);
int-width=bitMatrix.getWidth();
int height=bitMatrix.getHeight();
int[]像素=新int[宽度*高度];
对于(int y=0;y
除了Zxing库,您还可以使用以下意图从QRCode获取字符串:

try {
                Intent intent = new Intent("com.google.zxing.client.android.SCAN");
                intent.putExtra("SCAN_MODE", "QR_CODE_MODE"); // "PRODUCT_MODE for bar codes
                startActivityForResult(intent, 0);
            } catch (Exception e) {    
                Uri marketUri = Uri.parse("market://details?id=com.google.zxing.client.android");
                Intent marketIntent = new Intent(Intent.ACTION_VIEW,marketUri);
                startActivity(marketIntent);
            }
@Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        if (requestCode == 0) {
            if (resultCode == RESULT_OK) {
                String contents = data.getStringExtra("SCAN_RESULT");
                Log.v("MESSAGE: ", contents);
                Intent in = new Intent(MainActivity2.this,MainActivity3.class);
                Bundle b3= new Bundle();
                b3.putString("content",contents);
                in.putExtras(b3);   
                startActivity(in);    

            }
        }
    }
活动结果如下:

try {
                Intent intent = new Intent("com.google.zxing.client.android.SCAN");
                intent.putExtra("SCAN_MODE", "QR_CODE_MODE"); // "PRODUCT_MODE for bar codes
                startActivityForResult(intent, 0);
            } catch (Exception e) {    
                Uri marketUri = Uri.parse("market://details?id=com.google.zxing.client.android");
                Intent marketIntent = new Intent(Intent.ACTION_VIEW,marketUri);
                startActivity(marketIntent);
            }
@Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        if (requestCode == 0) {
            if (resultCode == RESULT_OK) {
                String contents = data.getStringExtra("SCAN_RESULT");
                Log.v("MESSAGE: ", contents);
                Intent in = new Intent(MainActivity2.this,MainActivity3.class);
                Bundle b3= new Bundle();
                b3.putString("content",contents);
                in.putExtras(b3);   
                startActivity(in);    

            }
        }
    }
这可能对你有帮助


谢谢。

您使用的设备上是否安装了条形码扫描仪?您使用的是仿真器还是真实设备?设备上是否安装了Zxing应用程序?如果没有,那么首先从PlayStore安装。我使用的是模拟器,但iti上没有条形码扫描仪。我甚至不能在android设备上工作。请回答。在我的设备上安装zxing应用程序后,您就可以开始工作了。对于扫描,我尝试了以下代码行:Intent Intent=newintent(“com.google.zxing.client.android.SCAN”);意向。额外(“扫描模式”、“二维码模式”);startActivityForResult(意向,0);它可以扫描QR码,而无需在我的设备上安装zxing应用程序。现在我正在开发一个应用程序,它必须生成一个包含一些信息的qrcode。因此,如果有一种不需要调用zxing应用程序的方法,对我来说会更好,
colorBack
colorFront
变量的值是多少?int colorBack=0xFF000000;int colorFront=0xFFFFFFFF;