在开发项目中用到这个功能,之前就按照学过的拍照和选择照片的功能,所以也没在意就写了上去,可是最后发现在有些机子里面获取到的数据时空的,所以会导致程序崩溃的情况出现,网上找了很多例子大多都是一样的,还是有问题,后来就查看跟踪了拍照后返回的数据写了下面的代码相对大多数机子是可行的,经测试还是比较靠谱的,包括拍照后图片翻转了90度问题都没问题。直接看代码:
第一:拍照选择界面:
第二:显示照片界面:
- import android.app.Activity;
- import android.content.Intent;
- import android.graphics.Bitmap;
- import android.net.Uri;
- import android.os.Bundle;
- import android.provider.MediaStore;
- import android.view.View;
- import android.view.View.OnClickListener;
- import android.widget.ImageView;
-
- public class MainActivity extends Activity {
- private ImageView photo;
-
- @Override
- public void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.activity_main);
- photo = (ImageView) this.findViewById(R.id.text);
-
- photo.setOnClickListener(new OnClickListener() {
- public void onClick(View v) {
-
- startActivityForResult(new Intent(MainActivity.this,
- SelectPicPopupWindow.class), 1);
- }
- });
- }
-
- @Override
- protected void onActivityResult(int requestCode, int resultCode, Intent data) {
-
- switch (resultCode) {
- case 1:
- if (data != null) {
-
- Uri mImageCaptureUri = data.getData();
-
- if (mImageCaptureUri != null) {
- Bitmap image;
- try {
-
- image = MediaStore.Images.Media.getBitmap(this.getContentResolver(), mImageCaptureUri);
- if (image != null) {
- photo.setImageBitmap(image);
- }
- } catch (Exception e) {
- e.printStackTrace();
- }
- } else {
- Bundle extras = data.getExtras();
- if (extras != null) {
-
- Bitmap image = extras.getParcelable("data");
- if (image != null) {
- photo.setImageBitmap(image);
- }
- }
- }
-
- }
- break;
- default:
- break;
-
- }
- }
-
- }
第三:如果需要保存图片到SD卡或者上传图片可以用下面代码:
- public static String savePicToSdcard(Bitmap bitmap, String path,
- String fileName) {
- String filePath = "";
- if (bitmap == null) {
- return filePath;
- } else {
-
- filePath=path+ fileName;
- File destFile = new File(filePath);
- OutputStream os = null;
- try {
- os = new FileOutputStream(destFile);
- bitmap.compress(CompressFormat.JPEG, 100, os);
- os.flush();
- os.close();
- } catch (IOException e) {
- filePath = "";
- }
- }
- return filePath;
- }
上传图片的话我们可以获取bitmap的流然后上传,如上面方式获取,如要上传,上传代码自己实现,这个比较简单。
android 比较靠谱的选择图片以及拍照,保存图片,布布扣,bubuko.com
android 比较靠谱的选择图片以及拍照,保存图片
原文:http://www.cnblogs.com/huanjianlin/p/3570793.html