【问题标题】:Show captured picture when activity opened again活动再次打开时显示捕获的图片
【发布时间】:2012-10-20 13:53:07
【问题描述】:

我有一个调用相机意图来捕获图片并将其分配为个人资料图片的活动。该活动工作正常,除了当我单击返回然后再次打开该活动时,图片不再显示。

如何让它在用户每次打开此活动时显示?这是我的活动代码

public class MyAccountActivity extends Activity {

private static final int CAMERA_REQUEST = 1888;
private TextView name;
private TextView userId;
private TextView address;
private TextView email;
private TextView phone;
private ImageButton profilePicture;
private Bitmap bm;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_my_account);
    setUpViews();
Log.v("test","this is test: "+LoginActivity.user.getName());
}

private void setUpViews() {
    //setting up views

    //calling user details from User [] instance 

}

public void ViewPicture(View v) {
    Intent intent = new Intent(
    android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
    intent.putExtra(MediaStore.EXTRA_OUTPUT, 
            MediaStore.Images.Media.EXTERNAL_CONTENT_URI.getPath()); 
            startActivityForResult(intent, CAMERA_REQUEST);
}

protected void onActivityResult(int requestCode, int resultCode, Intent data)
{
        super.onActivityResult(requestCode, resultCode, data);
                bm = (Bitmap) data.getExtras().get("data");
                profilePicture.setImageBitmap(bm);
                MediaStore.Images.Media.insertImage(getContentResolver(), bm, null, null);
                ByteArrayOutputStream baos = new ByteArrayOutputStream();  
                bm.compress(Bitmap.CompressFormat.JPEG, 100, baos); //bm is the bitmap object   
                byte[] b = baos.toByteArray();  
}

我曾尝试致电profilePicture.setImageBitmap(bm) onResume(),但我的应用程序崩溃了。 非常感谢任何帮助。

【问题讨论】:

  • 尝试从 onResume 调用 setupViews。您在创建活动时设置了所有内容,但是当您返回活动时不会重新创建活动,所以我认为图像没有被应用。当您尝试设置图像时遇到什么崩溃?
  • 感谢您的快速回复...我会立即测试您的建议并发布回复。问候
  • @toadzky 它没有改变任何东西。我想是因为我在从意图中获取结果时设置了 profilePicture 。我在想我是否可以从手机保存的位置加载图片?那可能吗?再次感谢

标签: android image camera onresume


【解决方案1】:

用一些uri路径保存捕获的图像

Uri uri = Uri.withAppendedPath(Uri.fromFile(context.getExternalFilesDir(null)), imageName.png);
Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
    intent.putExtra(android.provider.MediaStore.EXTRA_OUTPUT, uri));

然后每当你想显示图像时,使用这个 uri

profilePicture.setImageUri(uri)

【讨论】:

  • 上面的代码在调用相机意图的时候是正确的吗?所以基本上在我的 ViewPicture() 中?
  • 看来这个建议是正确的解决方案,但不幸的是我无法正确实施。问候
  • link 另一个解决方案。
  • 希望你现在明白怎么做,链接也给出了相同的解决方案
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-05-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多