簡(jiǎn)單的調(diào)用了一下系統(tǒng)的拍照功能,下面代碼:
//拍照的方法
private void openTakePhoto(){
/**
*在啟動(dòng)拍照之前最好先判斷一下sdcard是否可用
*/
String state = Environment.getExternalStorageState();//拿到sdcard是否可用的狀態(tài)碼
if (state.equals(Environment.MEDIA_MOUNTED)){//如果可用
Intent intent = newIntent("android.media.action.IMAGE_CAPTURE");
startActivityForResult(intent,TAKE_PHOTO);
}else {
Toast.makeText(SettingActivity.this,"sdcard不可用",Toast.LENGTH_SHORT).show();
}
}
拍完照片后,我們肯定視需要拿到我們已經(jīng)拍好的照片去進(jìn)行一些操作(例如,換頭像、發(fā)帶圖狀態(tài)等等),這時(shí)候我們就需要重寫(xiě)onActivityResult()方法,去拿到我們拍好的照片去進(jìn)行操作,我們可以通過(guò)下面兩種方式去拿到我們的照片,他的加過(guò)就封裝在了我們的Intent里面,我們只需要取出來(lái)即可:
@Override
protected void onActivityResult(int requestCode, int resultCode, Intentdata) {
super.onActivityResult(requestCode, resultCode, data);
if (data!= null) {
switch (requestCode) {
case TAKE_PHOTO://拍攝圖片并選擇
//兩種方式獲取拍好的圖片
if (data.getData() != null|| data.getExtras() != null){//防止沒(méi)有返回結(jié)果
Uri uri =data.getData();
if (uri != null) {
photo =BitmapFactory.decodeFile(uri.getPath());//拿到圖片
}
if (photo == null) {
Bundle bundle =data.getExtras();
if (bundle != null){
photo =(Bitmap) bundle.get("data");
} else {
Toast.makeText(getApplicationContext(), "找不到圖片",
Toast.LENGTH_SHORT).show();
}
}
//處理圖片
//裁剪圖片
}
break;
當(dāng)然,開(kāi)發(fā)完APP也是需要進(jìn)行全方位的檢測(cè):www.ineice.com