在我的应用程序中显示使用第三方Android应用程序捕获的照

时间:2012-10-16 08:04:39

标签: android android-layout android-intent android-emulator

我无法显示我使用第三方Android应用程序捕获的当前图像并在我自己的原生应用程序上显示它。只有操作栏,它总是一个空屏幕。但是,拍摄的照片可能位于我指定的文件夹中。

有人可以帮忙吗?非常感激!干杯:)

XML文件:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  android:orientation="vertical" android:layout_width="fill_parent"
  android:layout_height="fill_parent" android:id="@+id/linear">

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

源代码:

protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
    super.onActivityResult(requestCode, resultCode, data); 
    switch(requestCode) {
    case 0:
        if(resultCode == Activity.RESULT_OK){  
            Bitmap photo = (Bitmap) data.getExtras().get("data"); 
            imageView.setImageBitmap(photo);
        }
    break; 

    case 1:
        if(resultCode == RESULT_OK){  
            Uri selectedImage = data.getData();
            imageView.setImageURI(selectedImage);
        }
    break;

    }
  }
}

2 个答案:

答案 0 :(得分:0)

android:contentDescription="@string/desc"

将上面的行添加到ImageView的xml中,其中desc应该在string.xml中并将其设置为某个值。 看起来这样定义了简要描述视图内容的文本。此属性主要用于辅助功能。由于某些视图没有文本表示,因此可以使用此属性来提供此类属性。

ImageViews和ImageButtons等非文本小部件应使用contentDescription属性指定小部件的文本描述,以便屏幕阅读器和其他辅助功能工具可以充分描述用户界面。

String  selectedImagePath = getPath(selectedImageUri);
Bitmap myBitmap = BitmapFactory.decodeFile(selectedImagePath);
imageView.setImageBitmap(bmp);

使用上面的代码

public String getPath(Uri uri) {
    String[] projection = { MediaStore.Images.Media.DATA };
    Cursor cursor = managedQuery(uri, projection, null, null, null);
    int column_index = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);
    cursor.moveToFirst();
    return cursor.getString(column_index);
}

答案 1 :(得分:0)

您是否在fileUri中保存了Activity的值?如果是,你是从保存的实例中恢复的吗?

如果不是,则在活动被销毁时可能会重置。