学习Android不能不学习照相机,现在各种美容相机,微信朋友圈发图,现在升级之后直接下拉就可以照相了,各种艳照的的源头也是照相机,扯远了,有点邪恶了,还是简单学习一下Android中照相机的使用,Android中照相机的使用一般分为两种使用已有的照相App(可以理解为系统内置的照相机)和单独创建一个照相App,第一种方式简单易懂,第二种方式如果做的好的话可以养活一个公司~今天就简单的描述一下第一种的调用~
基础工作
调用照相机需要照相,照相就需要存储,存在外部存储中需要设置权限,本次设置的三个权限:一个是调用Camera权限,第二个是要求设备有照相机,第三个是在外部设备写的权限:
1
2
3
4
5
|
<uses-permission android:name=
"android.permission.CAMERA"
/>
<uses-feature android:name=
"android.hardware.camera"
/>
<uses-permission android:name=
"android.permission.WRITE_EXTERNAL_STORAGE"
/>
|
简单的页面,一个Buttom,一个ImageView:
Demo实现
简单的三部曲,首先创建Intent,然后启动Intent,最后接收结果,没有前置摄像头,就用的是模拟的:
拍照事件:
1
2
3
4
5
6
7
|
public
void
cameraEvent(View view) {
intent =
new
Intent(MediaStore.ACTION_IMAGE_CAPTURE);
// 创建一个意图去获取图片
file= getOutputMediaFile();
// 获取路径
intent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(file));
// 设置文件名
// 启动Intent
startActivityForResult(intent, IMAGE_REQUEST_CODE);
}
|
获取文件路径的方法:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
|
// 图片路径
private
static
File getOutputMediaFile() {
File mediaStorageDir =
new
File(
Environment
.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES),
tag);
if
(!mediaStorageDir.exists()) {
if
(!mediaStorageDir.mkdirs()) {
Log.d(tag,
"存储目录创建失败"
);
return
null
;
}
}
// 创建文件名
String timeStamp =
new
SimpleDateFormat(
"yyyyMMdd_HHmmss"
)
.format(
new
Date());
File mediaFile =
null
;
mediaFile =
new
File(mediaStorageDir.getPath() + File.separator
+
"IMG_"
+ timeStamp +
".jpg"
);
Log.d(tag,
"存储目录:"
+ mediaFile);
return
mediaFile;
}
|
完成之后的接收事件需要重写Activity中的onActivityResult方法:
1
2
3
4
5
6
7
8
9
10
11
12
13
|
@Override
protected
void
onActivityResult(
int
requestCode,
int
resultCode, Intent data) {
// TODO Auto-generated method stub
if
(requestCode == IMAGE_REQUEST_CODE&&resultCode==RESULT_OK) {
imageView=(ImageView) findViewById(R.id.camera_img);
//两种设置方式
//图片较大的时候可以使用这种
Bitmap bitmap=BitmapFactory.decodeFile(file.toString());
imageView.setImageBitmap(bitmap);
// imageView.setImageURI(Uri.fromFile(file));
}
super
.onActivityResult(requestCode, resultCode, data);
}
|
效果如下:
本文转自Fly_Elephant博客园博客,原文链接:http://www.cnblogs.com/xiaofeixiang/p/4086004.html,如需转载请自行联系原作者