[置顶] Android 长按识别图中二维码
2016-05-20 11:00
495 查看
基于 Zing, 初学android 代码质量可能不高
bigImage.setOnLongClickListener(new View.OnLongClickListener() {
@Override
public boolean onLongClick(View viewm) {
Bitmap obmp = ((BitmapDrawable) (bigImage).getDrawable()).getBitmap();
int width = obmp.getWidth();
int height = obmp.getHeight();
int[] data = new int[width * height];
obmp.getPixels(data, 0, width, 0, 0, width, height);
RGBLuminanceSource source = new RGBLuminanceSource(width, height, data);
BinaryBitmap bitmap1 = new BinaryBitmap(new HybridBinarizer(source));
QRCodeReader reader = new QRCodeReader();
Result re = null;
try {
re = reader.decode(bitmap1);
} catch (NotFoundException e) {
e.printStackTrace();
} catch (ChecksumException e) {
e.printStackTrace();
} catch (FormatException e) {
e.printStackTrace();
}
if (re == null) {
showAlert(obmp);
} else {
showSelectAlert(obmp, re.getText());
}
return false;
}
});
bigImage.setOnLongClickListener(new View.OnLongClickListener() {
@Override
public boolean onLongClick(View viewm) {
Bitmap obmp = ((BitmapDrawable) (bigImage).getDrawable()).getBitmap();
int width = obmp.getWidth();
int height = obmp.getHeight();
int[] data = new int[width * height];
obmp.getPixels(data, 0, width, 0, 0, width, height);
RGBLuminanceSource source = new RGBLuminanceSource(width, height, data);
BinaryBitmap bitmap1 = new BinaryBitmap(new HybridBinarizer(source));
QRCodeReader reader = new QRCodeReader();
Result re = null;
try {
re = reader.decode(bitmap1);
} catch (NotFoundException e) {
e.printStackTrace();
} catch (ChecksumException e) {
e.printStackTrace();
} catch (FormatException e) {
e.printStackTrace();
}
if (re == null) {
showAlert(obmp);
} else {
showSelectAlert(obmp, re.getText());
}
return false;
}
});
private void showAlert(final Bitmap bitmap) { AlertDialog.Builder builder = new AlertDialog.Builder(this); builder.setMessage("保存图片") .setCancelable(false) .setPositiveButton("确定", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialogInterfacem, int i) { saveImageToGallery(bitmap); } }) .setNegativeButton("取消", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialogInterfacem, int i) { } }); builder.show(); } private void showSelectAlert(final Bitmap bitmap, final String url) { AlertDialog.Builder builder = new AlertDialog.Builder(this); builder.setTitle("请选择"); String str[] = {"保存图片", "扫二维码"}; builder.setItems(str, new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialogInterfacem, int i) { switch (i) { case 0: { saveImageToGallery(bitmap); } break; 4000 case 1: { Intent n = new Intent(EnlargeimagevActivity.this, DetailActivity.class); n.putExtra(DetailActivity.BUNDLE_KEY_DISPLAY_TYPE, DetailActivity.WEBVIEW_DETAIL); n.putExtra(DetailwebFragment.WEB_URL, url); startActivity(n); } break; } } }); builder.setNegativeButton("取消", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialogInterfacem, int i) { } }); builder.show(); }
相关文章推荐
- android切换到后台,返回后图片纹理丢失
- Android Studio 创建aidl文件,用于进程间通讯
- Android 解决Listview ArrayIndexOutOfBoundsException
- AS(Android studio)使用annotation
- android studio 2.0vm options 哪儿设置
- 推荐几款实用的Android Studio 插件
- Android Studio中LogCat的颜色
- Android 禁止屏幕休眠和锁屏的方法
- Android知识大全
- Manifest.permission 定义android的106个权限
- android View层的绘制流程
- android windwsManager 类型
- 玩转Android Studio
- proguard-android.txt line 43:15 extraneous input '[]' expecting ')' 解决办法
- 在MAC上搭建cordova3.4.0的IOS和android开发环境
- Android 6.0 运行时权限处理
- Android之Widget (微件、小组件)
- Android Studio中module配置好的bulid.gradle和混淆proguard-rules.pro
- 手把手教你写框架之ShykyAnnotations - 原理篇
- Is iOS 7 Multipeer Connectivity compatible with Android Wi-Fi Direct?