День пятый. Расширение для фотоальбома

Вступление

В составе устройств под управлением Windows Phone 7 есть Фотоальбом, куда складываются картинки, в том числе, сделанные камерой. Вы можете создать специальное расширение для фотоальбома, которое позволяет выбрать из альбома картинку и загрузить ее сразу в свое приложение.

Создания расширения для фотоальбома

Чтобы в фотоальбоме появился специальный пункт меню для вызова нашего приложения, необходимо создать файл Extras.xml. В этом случае пользователь может выбрать картинку в фотоальбоме и загрузить ее в нашу программу для дальнейших действий.

Для проверки работоспособности расширения необходимо иметь реальное устройство или установить разлоченный эмулятор.

Добавление файла Extras.xml

Создим новый Silverlight-проект PhotoExtrasDemo (можете выбрать любое имя). В Solution Explorer щелкаем правой кнопкой мыши на папке References и выбираем команду Add Reference. В диалоговом окне на вкладке .NET выбираем Microsoft.XNA.Framework и добавляем в проект.

Открываем файл MainPage.xaml.cs и добавляем следующие пространства имен:


using System.Windows.Media.Imaging;
using Microsoft.Phone;
using System.IO;
using Microsoft.Xna.Framework.Media;
using System.Windows.Navigation;

Теперь щелкаем правой кнопкой мыши на имени проекта в Solution Explorer и выбираем Add | New Item.

В диалоговом окне Add New Item выбираем XML File и даем ему имя Extras.xml. Щелкаем кнопку Add.

Два важных замечаний. Первое - убедитесь, что у файла Extras.xml свойство Copy to Output Directory установлено в Copy always. Втрое - файл должен иметь имя Extras.xml, чтобы фотоальбом распознал приложение как расширение.

Откройте файл Extras.xml и вставьте следующие строчки после строки <?xml version="1.0" encoding="utf-8" ?>:


<Extras>
  <PhotosExtrasApplication>
    <Enabled>true</Enabled>
  </PhotosExtrasApplication>
</Extras>

Откройте файл MainPage.xaml и добавьте следующий код между тегами сетки ContentPanel:


<Image Name="retrievePic"
    Height="350" Width="450"
    HorizontalAlignment="Left"
    VerticalAlignment="Top"
	Margin="6,18,0,0" 
	Stretch="Fill" />

Вместо написания кода, вы также можете просто перетащить элемент Image из панели инструментов и установить необходимые свойства в окне свойств.

Следующий код позволяет получить выбранный в фотоальбоме картинку и создать объект WriteableBitmap.

В файле MainPage.xaml.cs добавьте следующие строчки:


protected override void OnNavigatedTo(NavigationEventArgs e)
{
    //Gets a dictionary of query string keys and values
    IDictionary<string, string> queryStrings = this.NavigationContext.QueryString;

    //This code ensures that there is at least one key in the query string, and check if the "token" key is present.
    if (queryStrings.ContainsKey("token"))
    {
        //This code retrieves the picture from the local Zune Media Database using the token passed to the application.
        MediaLibrary library = new MediaLibrary();
        Picture picture = library.GetPictureFromToken(queryStrings["token"]);

        //Creates WriteableBitmap object and adds to the Image control Source property.
        BitmapImage bitmap = new BitmapImage();
        bitmap.SetSource(picture.GetImage());
        WriteableBitmap picLibraryImage = new WriteableBitmap(bitmap);
        retrievePic.Source = picLibraryImage;
    }
}

В приведенном коде описаны инструкции для получения маркера в Silverlight-приложении. Для XNA-приложений маркер можно получить при помощи свойства LaunchParameter класса Microsoft.Xna.Framework.Game:

string token = LaunchParameters["token"];

Тестирование расширения

Для реального устройства: Сделайте несколько снимков камерой. Подсоедините устройство к компьютеру. Запустите отладку программы в Visual Studio и убедитесь, что ваше приложение установилось на устройстве. Остановите отладку. Отсоедините устройство от компьютера и перейдите на главную страницу.

Для эмулятора: запустите отладку, убедитесь, что ваше приложение установилось на устройстве. Остановите отладку и перейдите на главную страницу.

Выберите на устройстве или эмуляторе Фотоальбом (хаб Pictures) и выберите пункт All. Далее выберите секцию Camera Roll на реальном устройстве, чтобы увидеть свои сделанные снимки (на эмуляторе можно выбрать другую секцию с предустановленными картинками). Далее выберите любую картинку для просмотра. Коснитесь трех точек в нижней части панели приложения, чтобы вызвать меню. Там вы увидите команду extras… в самом конце списка. Выберите пункт Select extras….

Откроется страница EXTRAS, где вы найдете свое приложение, которое мы только что создали. Выберите его. Приложение запустится и в элементе Image будет находиться выбранная картинка из фотоальбома.

Следующие иллюстрации показывают эти моменты.

Photo Extras

Идея статьи: How to: Create a Photo Extras Application for Windows Phone

Реклама