Блог Сергея Байдачного

Мой блог о технологиях

WP 7.5: Расширение Pictures Hub

with one comment

 

Продолжу тему, связанную с расширениями функциональности встроенных в WP 7 приложений. В прошлой статье мы говорили о расширении функциональности поиска, а в этой поговорим и расширении стандартного приложения по работе с изображениями – Pictures Hub.

Итак, начнем с того, что можно расширять. Тут существуют три возможности:

1). Расширение списка приложений на вкладке Apps, которая доступна при загрузке Pictures Hub.

 

image

 

Данная вкладка появляется только тогда, когда у Вас есть хотя бы одно приложение (установленное, в отличие от поиска), декларирующее поддержку фото-приложения. Если таких приложений не установлено, то и вкладки нет.

При расширении основного приложения Pictures Hub нет никаких специальных возможностей, лишь вызов приложения, которое якобы должно уметь работать с изображениями.

2, 3). Следующая возможность появляется уже на уровне работы с конкретной фотографией и позволяет Вашему приложению получить доступ к самой фотографии из меню Application Bar приложения Picture Viewer, вызываемого из Pictures Hub для просмотра отдельной фотографии.

 

image

 

Как видно, при работе с отдельной фотографией доступны такие пункты меню, как apps… и share….

Первый позволяет вызвать приложение из списка, передав ему уникальный идентификатор изображения, по которому последнее можно загрузить.

Второй – использовать одно из приложений из списка, чтобы передать изображение по сети какой-либо веб-службе (например, опубликовать в facebook). Тут также можно получить идентификатор изображения, которое потом загрузить внутри приложения.

Давайте рассмотрим, как эти механизмы реализуются на практике.

На первом этапе необходимо в WMAppManifest.xml описать расширения. Для каждого из трех перечисленных случаев существует свое расширение. Ниже приведены примеры декларации поддержки всех трех расширений:

 

   1:  <Extensions>
   2:     <Extension ExtensionName="Photos_Extra_Viewer" 
             ConsumerID="{5B04B775-356B-4AA0-AAF8-6491FFEA5632}" TaskID="_default" />
   3:     <Extension ExtensionName="Photos_Extra_Hub" 
             ConsumerID="{5B04B775-356B-4AA0-AAF8-6491FFEA5632}" TaskID="_default" />
   4:     <Extension ExtensionName="Photos_Extra_Share" 
             ConsumerID="{5B04B775-356B-4AA0-AAF8-6491FFEA5632}" TaskID="_default" />
   5:  </Extensions>

 

При работе с расширениями нет ничего нового по сравнению с расширением поисковой функциональности. В элементе Extension прописывается фиксированный (характерный для расширения приложения по работе с изображениями) ConsumerID, имя расширения позволяет указать, какую часть приложения мы будем расширять, а TaskID ссылается на запись в разделе Tasks.

Если Вы планируете расширять Puctures Hub (основное его окно), то кода выше полностью достаточно. Ведь приложение просто вызывается из галереи, не получая специальных параметров.

Если речь идет о расширении Picture Viewer, то тут необходимо еще реализовать и код логики, обрабатывающей изображение. Для этого нужно получить идентификатор из QueryString, загрузить фотографию и отобразить пользователю соответствующий интерфейс. Обычно первая часть этих действий выполняется в перегруженном методе OnNavigatedTo, который инициализируется при переходе на страницу. Вот пример кода, который может быть реализован внутри метода:

 

   1:  IDictionary<string, string> queryStrings = 
   2:     this.NavigationContext.QueryString;
   3:   
   4:  if (queryStrings.ContainsKey("token"))
   5:  {
   6:     MediaLibrary library = new MediaLibrary();
   7:   
   8:     Picture picture = 
   9:        library.GetPictureFromToken(queryStrings["token"]);
  10:   
  11:     BitmapImage bitmap = new BitmapImage();
  12:     bitmap.CreateOptions = BitmapCreateOptions.None;
  13:     bitmap.SetSource(picture.GetImage());
  14:     WriteableBitmap picLibraryImage = new WriteableBitmap(bitmap);
  15:     . . . . .
  16:  }
  17:   

 

В данном коде мы обрабатываем ключ token, который присутствует, если мы расширяем пункт apps… В случае с share… пунктом следует обрабатывать ключ FileId.

Таким образом, расширить Pictures Hub – простая задача. Проблема только в отсутствии возможности протестировать все это на эмуляторе, так как в последнем Pictures Hub не активирован.

Реклама

Written by Sergiy Baydachnyy

16.11.2011 в 15:04

Опубликовано в Windows Phone

Tagged with

Один ответ

Subscribe to comments with RSS.

  1. Привет. А как сделать все то же самое, но для видео?


Добавить комментарий

Заполните поля или щелкните по значку, чтобы оставить свой комментарий:

Логотип WordPress.com

Для комментария используется ваша учётная запись WordPress.com. Выход / Изменить )

Фотография Twitter

Для комментария используется ваша учётная запись Twitter. Выход / Изменить )

Фотография Facebook

Для комментария используется ваша учётная запись Facebook. Выход / Изменить )

Google+ photo

Для комментария используется ваша учётная запись Google+. Выход / Изменить )

Connecting to %s

%d такие блоггеры, как: