package irdc.ex10_05;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import jp.sourceforge.qrcode.QRCodeDecoder;
import jp.sourceforge.qrcode.data.QRCodeImage;
import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.content.pm.ActivityInfo;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.graphics.Matrix;
import android.graphics.Paint;
import android.graphics.PixelFormat;
import android.hardware.Camera;
import android.hardware.Camera.PictureCallback;
import android.hardware.Camera.ShutterCallback;
import android.net.Uri;
import android.os.Bundle;
import android.util.DisplayMetrics;
import android.util.Log;
import android.view.SurfaceHolder;
import android.view.SurfaceView;
import android.view.View;
import android.view.Window;
import android.view.ViewGroup.LayoutParams;
import android.webkit.URLUtil;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.Toast;
public class EX10_05 extends Activity
implements SurfaceHolder.Callback
{
/* 创建私有Camera对象 */
private Camera mCamera01;
private Button mButton01, mButton02, mButton03;
/* 作为review照下来的相片之用 */
private ImageView mImageView01;
private String TAG = "HIPPO";
private SurfaceView mSurfaceView01;
private SurfaceHolder mSurfaceHolder01;
/* 默认相机预览模式为false */
private boolean bIfPreview = false;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
/* 使应用程序全屏幕运行,不使用title bar */
requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.main);
/* 添加红色正方形红框View,供User对准条形码 */
DrawCaptureRect mDraw = new DrawCaptureRect
(
EX10_05.this,
110, 10, 100, 100,
getResources().getColor(R.drawable.lightred)
);
/* 将创建的红色方框添加至此Activity中 */
addContentView
(
mDraw,
new LayoutParams
(
LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT
)
);
/* 取得屏幕解析像素 */
DisplayMetrics dm = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(dm);
mImageView01 = (ImageView) findViewById(R.id.myImageView1);
/* 以SurfaceView作为相机Preview之用 */
mSurfaceView01 = (SurfaceView) findViewById(R.id.mSurfaceView1);
/* 绑定SurfaceView,取得SurfaceHolder对象 */
mSurfaceHolder01 = mSurfaceView01.getHolder();
/* Activity必须实现SurfaceHolder.Callback */
mSurfaceHolder01.addCallback(EX10_05.this);
/* 额外的设置预览大小设置,在此不使用 */
//mSurfaceHolder01.setFixedSize(320, 240);
/*
* 以SURFACE_TYPE_PUSH_BUFFERS(3)
* 作为SurfaceHolder显示类型
* */
mSurfaceHolder01.setType
(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
mButton01 = (Button)findViewById(R.id.myButton1);
mButton02 = (Button)findViewById(R.id.myButton2);
mButton03 = (Button)findViewById(R.id.myButton3);
/* 打开相机及预览二维条形码 */
mButton01.setOnClickListener(new Button.OnClickListener()
{
@Override
public void onClick(View arg0)
{
// TODO Auto-generated method stub
/* 自定义初始化打开相机函数 */
initCamera();
}
});
/* 停止预览 */
mButton02.setOnClickListener(new Button.OnClickListener()
{
@Override
public void onClick(View arg0)
{
// TODO Auto-generated method stub
/* 自定义重置相机,并关闭相机预览函数 */
resetCamera();
}
});
/* 拍照QR Code二维条形码 */
mButton03.setOnClickListener(new Button.OnClickListener()
{
@Override
public void onClick(View arg0)
{
// TODO Auto-generated method stub
/* 自定义拍照函数 */
takePicture();
}
});
}
/* 自定义初始相机函数 */
private void initCamera()
{
if(!bIfPreview)
{
/* 若相机非在预览模式,则打开相机 */
mCamera01 = Camera.open();
}
if (mCamera01 != null && !bIfPreview)
{
Log.i(TAG, "inside the camera");
/* 创建Camera.Parameters对象 */
Camera.Parameters parameters = mCamera01.getParameters();
/* 设置相片格式为JPEG */
parameters.setPictureFormat(PixelFormat.JPEG);
/* 指定preview的屏幕大小 */
parameters.setPreviewSize(160, 120);
/* 设置图片分辨率大小 */
parameters.setPictureSize(160, 120);
/* 将Camera.Parameters设置予Camera */
mCamera01.setParameters(parameters);
/* setPreviewDisplay唯一的参数为SurfaceHolder */
mCamera01.setPreviewDisplay(mSurfaceHolder01);
/* 立即运行Preview */
mCamera01.startPreview();
bIfPreview = true;
}
}
/* 拍照撷取图像 */
private void takePicture()
{
if (mCamera01 != null && bIfPreview)
{
/* 调用takePicture()方法拍照 */
mCamera01.takePicture
(shutterCallback, rawCallback, jpegCallback);
}
}
/* 相机重置 */
private void resetCamera()
{
if (mCamera01 != null && bIfPreview)
{
mCamera01.stopPreview();
/* 扩展学习,释放Camera对象 */
//mCamera01.release();
mCamera01 = null;
bIfPreview = false;
}
}
private ShutterCallback shutterCallback = new ShutterCallback()
{
public void onShutter()
{
// Shutter has closed
}
};
private PictureCallback rawCallback = new PictureCallback()
{
public void onPictureTaken(byte[] _data, Camera _camera)
{
// TODO Handle RAW image data
}
};
private PictureCallback jpegCallback = new PictureCallback()
{
public void onPictureTaken(byte[] _data, Camera _camera)
{
// TODO Handle JPEG image data
try
{
/* onPictureTaken传入的第一个参数即为相片的byte */
Bitmap bm =
BitmapFactory.decodeByteArray(_data, 0, _data.length);
int resizeWidth = 160;
int resizeHeight = 120;
float scaleWidth = ((float) resizeWidth) / bm.getWidth();
float scaleHeight = ((float) resizeHeight) / bm.getHeight();
Matrix matrix = new Matrix();
/* 使用Matrix.postScale方法缩小 Bitmap Size*/
matrix.postScale(scaleWidth, scaleHeight);
/* 创建新的Bitmap对象 */
Bitmap resizedBitmap = Bitmap.createBitmap
(bm, 0, 0, bm.getWidth(), bm.getHeight(), matrix, true);
/* 撷取4:3图片的居中红色框部分100x100像素 */
Bitmap resizedBitmapSquare = Bitmap.createBitmap
(resizedBitmap, 30, 10, 100, 100);
/* 将拍照的图文件以ImageView显示出来 */
mImageView01.setImageBitmap(resizedBitmapSquare);
/* 将传入的图文件译码成字符串 */
String strQR2 = decodeQRImage(resizedBitmapSquare);
if(strQR2!="")
{
if (URLUtil.isNetworkUrl(strQR2))
{
/* OMIA规范,网址条形码,打开浏览器上网 */
mMakeTextToast(strQR2, true);
Uri mUri = Uri.parse(strQR2);
Intent intent = new Intent(Intent.ACTION_VIEW, mUri);
startActivity(intent);
}
else if(eregi("wtai://",strQR2))
{
/* OMIA规范,手机拨打电话格式 */
String[] aryTemp01 = strQR2.split("wtai://");
Intent myIntentDial = new Intent
(
"android.intent.action.CALL",
Uri.parse("tel:"+aryTemp01[1])
);
startActivity(myIntentDial);
}
else if(eregi("TEL:",strQR2))
{
/* OMIA规范,手机拨打电话格式 */
String[] aryTemp01 = strQR2.split("TEL:");
Intent myIntentDial = new Intent
(
"android.intent
没有合适的资源?快使用搜索试试~ 我知道了~
Google Android SDK开发范例大全——示例代码
共1396个文件
class:539个
xml:223个
java:150个
4星 · 超过85%的资源 需积分: 10 18 下载量 51 浏览量
2010-07-27
19:07:22
上传
评论
收藏 5.99MB RAR 举报
温馨提示
Google Android SDK开发范例大全——示例代码,08-10
资源推荐
资源详情
资源评论
收起资源包目录
Google Android SDK开发范例大全——示例代码 (1396个子文件)
resources.ap_ 671KB
resources.ap_ 20KB
resources.ap_ 20KB
resources.ap_ 15KB
resources.ap_ 15KB
resources.ap_ 14KB
resources.ap_ 14KB
resources.ap_ 13KB
resources.ap_ 11KB
resources.ap_ 11KB
resources.ap_ 9KB
resources.ap_ 9KB
resources.ap_ 9KB
resources.ap_ 9KB
resources.ap_ 8KB
resources.ap_ 8KB
resources.ap_ 8KB
resources.ap_ 8KB
resources.ap_ 7KB
resources.ap_ 7KB
resources.ap_ 7KB
resources.ap_ 7KB
resources.ap_ 7KB
resources.ap_ 7KB
resources.ap_ 7KB
resources.ap_ 7KB
resources.ap_ 7KB
resources.ap_ 7KB
resources.ap_ 6KB
resources.ap_ 6KB
resources.ap_ 6KB
resources.ap_ 6KB
resources.ap_ 6KB
resources.ap_ 6KB
resources.ap_ 6KB
resources.ap_ 6KB
resources.ap_ 6KB
resources.ap_ 6KB
resources.ap_ 6KB
resources.ap_ 6KB
resources.ap_ 6KB
resources.ap_ 6KB
resources.ap_ 6KB
resources.ap_ 6KB
resources.ap_ 6KB
resources.ap_ 6KB
resources.ap_ 6KB
resources.ap_ 6KB
resources.ap_ 6KB
resources.ap_ 6KB
EX10_04.apk 1.01MB
EX10_07.apk 676KB
EX10_05.apk 41KB
EX08_09.apk 26KB
EX08_09.apk 26KB
EX10_06.apk 25KB
EX08_15.apk 22KB
EX08_15.apk 22KB
EX08_08.apk 21KB
EX08_08.apk 21KB
EX09_08.apk 19KB
EX08_13.apk 19KB
EX08_13.apk 19KB
EX10_02.apk 16KB
EX09_07.apk 16KB
EX09_01.apk 15KB
EX10_03.apk 15KB
EX08_16.apk 14KB
EX08_16.apk 14KB
EX08_17.apk 14KB
EX08_17.apk 14KB
EX08_12.apk 13KB
EX08_12.apk 13KB
EX10_01.apk 13KB
EX09_06.apk 12KB
EX08_14.apk 12KB
EX08_14.apk 12KB
EX08_02.apk 12KB
EX09_02.apk 12KB
EX09_05.apk 12KB
EX09_04.apk 12KB
EX08_02.apk 12KB
EX08_11.apk 11KB
EX08_11.apk 11KB
EX09_09.apk 11KB
EX08_10.apk 11KB
EX08_10.apk 11KB
EX09_03.apk 11KB
EX08_07.apk 11KB
EX08_07.apk 11KB
EX08_01.apk 11KB
EX08_01.apk 11KB
EX08_04.apk 11KB
EX08_04.apk 11KB
EX08_05.apk 10KB
EX08_05.apk 10KB
EX08_06.apk 10KB
EX08_06.apk 10KB
EX08_03.apk 9KB
EX08_03.apk 9KB
共 1396 条
- 1
- 2
- 3
- 4
- 5
- 6
- 14
资源评论
- y8078010022012-07-11项目需要GoogleMap,学习了,谢谢分享
one2zero
- 粉丝: 34
- 资源: 11
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功