在Android应用程序中显示拍摄的图片
问题描述:
正在关注the android tutorial,我可以拍照。在Android应用程序中显示拍摄的图片
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())));
}
答
Bitmap b = MediaStore.Images.Media.getBitmap(this.getContentResolver(), imageUri)
myview.setBackground(new BitmapDrawable(b));
“MyView的” 从你的任何布局视图对象。因此,如果您的布局包含ID为“@ + id/myview”的RelativeLayout对象,则第二行可能会说:
findViewById(R.id.myview).setBackground(new BitmapDrawable(b));
+0
我已经编辑我的职务,以显示我有什么至今。你能为我提供实现的'onActivityResult'方法吗?同时,我将寻找如何创建您提到的myview。这是我第二天学习android。 – learner 2013-03-12 00:16:47
我是初学者。我正在寻找我能理解的东西。我希望得到的代码少得多。 – learner 2013-03-12 00:14:01
现在是怎么回事,你会得到一个非常高的分辨率的位图和sendBroadcast将更新您的画廊与你拍的照片,然后在那里做任何你想要的位图 – JRowan 2013-03-12 00:27:51
如果你不发送像那样的广播图片不会出现在您的手机中,直到您下次打开手机 – JRowan 2013-03-12 00:32:11