因客户上需要用到这个功能,就在网上找了一堆资料,全是说得不清不楚,Android用zxing,IOS用zbar,然后给出各种收费地址下载,这里我只用到扫码功能,生成条形码,二维码功能一样的道理,下面直接上教程。
链接:https://pan.baidu.com/s/1MJdIODuFzJQYTRMXflgyEg
提取码:jv6n
下载好这个作为依赖,可以创建一个空项目,或者在原有的项目上跟着我走:File --> new --> import Module
选择刚刚下载好的包目录,确定。之后:File --> Project Structure(项目结构)
点击 "+" 后选择 "Module dependency" , 然后选择我们import 的 module , 然后:apply -->确定
这样就导入完成了。接下来就开始实现扫描功能;
直接上代码:布局文件
<?xml version="1.0" encoding="utf-8"?> <LinearLayout 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="com.tmri.enforcement.app.RequestAction" android:orientation="vertical" android:background="#87CEEB"> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginTop="5dp" android:orientation="horizontal"> <EditText android:id="@+id/edit_lsh" android:layout_width="0dp" android:layout_weight="3" android:layout_height="40dp" android:textSize="18sp" /> <Button android:id="@+id/btnSweep" android:layout_width="0dp" android:layout_height="40dp" android:layout_weight="1" android:text="扫描"/> </LinearLayout> </LinearLayout> </LinearLayout>
逻辑实现代码:CaptureActivity是依赖中实现扫码功能的一个类,直接调用就能实现扫码,然后在onActivityResult()方法中拿到我们要的数据。
stringLSH = this.findViewById(R.id.edit_lsh); /*二维码扫描*/ btnSweep = this.findViewById(R.id.btnSweep); btnSweep.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { Intent sweep = new Intent(RequestAction.this, CaptureActivity.class); startActivityForResult(sweep,1003); } }); @Override public void onActivityResult(int requestCode , int resultCode , Intent data){ super.onActivityResult(requestCode , resultCode , data); if (resultCode == RESULT_OK){ String result = data.getExtras().getString("result"); stringLSH.setText(result); } }
/*申请手机权限,在oncreate()方法中调用*/
public void requestPermissions(){
String [] permissions = new String[]{
Manifest.permission.CAMERA,
Manifest.permission.RECORD_AUDIO,
Manifest.permission.VIBRATE,
};
ActivityCompat.requestPermissions(RequestAction.this,permissions,100);
}
最后在运行项目之前记得在AndroidManifest.xml中添加权限:
<!--网络权限--> <uses-permission android:name="android.permission.INTERNET"/> <!--震动权限--> <uses-permission android:name="android.permission.VIBRATE"/> <!--摄像头权限--> <uses-permission android:name="android.permission.CAMERA"/> <!--自动聚焦权限--> <uses-feature android:name="android.hardware.camera.autofocus"/>
最后扫描直接将结果填入:
扫码功能大功告成。