二维码android开发
⑴ 在android开发中 什么库可以识别DM二维码
1.1 准备工作
如果我们只做二维码的生成,那么只需要添加核心jar包即可,
1.2 二维码生成
OK,添加完jar包之后我们就可以开始写二维码生成代码了,二维码本身就是一张Bitmap图片,所以我们这里主要就是看怎么样来生成这张图片,我在主界面添加一个按钮和一个ImageView,当点击按钮时生成一张二维码图片显示在ImageView上。布局如下:
[java] view plain print?
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="org.mobiletrain.qrwriter.MainActivity">
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:onClick="generate"
android:text="生成二维码"/>
<ImageView
android:id="@+id/iv"
android:layout_width="256dp"
android:layout_height="256dp"
android:layout_centerInParent="true"/>
</RelativeLayout>
当我点击按钮时生成二维码图片,那我们就来看看生成二维码图片的核心代码:
[java] view plain print?
private Bitmap generateBitmap(String content,int width, int height) {
QRCodeWriter qrCodeWriter = new QRCodeWriter();
Map<EncodeHintType, String> hints = new HashMap<>();
hints.put(EncodeHintType.CHARACTER_SET, "utf-8");
try {
BitMatrix encode = qrCodeWriter.encode(content, BarcodeFormat.QR_CODE, width, height, hints);
int[] pixels = new int[width * height];
for (int i = 0; i < height; i++) {
for (int j = 0; j < width; j++) {
if (encode.get(j, i)) {
pixels[i * width + j] = 0x00000000;
} else {
pixels[i * width + j] = 0xffffffff;
}
}
}
return Bitmap.createBitmap(pixels, 0, width, width, height, Bitmap.Config.RGB_565);
} catch (WriterException e) {
e.printStackTrace();
}
return null;
}
首先这个方法接收三个参数,这三个参数分别表示生成二维码的文本内容(你要把哪一个文本用二维码图片表示出来),第二个和第三个参数分别表示生成的二维码图片的宽和高。在这里,我们首先要获得一个QRCodeWriter实例,该实例中有一个方法叫做encode,通过该方法对文本内容进行编码,该方法共有五个参数,第一个参数表示生成二维码的文本内容,第二个参数表示编码格式,第三个参数表示生成的二维码的宽度,第四个参数表示生成的二维码的高度,第五个参数可选,可以用来设置文本的编码,encode方法的返回值是一个BitMatrix,你可以把BitMatrix理解成一个二维数组,这个二维数组的每一个元素都表示一个像素点是否有数据。OK,接下来我们需要定义一个int数组用来存放Bitmap中所有像素点的颜色,可是我们又怎么知道每一个像素点是什么颜色呢?这个时候就需要我们遍历BitMatrix了,如果BitMatrix上的点表示 该点有数据,那么对应在Bitmap上的像素点就是黑色,否则就是白色。BitMatrix中的get方法的返回值为一个boolean类型,true表示该点有数据,false表示该点没有数据。通过两个嵌套的for循环将BitMatrix遍历一遍,然后给pixels数组都赋上值,OK,pixels数组有值之后,接下来调用Bitmap的createBitmap方法创建一个Bitmap出来就可以了,createBitmap方法共接收6个参数,第一个参数表示Bitmap中所有像素点的颜色,第二个参数表示像素点的偏移量,第三个参数表示Bitmap每行有多少个像素点,第四个参数表示生成的Bitmap的宽度,第五个参数表示生成的Bitmap的高度,第六个参数表示生成的Bitmap的色彩模式,因为二维码只有黑白两种颜色,所以我们可以不用考虑透明度,直接使用RGB_565即可。OK,这样的话我们就获取到了二维码的图片了,最后我们再来看看点击事件:
[java] view plain print?
public void generate(View view) {
Bitmap qrBitmap = generateBitmap("http://www.csdn.net",400, 400);
iv.setImageBitmap(qrBitmap);
}
⑵ android开发如何实现扫描某个设备上的二维码下载应用,然后在该应用中扫描该二维码实现对该设备的操作
APP通过扫描得到的二维码信息来判断接下来要干嘛,
每一个二维码里都有自己的信息(唯一的,信息不同二维码也不同),,比如连接,扫二维码下载原理是先扫描到的下载连接,然后通过连接下载APP,当然这个链接也可以是一个网页,并且在网页上显示我们看到的车的信息又或者车的信息直接存在了二维码里并通过APP直接显示出来
⑶ android开发:三星手机扫描二维码界面停留一段时间后ans崩溃了,怎么解决
可进行以下操作:
1.重新开关机
2.卸载近期安装的第三方软件后观察,初步排除是否为软件冲突,如手机管家、游戏等软件。
3.备份手机数据(电话簿、短信息、多媒体文件等),恢复出厂设置(进入手机设定--重置/隐私权/私人-恢复出厂设定)
如果恢复出厂设置问题依然存在,建议将手机送至就近的三星服务中心进行检测及进一步处理。
⑷ android开发二维码扫一扫需要什么权限
你好,
<uses-permission android:name="android.permission.CAMERA" />
<uses-feature android:name="android.hardware.camera" /> <!-- 使用照相机权限 -->
<uses-feature android:name="android.hardware.camera.autofocus" /> <!-- 自动聚焦权限 -->
在基于6.0以上系统开发的时候 ,需要申请用代码申请权限