您的位置:首页 > 其它

二维码的生成,扫描(ZXing开源的依赖库)

2017-04-18 09:11 459 查看
第一:二维码扫描:1.需要添加依赖:
compile 'cn.yipianfengye.android:zxing-library:2.1'
2.需要在application中进行注册
public void onCreate() {
super.onCreate();
//声明一下
ZXingLibrary.initDisplayOpinion(this);
}
3.需要在Actiivty中进行跳转回传值,进行拿到扫描返回的数据
final int REQUEST_CODE=1;
button1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(MainActivity.this, CaptureActivity.class);
//常量,请求码,可以任意定义
 startActivityForResult(intent, REQUEST_CODE);
}
});
4.在onActivityResult的方法中拿到返回的数据
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == REQUEST_CODE) {
//处理扫描结果(在界面上显示)
if (null != data) {
Bundle bundle = data.getExtras();
if (bundle == null) {
return;
}
if (bundle.getInt(CodeUtils.RESULT_TYPE) == CodeUtils.RESULT_SUCCESS) {
String result = bundle.getString(CodeUtils.RESULT_STRING);
Log.i(Tag, "解析结果:" + result);
Intent in=new Intent(MainActivity.this,WebActivity.class);
in.putExtra("result",result);startActivity(in);//在webView上面展示  } else if (bundle.getInt(CodeUtils.RESULT_TYPE) == CodeUtils.RESULT_FAILED) {
Log.i(Tag, "解析失败");
} } }}5.权限:
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.FLASHLIGHT" />
<uses-feature android:name="android.hardware.camera" />
<uses-feature android:name="android.hardware.camera.autofocus" />
<uses-permission android:name="android.permission.VIBRATE" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.INTERNET" />
6.进行扫描系统相册的二维码
final int REQUEST_IMAGECODE=2;
button_z.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
intent.addCategory(Intent.CATEGORY_OPENABLE);
intent.setType("image/*");
startActivityForResult(intent, REQUEST_IMAGECode);
}
});
//生成二维码
button_s.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//生成二维码
Bitmap mBitmap = CodeUtils.createImage("http://blog.csdn.net/marry_/article/details/70224352", 400, 400, null);
im.setImageBitmap(mBitmap);
}
});
//自定义生成二维码
 button_zd.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//自定义生成二维码
Bitmap  mBitmap = CodeUtils.createImage("http://blog.csdn.net/marry_/article/details/70224352", 400, 400, BitmapFactory.decodeResource(getResources(), R.mipmap.ic_launcher));
im.setImageBitmap(mBitmap);
}
});
7.在onActivityResult方法中进行回调
//获得图片的结果
if(requestCode==REQUEST_IMAGE){
if(data!=null){
Uri uri = data.getData();
ContentResolver cr = getContentResolver();
try {
Bitmap mBitmap = MediaStore.Images.Media.getBitmap(cr, uri);//显得到bitmap图片

CodeUtils.analyzeBitmap(ImageUtils.getImageAbsolutePath(this,uri), new CodeUtils.AnalyzeCallback() {
@Override
public void onAnalyzeSuccess(Bitmap mBitmap, String result) {
Log.i(Tag, "解析结果:" + result);
Intent in=new Intent(MainActivity.this,WebActivity.class);
in.putExtra("result",result);startActivity(in);//在webView上面展示 } @Override public void onAnalyzeFailed() {
Log.i(Tag, "解析失败" + result);
} }); if (mBitmap != null) { mBitmap.recycle(); } } catch (Exception e) { e.printStackTrace(); } }}8.用到一个工具类进行android4.4版本以上的uri的转换
public class ImageUtils {
/**
* 根据Uri获取图片绝对路径,解决Android4.4以上版本Uri转换
*
*
*
*/
@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())) {

if (isGooglePhotosUri(imageUri))
return imageUri.getLastPathSegment();
return getDataColumn(context, imageUri, null, null);
}

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());
}

}

                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: