月下载量上千次app源码分享
发布时间:2020-05-25 16:13:03 所属栏目:Java 来源:互联网
导读:月下载量上千次app源码分享
|
下面是脚本之家 jb51.cc 通过网络收集整理的代码片段。 脚本之家小编现在分享给大家,也给大家做个参考。 在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 [emailprotected] (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,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,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,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,Bitmap.Config.ARGB_8888);
bitmap.setPixels(pixels,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);
//按我个人理解 这个是获得用户选择的图片的索引值
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); 以上是脚本之家(jb51.cc)为你收集整理的全部代码内容,希望文章能够帮你解决所遇到的程序开发问题。 如果觉得脚本之家网站内容还不错,欢迎将脚本之家网站推荐给程序员好友。 (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
