android - 在 Android 应用程序中显示拍摄的照片

标签 android android-layout android-intent

正在关注 the android tutorial , 我可以拍照了。

public class TakePhotoActivity extends Activity {

    private Uri fileUri;
    // I am not sure what this is for yet
    private static final int CAPTURE_IMAGE_ACTIVITY_REQUEST_CODE = 100;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_take_photo);
        // Show the Up button in the action bar.
        setupActionBar();

        Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
        fileUri = getOutputMediaFileUri();
        intent.putExtra(MediaStore.EXTRA_OUTPUT, fileUri);

        startActivityForResult(intent, CAPTURE_IMAGE_ACTIVITY_REQUEST_CODE);

    }

    private static Uri getOutputMediaFileUri() {
        return Uri.fromFile(getOutputMediaFile());
    }

    private static File getOutputMediaFile() {
        File mediaStorageDir = new File(
                Environment
                        .getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES),
                "MyCameraApp");
        if (!mediaStorageDir.exists()) {
            if (!mediaStorageDir.mkdirs()) {
                Log.d("MyCameraApp", "failed to create directory");
                return null;
            }
        }
        String timeStamp = new SimpleDateFormat("yyyyMMdd_HHmmss")
                .format(new Date());
        return new File(mediaStorageDir.getPath() + File.separator + "IMG_"
                + timeStamp + ".jpg");
    }

    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        if (CAPTURE_IMAGE_ACTIVITY_REQUEST_CODE == requestCode) {
            if (RESULT_OK == resultCode) {
//              Toast.makeText(this, "Image saved to:\n" + data.getData(),
//              Toast.LENGTH_LONG).show();
            }
        }
    }
}

现在我想使用 onActivityResult 显示我刚刚拍的照片。有没有人有一些代码可以做到这一点?

编辑以显示 XML:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context=".TakePhotoActivity" >

<ImageView
    android:id="@+id/imageView1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:contentDescription="@string/desc" />

</RelativeLayout>

最佳答案

像这样:

public class TakePhotoActivity extends Activity {

private Uri fileUri;
// I am not sure what this is for yet
private static final int CAPTURE_IMAGE_ACTIVITY_REQUEST_CODE = 100;
ImageView image;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_take_photo);
    // Show the Up button in the action bar.
    setupActionBar();
    image = (ImageView)findViewById(R.id.imageView1);

    Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
    fileUri = getOutputMediaFileUri();
    intent.putExtra(MediaStore.EXTRA_OUTPUT, fileUri);

    startActivityForResult(intent, CAPTURE_IMAGE_ACTIVITY_REQUEST_CODE);

}

然后在这里将位图像这样放在 ImageView 中

protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    if (resultCode == RESULT_OK) {
        if (requestCode == 100) {
            try {
                bitmap = MediaStore.Images.Media.getBitmap(getContentResolver(), fileUri);
            } catch (FileNotFoundException e1) {
                // TODO Auto-generated catch block
                e1.printStackTrace();
            } catch (IOException e1) {
                // TODO Auto-generated catch block
                e1.printStackTrace();
            }
 image.setImageBitmap(bitmap);


                 sendBroadcast(new Intent(
                        Intent.ACTION_MEDIA_MOUNTED,
                        Uri.parse("file://" + Environment.getExternalStorageDirectory())));





        }

关于android - 在 Android 应用程序中显示拍摄的照片,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15350662/

相关文章:

android - 使用android连接到网络服务器

android - 如何为TextView内容保留 'n'个字符来保持相关 View 对齐

android - 绑定(bind)到服务(如果存在)

Android 优雅地管理来自 Activity 的 fragment

android - 如何在 Android 上显示启动画面 3 秒?

android - 如何开始新 Activity 实现RadioGroup.OnCheckedChangeListener

java - 图形布局的 1/4 显示模拟时的情况

java - ScrollView 不是从顶部开始

android - 如何在 Android 的 Instagram 上添加带图片分享的标题?

android Intent setFlags 问题