亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 系統 > Android > 正文

月下載量上千次Android實現二維碼生成器app源碼分享

2020-04-11 11:09:45
字體:
來源:轉載
供稿:網友

在360上面上線了一個月,下載量上千余次。這里把代碼都分享出來,供大家學習哈!還包括教大家如何接入廣告,賺點小錢花花,喜歡的幫忙頂一個,大神見了勿噴,小學僧剛學Android沒多久。首先介紹這款應用:APP是一款二維碼生成器,雖然如何制作二維碼教程網上有很多,我這里再嘮叨一下并把我的所有功能模塊代碼都分享出來。

在這里我們需要一個輔助類RGBLuminanceSource,這個類Google也提供了,我們直接粘貼過去就可以使用了

package com.njupt.liyao;import com.google.zxing.LuminanceSource; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import java.io.FileNotFoundException; public final class RGBLuminanceSource extends LuminanceSource {  private final byte[] luminances;  public RGBLuminanceSource(String path) throws FileNotFoundException { this(loadBitmap(path));} public RGBLuminanceSource(Bitmap bitmap) {  super(bitmap.getWidth(), bitmap.getHeight());  int width = bitmap.getWidth();  int height = bitmap.getHeight();  int[] pixels = new int[width * height];  bitmap.getPixels(pixels, 0, width, 0, 0, width, height);  // In order to measure pure decoding speed, we convert the entire image  // to a greyscale array  // up front, which is the same as the Y channel of the  // YUVLuminanceSource in the real app.  luminances = new byte[width * height];  for (int y = 0; y < height; y++) {  int offset = y * width;  for (int x = 0; x < width; x++) {  int pixel = pixels[offset + x];  int r = (pixel >> 16) & 0xff;  int g = (pixel >> 8) & 0xff;  int b = pixel & 0xff;  if (r == g && g == b) {  // Image is already greyscale, so pick any channel.  luminances[offset + x] = (byte) r;  } else {  // Calculate luminance cheaply, favoring green.  luminances[offset + x] = (byte) ((r + g + g + b) >> 2); }}}}@Override public byte[] getRow(int y, byte[] row) {  if (y < 0 || y >= getHeight()) {  throw new IllegalArgumentException( "Requested row is outside the image:"+ y); } int width = getWidth();  if (row == null || row.length < width) {  row = new byte[width]; } System.arraycopy(luminances, y * width, row, 0, width);  return row; } // Since this class does not support cropping, the underlying byte array  // already contains  // exactly what the caller is asking for, so give it to them without a copy. @Override public byte[] getMatrix() {  return luminances; } private static Bitmap loadBitmap(String path) throws FileNotFoundException {  Bitmap bitmap = BitmapFactory.decodeFile(path);  if (bitmap == null) {  throw new FileNotFoundException("Couldn't open"+ path); } return bitmap; }}

public Bitmap getTwoDimensionPicture(String text,int width,int height) throws WriterException{if(text.equals("")){ text="";} Hashtable<EncodeHintType, String> hints = new Hashtable<EncodeHintType, String>(); hints.put(EncodeHintType.CHARACTER_SET,"utf-8"); BitMatrix bitMatrix = new QRCodeWriter().encode(text,  BarcodeFormat.QR_CODE, width, height, hints); int []pixels = new int[width*height]; for(int y=0;y<height;y++){ for(int x=0;x<width;x++){ if (bitMatrix.get(x, y)){ pixels[y * width + x] = BLACK;}else{ pixels[y * width + x] = WHITE;}}} Bitmap bitmap=Bitmap.createBitmap(width, height,Bitmap.Config.ARGB_8888); bitmap.setPixels(pixels, 0,width, 0, 0, width, height); return bitmap;}
public void createDirctoryToSaveImage(){ String dirPath=Environment.getExternalStorageDirectory()+File.separator+"TowDimensionCode"; File dirFile=new File(dirPath);if(!dirFile.exists()){dirFile.mkdir();}}public void writeBitMapToSDCard(Bitmap bitmap) throws IOException{ String fname = DateFormat.format("yyyyMMddhhmmss", new Date()).toString()+".jpg"; String filePath=Environment.getExternalStorageDirectory()+File.separator+"TowDimensionCode"+File.separator+fname; File file=new File(filePath); FileOutputStream fileOutputStream=new FileOutputStream(file); bitmap.compress(Bitmap.CompressFormat.JPEG, 100, fileOutputStream);fileOutputStream.flush();fileOutputStream.close();//把圖片加入到系統圖庫里面MediaStore.Images.Media.insertImage(getApplicationContext().getContentResolver(), file.getAbsolutePath(), fname, null);//uri得到的是文件的絕對路徑 getApplicationContext().sendBroadcast(new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE,Uri.parse("file://"+file.getAbsolutePath())));edtText.setText(file.getAbsolutePath()); Toast.makeText(this,"生成成功", Toast.LENGTH_LONG).show();}

//打開相冊 private void setImage() {//使用intent調用系統提供的相冊功能,使用startActivityForResult是為了獲取用戶選擇的圖片 Intent getAlbum = new Intent(Intent.ACTION_GET_CONTENT);getAlbum.setType(IMAGE_TYPE); startActivityForResult(getAlbum, IMAGE_CODE);}@Override protected void onActivityResult(int requestCode, int resultCode, Intent data){ if (resultCode != RESULT_OK) { //此處的 RESULT_OK 是系統自定義得一個常量 Log.e("TAG->onresult","ActivityResult resultCode error");return;} Bitmap bm = null; //外界的程序訪問ContentProvider所提供數據 可以通過ContentResolver接口 ContentResolver resolver = getContentResolver();//此處的用于判斷接收的Activity是不是你想要的那個 if (requestCode == IMAGE_CODE) { try { Uri originalUri = data.getData(); //獲得圖片的uri  bm = MediaStore.Images.Media.getBitmap(resolver, originalUri); //顯得到bitmap圖片imgView.setImageBitmap(bm);//這里開始的第二部分,獲取圖片的路徑: String[] proj = {MediaColumns.DATA};//好像是android多媒體數據庫的封裝接口,具體的看Android文檔 Cursor cursor = managedQuery(originalUri, proj, null, null, null);  //按我個人理解 這個是獲得用戶選擇的圖片的索引值 int column_index = cursor.getColumnIndexOrThrow(MediaColumns.DATA); //將光標移至開頭 ,這個很重要,不小心很容易引起越界cursor.moveToFirst();//最后根據索引值獲取圖片路徑 String path = cursor.getString(column_index);edtText.setText(path);btnOpen.setText(R.string.recognitionTwoCode); }catch (IOException e) {Log.e("TAG-->Error",e.toString());}}}
/** * 解析二維碼圖片里的內容 * @param filePath 二維碼圖片的位置 * @throws IOException * @throws NotFoundException*/ private String readImage(ImageView imageView) {  String content = null;  Map<DecodeHintType, String> hints = new HashMap<DecodeHintType, String>();  hints.put(DecodeHintType.CHARACTER_SET,"utf-8");  // 獲得待解析的圖片  Bitmap bitmap = ((BitmapDrawable) imageView.getDrawable()).getBitmap();  RGBLuminanceSource source = new RGBLuminanceSource(bitmap);  BinaryBitmap bitmap1 = new BinaryBitmap(new HybridBinarizer(source));  QRCodeReader reader = new QRCodeReader();  try {  Result result = reader.decode(bitmap1, hints);  // 得到解析后的文字  content = result.getText();  } catch (Exception e) { e.printStackTrace();} return content; }
//ad布局部分 private RelativeLayout adContainer = null; private IMvBannerAd bannerad = null;final String adSpaceid ="這是你申請的廣告ID號";adContainer=(RelativeLayout)findViewById(R.id.adcontent); bannerad = Mvad.showBanner(adContainer, this, adSpaceid, false);bannerad.showAds(this);

月下載量上千次Android實現二維碼生成器app源碼大家不要錯過呀!

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲欧美一区二区三区在线| 精品国产福利视频| 社区色欧美激情 | 国产精品久久久久免费a∨大胸| 91精品在线一区| 欧美激情一区二区三区成人| 91久久在线播放| 丝袜情趣国产精品| 国产在线视频不卡| 日韩精品视频免费专区在线播放| 大胆欧美人体视频| 欧美性猛交xxxx久久久| 亚洲欧美激情精品一区二区| 欧美电影在线观看网站| 亚洲性日韩精品一区二区| 日本久久久a级免费| 日韩免费高清在线观看| 精品国产乱码久久久久久婷婷| 亚洲精品色婷婷福利天堂| 日韩精品日韩在线观看| 激情成人在线视频| 亚洲**2019国产| 欧美大尺度在线观看| 久久人人爽人人爽人人片av高清| 精品国产一区二区三区久久久| 91大神福利视频在线| 久久久噜噜噜久久久| 国产精品福利无圣光在线一区| 欧美不卡视频一区发布| 国产69精品久久久| 精品亚洲一区二区三区在线播放| 精品国产乱码久久久久久天美| 亚洲国产另类久久精品| 久久人体大胆视频| 亚洲有声小说3d| 午夜精品久久久久久99热软件| 久久久久999| 欧美日韩国产一区二区三区| 日韩精品中文字幕在线观看| 日韩一区二区三区在线播放| 92看片淫黄大片欧美看国产片| 国产精品jizz在线观看麻豆| 日本三级韩国三级久久| 高清欧美一区二区三区| 久久视频这里只有精品| 国产在线精品自拍| 久久综合久久八八| 欧美一区二区三区……| 亚洲综合在线播放| 久久久久久久久91| 2021国产精品视频| 亚洲国产婷婷香蕉久久久久久| 国产欧美日韩精品在线观看| 欧美精品久久久久久久久久| 亚洲美女av在线播放| 日韩欧美a级成人黄色| 17婷婷久久www| 欧美天天综合色影久久精品| 精品国产一区二区三区久久久| 欧美极品xxxx| 国产成人精品日本亚洲| 国产偷亚洲偷欧美偷精品| 成人淫片在线看| 亚洲精品一区在线观看香蕉| 亚洲精品二三区| 国产一区av在线| 96精品久久久久中文字幕| 欧美日韩精品中文字幕| 日韩中文字幕视频在线| 欧美电影免费观看电视剧大全| 亚洲va欧美va在线观看| 国内外成人免费激情在线视频网站| 中文字幕日韩精品有码视频| 亚洲国产精品一区二区三区| 日韩中文字幕在线精品| 亚洲精品久久久久中文字幕欢迎你| 91久久国产婷婷一区二区| 亚洲欧美视频在线| 国产精品揄拍500视频| 黑人巨大精品欧美一区二区| 日韩有码在线观看| 国产综合在线视频| 久久国产精品免费视频| 国产精品主播视频| 中文字幕日韩欧美精品在线观看| 911国产网站尤物在线观看| 蜜臀久久99精品久久久久久宅男| 最近2019好看的中文字幕免费| 日韩av成人在线观看| 韩国精品美女www爽爽爽视频| 亚洲国产精品va在看黑人| 日韩中文字幕在线视频播放| 国产欧美日韩免费看aⅴ视频| 亚洲第一男人av| 欧美成人精品不卡视频在线观看| 91国产一区在线| 成人淫片在线看| 亚洲男人天堂2024| 中文字幕国产精品| 国产主播精品在线| 欧美成人一区二区三区电影| 欧美一级在线播放| 精品成人av一区| 第一福利永久视频精品| 久久99视频精品| 狠狠干狠狠久久| 欧美激情视频播放| 91夜夜未满十八勿入爽爽影院| 久久精品久久久久| 欧美限制级电影在线观看| 成人a在线观看| 久久国产精品久久久久久| 国产日韩欧美一二三区| 亚洲国产成人在线视频| 日韩欧美精品免费在线| 欧美日韩xxx| 国产精品久久久久高潮| 久久久久久一区二区三区| 亚洲国产小视频在线观看| 亚洲三级av在线| 欧美一级黄色网| 国产精品高潮呻吟久久av黑人| 色噜噜狠狠狠综合曰曰曰| 国产成人精品999| 欧美日韩国产黄| 欧美黑人狂野猛交老妇| 欧美亚洲午夜视频在线观看| 国产精品视频大全| 久久中文字幕一区| 亚洲欧美日韩中文在线制服| 亚洲区免费影片| 国产精品福利在线观看网址| 91国产在线精品| 国产精品美乳在线观看| 91精品在线观| 国产一区二区三区三区在线观看| 欧美视频二区36p| 欧美日韩电影在线观看| 精品成人久久av| 狠狠久久五月精品中文字幕| 91久久精品国产91性色| 精品中文字幕在线观看| 日本最新高清不卡中文字幕| 欧美整片在线观看| 国产成人短视频| 91国产中文字幕| 精品久久久久国产| 亚洲欧美国产高清va在线播| 亚洲成人精品在线| 精品国产一区二区三区四区在线观看| 伊人久久久久久久久久久| 欧美一乱一性一交一视频| 啪一啪鲁一鲁2019在线视频| 国产精品中文字幕在线观看| 国外成人在线播放| 欧美激情亚洲激情| 在线观看日韩www视频免费| 成人福利在线视频| 亚洲经典中文字幕| 国产精品第一区| 午夜精品一区二区三区av| 久久伊人色综合| 中文字幕视频在线免费欧美日韩综合在线看| 成人乱色短篇合集|