android 相机和相册,[转载][转载] android调用相机和相册
很多同學在做客戶端的時候,都需要做上傳圖片,那么上傳圖片如何上傳呢?自己寫一個SurfaceView做為展示區,然后用camera類來實現?太out了!直接調用相機拍照獲取或者調用相冊來取照片才是王道
現在曉飛教你如何調用相機和相冊:
首先:
1.首先在AndroidManifest.xml中設置權限:
android:name="android.permission.CAMERA"/>
/>
android:name="android.hardware.camera.autofocus"
/>
2.調用相機和相冊:
Intent takephoto = new
Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
startActivityForResult(takephoto,CAPTURE_CODE);
Intent album = new
Intent(Intent.ACTION_GET_CONTENT);
album.setType("image/*");
startActivityForResult(album, IMAGE_CODE);
因為需要調用到返回值,所以必須使用startActivityForResult(Intent
intent,int result);
3.寫onActivityResult方法接返回值
@Override
protected void onActivityResult(int requestCode, int resultCode,
Intent data) {
try {
ContentResolver resolver = getContentResolver();
if (resultCode != RESULT_OK) {
return;
} else if (requestCode == IMAGE_CODE) {
Uri originalUri = data.getData();
if (originalUri != null) {
bm = MediaStore.Images.Media.getBitmap(resolver,originalUri);
iv.setImageBitmap(bm);
}
} else if (requestCode == CAPTURE_CODE
&& resultCode == RESULT_OK) {
Bundle bundle = data.getExtras();
if (bundle != null) {
bm = (Bitmap) bundle.get("data");
iv.setImageBitmap(bm);
}
}
} catch (Exception e) {
Toast.makeText(this, "選擇圖片錯誤,圖片只能為jpg格式",
Toast.LENGTH_SHORT).show();
}
}
至此,bitmap已經返回并且已經賦值給了界面上的ImageView。
友情提示:如何將bitmap轉成byte[]?曉飛告訴你:
private byte[] Bitmap2Bytes(Bitmap bm){
ByteArrayOutputStream baos = new ByteArrayOutputStream();
bm.compress(Bitmap.CompressFormat.PNG, 100, baos);
return baos.toByteArray();
}
留意觀察曉飛帖子的同學應該知道曉飛曾經發過一個http請求的工具類(私藏好久的萬能http請求工具類),結合那個工具類就可以圖片上傳到服務器端了
總結
以上是生活随笔為你收集整理的android 相机和相册,[转载][转载] android调用相机和相册的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 新建android项目导包,Cordov
- 下一篇: 茶百科 android 论文,基于and