月下载量上千次app源码分享

清华大佬耗费三个月吐血整理的几百G的资源,免费分享!....>>>

在360上面上线了一个月,下载量上千余次。这里把代码都分享出来,供大家学习哈!还包括教大家如何接入广告,赚点小钱花花,喜欢的帮忙顶一个,大神见了勿喷,小学僧刚学Android没多久。首先介绍这款应用:APP是一款二维码生成器,虽然如何制作二维码教程网上有很多,我这里再唠叨一下并把我的所有功能模块代码都分享出来。
既然是二维码生成器那么我们如何制作二维码呢?这里主要用到了Google的Zxing开源包,可以到网上下载,也可以到我的csdn上面去下载http://download.csdn.net/detail/u014132820/8223437
在这里我们需要一个辅助类RGBLuminanceSource,这个类Google也提供了,我们直接粘贴过去就可以使用了
ps:打个小广告-------->>Android开发学习QQ群---------->>>254772311(太差了也就不要进来了) 
package com.njupt.liyao;

import com.google.zxing.LuminanceSource; 

import android.graphics.Bitmap; 
import android.graphics.BitmapFactory; 
   
import java.io.FileNotFoundException; 
   
/**
 * This class is used to help decode images from files which arrive as RGB data
 * from Android bitmaps. It does not support cropping or rotation.
 * 
 * @author dswitkin@google.com (Daniel Switkin)
 */ 
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);