【问题标题】:Getting Local Photos Windows Phone 8 Emulator获取本地照片 Windows Phone 8 模拟器
【发布时间】:2014-10-02 02:07:20
【问题描述】:

所以我在我的 Windows Phone 模拟器上拍摄了一些照片,然后我试图在我的应用程序中找到它们。 到目前为止,我有:

PictureCollection CameraRollPictures;
using (var library = new MediaLibrary())
{
    //taking all albums
     PictureAlbumCollection allAlbums = library.RootPictureAlbum.Albums;
     //taking Camera Roll album separately from all album
     PictureAlbum cameraRoll = allAlbums.Where(album => album.Name == "Camera Roll").FirstOrDefault();
     // here you will get camera roll picture list
     CameraRollPictures = cameraRoll.Pictures;
}

但这一直在崩溃,因为cameraRoll = null。这个功能在 WP8 模拟器上可用还是我做错了什么?

我的拍照方法来自this stackoverflow question

编辑 我也试过album.Name == "Camera Roll"

【问题讨论】:

  • 你能检查一下你的 allAlbums 项目是 null 还是空吗?
  • 我的 allAlbums 项目包含一个 {Microsoft.Xna.Framework.Media.PictureAlbumCollection} 但计数为 0
  • 但是我上传了一张图片,显示有照片被缓存了。 (抱歉不知道/有时间,调整图片大小)

标签: c# windows-phone-8 emulation photos


【解决方案1】:
MediaSource mediaSource = MediaSource.GetAvailableMediaSources()
            .First((source => source.MediaSourceType == MediaSourceType.LocalDevice));
using (MediaLibrary mediaLibrary = new MediaLibrary(mediaSource))
{
     PictureAlbum cameraRollAlbum = mediaLibrary.RootPictureAlbum.Albums.First((album) => album.Name == "Camera Roll");

}

或使用PhotoChooserTask

您可以将图片上传到Emulator,如此处所述

【讨论】:

  • 遗憾的是,MediaSource 方法仍然没有返回PictureAlbum。我无法使用 PhotoChooserTask,因为我使用的是 Xamarin 表单,我还没有尝试过最后一个,但我稍后会尝试
【解决方案2】:

所以答案很简单……我的方法效果很好,但我需要:

  • 进入 WMAppManifest.Xml
  • 转到功能
  • 打勾ID_CAP_MEDIALIB_PHOTO

这提供了对媒体库中照片的只读访问权限

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-10-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多