Android_二维码
来源:互联网 发布:动态加载js文件 编辑:程序博客网 时间:2024/06/08 17:05
//权限
<!--相机权限--><uses-permission android:name="android.permission.CAMERA"/><!-- 震动权限 --><uses-permission android:name="android.permission.VIBRATE"/><!--网络权限--><uses-permission android:name="android.permission.INTERNET"/>//依赖compile 'cn.yipianfengye.android:zxing-library:2.2'
public class MainActivity extends AppCompatActivity { //定义处理返回的code private static final int REQEUST_CODE = 111; private static final int REQUEST_IMAGE = 112; private ImageView ivIcon; private ImageView imageView; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); ZXingLibrary.initDisplayOpinion(this); } /** * 打开默认二维码扫描界面 */ //扫描二维码 public void saomiao(View view){ Intent intent = new Intent(this, CaptureActivity.class); //startActivity(intent); startActivityForResult(intent,REQEUST_CODE); } //扫描图库二维码 public void tuku(View view){ //跳转手机相册的隐式意图 Intent intent = new Intent(Intent.ACTION_GET_CONTENT); intent.addCategory(Intent.CATEGORY_OPENABLE); intent.setType("image/*"); startActivityForResult(intent, REQUEST_IMAGE); } @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); if(requestCode == REQEUST_CODE) { if(null != data){ //得到一个bundle Bundle bundle = data.getExtras(); if(bundle == null){ return; } //判断扫描是否成功 if(bundle.getInt(CodeUtils.RESULT_TYPE) == CodeUtils.RESULT_SUCCESS){ //获取扫描结果 String result = bundle.getString(CodeUtils.RESULT_STRING); //吐司扫描结果 Toast.makeText(this, result, Toast.LENGTH_SHORT).show(); }else{ Toast.makeText(this, "解析失败", Toast.LENGTH_SHORT).show(); } } }else if(requestCode == REQUEST_IMAGE){//识别二维码图片结果的一个处理 if(null != data){ //处理扫描图片的结果 Uri uri = data.getData(); try { //得到图片路劲进行解析 CodeUtils.analyzeBitmap(ImageUtil.getImageAbsolutePath(this, uri), new CodeUtils.AnalyzeCallback() { @Override public void onAnalyzeSuccess(Bitmap mBitmap, String result) { Toast.makeText(MainActivity.this, "解析结果:" + result, Toast.LENGTH_LONG).show(); } @Override public void onAnalyzeFailed() { Toast.makeText(MainActivity.this, "解析二维码失败", Toast.LENGTH_LONG).show(); } }); } catch (Exception e) { e.printStackTrace(); } } } }}
//ImageUtil类
public class ImageUtil { /** * 根据Uri获取图片绝对路径,解决Android4.4以上版本Uri转换 * * @param context * @param imageUri */ @TargetApi(19) public static String getImageAbsolutePath(Context context, Uri imageUri) { if (context == null || imageUri == null) return null; if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.KITKAT && DocumentsContract.isDocumentUri(context, imageUri)) { if (isExternalStorageDocument(imageUri)) { String docId = DocumentsContract.getDocumentId(imageUri); String[] split = docId.split(":"); String type = split[0]; if ("primary".equalsIgnoreCase(type)) { return Environment.getExternalStorageDirectory() + "/" + split[1]; } } else if (isDownloadsDocument(imageUri)) { String id = DocumentsContract.getDocumentId(imageUri); Uri contentUri = ContentUris.withAppendedId(Uri.parse("content://downloads/public_downloads"), Long.valueOf(id)); return getDataColumn(context, contentUri, null, null); } else if (isMediaDocument(imageUri)) { String docId = DocumentsContract.getDocumentId(imageUri); String[] split = docId.split(":"); String type = split[0]; Uri contentUri = null; if ("image".equals(type)) { contentUri = MediaStore.Images.Media.EXTERNAL_CONTENT_URI; } else if ("video".equals(type)) { contentUri = MediaStore.Video.Media.EXTERNAL_CONTENT_URI; } else if ("audio".equals(type)) { contentUri = MediaStore.Audio.Media.EXTERNAL_CONTENT_URI; } String selection = MediaStore.Images.Media._ID + "=?"; String[] selectionArgs = new String[]{split[1]}; return getDataColumn(context, contentUri, selection, selectionArgs); } } // MediaStore (and general) else if ("content".equalsIgnoreCase(imageUri.getScheme())) { // Return the remote address if (isGooglePhotosUri(imageUri)) return imageUri.getLastPathSegment(); return getDataColumn(context, imageUri, null, null); } // File else if ("file".equalsIgnoreCase(imageUri.getScheme())) { return imageUri.getPath(); } return null; } public static String getDataColumn(Context context, Uri uri, String selection, String[] selectionArgs) { Cursor cursor = null; String column = MediaStore.Images.Media.DATA; String[] projection = {column}; try { cursor = context.getContentResolver().query(uri, projection, selection, selectionArgs, null); if (cursor != null && cursor.moveToFirst()) { int index = cursor.getColumnIndexOrThrow(column); return cursor.getString(index); } } finally { if (cursor != null) cursor.close(); } return null; } /** * @param uri The Uri to check. * @return Whether the Uri authority is ExternalStorageProvider. */ public static boolean isExternalStorageDocument(Uri uri) { return "com.android.externalstorage.documents".equals(uri.getAuthority()); } /** * @param uri The Uri to check. * @return Whether the Uri authority is DownloadsProvider. */ public static boolean isDownloadsDocument(Uri uri) { return "com.android.providers.downloads.documents".equals(uri.getAuthority()); } /** * @param uri The Uri to check. * @return Whether the Uri authority is MediaProvider. */ public static boolean isMediaDocument(Uri uri) { return "com.android.providers.media.documents".equals(uri.getAuthority()); } /** * @param uri The Uri to check. * @return Whether the Uri authority is Google Photos. */ public static boolean isGooglePhotosUri(Uri uri) { return "com.google.android.apps.photos.content".equals(uri.getAuthority()); }}
//Myapp类public class Myapp extends Application { @Override public void onCreate() { super.onCreate(); //初始化二维码扫描库 ZXingLibrary.initDisplayOpinion(this); }
阅读全文
0 0
- Android_二维码
- Android_扫描二维码
- Android_生成二维码并分享
- Android_绘制样式与操作进度条 跳转扫描二维码界面
- 二维码
- 二维码
- 二维码
- 二维码
- 二维码
- 二维码
- 二维码
- 二维码
- 二维码
- 二维码
- 二维码
- 二维码
- 二维码
- 二维码
- android jni jbyteArray转char*
- ANDROID样式的开发:SHAPE篇
- How to build intermediate classes.jar in android N
- DAY3
- 搜索引擎技术之网络爬虫
- Android_二维码
- bzoj 2565: 最长双回文串 manacher
- 搜索引擎分类和基础架构概述
- BZOJ4520 CQOI2016 K远点对 KD树 小根堆维护距离
- python实现队列
- Python列表对象实现原理
- 程序员的愤怒
- 自定义View--九宫格手势
- 编程零基础,如何19周掌握深度学习?