在imageView中加载cameraimages时出现问题

时间:2014-03-18 19:00:48

标签: android image imageview loading

当我拍照时,图片将保存在SD上。(这很有效)

但图片不会在imageView中显示。你有什么主意吗?

package de.example.Camera;

import android.app.Activity;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.graphics.Bitmap;
import android.net.Uri;
import android.os.Bundle;
import android.os.Environment;
import android.provider.MediaStore;
import android.view.View;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.Toast;

import java.io.File;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Date;

public class Cam extends Activity {
private Uri fileUri;

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.b_cam);


    Button button2 = (Button) findViewById(R.id.photo);
    button2.setOnClickListener(new View.OnClickListener() {
        public void onClick(View v) {
            // Start ActivityTwo
            /*
             * Intent intent = new Intent(getApplicationContext(),
             * ActivityTwo.class); intent.putExtra("MyStringValue",
             * editText1.getText().toString()); startActivity(intent);
             */
            try {
                PackageManager packageManager = getPackageManager();
                boolean doesHaveCamera = packageManager
                        .hasSystemFeature(PackageManager.FEATURE_CAMERA);

                if (doesHaveCamera) {
                    // start the image capture Intent
                    Intent intent = new Intent(
                            MediaStore.ACTION_IMAGE_CAPTURE);
                    // Get our fileURI
                    fileUri = getOutputMediaFile();
                    intent.putExtra(MediaStore.EXTRA_OUTPUT, fileUri);
                    startActivityForResult(intent, 100);
                }
            } catch (Exception ex) {
                Toast.makeText(getApplicationContext(),
                        "There was an error with the camera.",
                        Toast.LENGTH_LONG).show();
            }
        }
    });
}

@Override
protected void onActivityResult(int requestCode, int resultCode,
                                Intent intent) {
    if (requestCode == 100) {
        if (resultCode == RESULT_OK) {
            if (intent == null) {
                // The picture was taken but not returned
                Toast.makeText(
                        getApplicationContext(),
                        "The picture was taken and is located here: "
                                + fileUri.toString(), Toast.LENGTH_LONG)
                        .show();


            }else {
                // The picture was returned
                Bundle extras = intent.getExtras();
                ImageView imageView1 = (ImageView) findViewById(R.id.imageView1);
                imageView1.setImageBitmap((Bitmap) extras.get("data"));
            }
        }
    }
}

private Uri getOutputMediaFile() throws IOException {
    File mediaStorageDir = new File(
            Environment
                    .getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES),
            "DayTwentyNine");
    // Create a media file name
    String timeStamp = new SimpleDateFormat("yyyyMMdd_HHmmss")
            .format(new Date());
    File mediaFile;
    mediaFile = new File(mediaStorageDir.getPath() + File.separator
            + "IMG_" + timeStamp + ".jpg");

    if (mediaFile.exists() == false) {
        mediaFile.getParentFile().mkdirs();
        mediaFile.createNewFile();
    }
    return Uri.fromFile(mediaFile);
}

}

我在清单中有以下内容:

uses-feature android:name="android.hardware.camera" android:required="false" 
uses-permission android:name="android.permission.CAMERA"
uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"

1 个答案:

答案 0 :(得分:0)

在这里,我有这种代码安静的工作正常第一个功能打开相机并拍摄照片,第二个功能将您拍摄的图像放入图像视图......

public void takePictu(View view) {
    Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
    startActivityForResult(intent, CAMERA_REQUEST);
}


protected void onActivityResult(int requestCode, int resultCode, Intent data){
    if(requestCode == CAMERA_REQUEST && resultCode == RESULT_OK){
        photo3 = (Bitmap) data.getExtras().get("data");
        imageView.setImageBitmap(photo3);
        imageView.buildDrawingCache();
        ByteArrayOutputStream baos = new ByteArrayOutputStream();
        photo3.compress(Bitmap.CompressFormat.JPEG, 100, baos); //bm is the bitmap object
        byte[] b = baos.toByteArray();

        encodedImage = android.util.Base64.encodeToString(b, android.util.Base64.DEFAULT);
    }
}