Проблема tapjoy с воспроизведением видео

У меня есть одна игра для Windows Phone, созданная с использованием Silverlight. В этой игре я хочу добавить TapJoy. Я скачал их последний SDK и следую всем их шагам, чтобы встроить его в мое приложение.

В игре я использую silverlight в качестве основного каркаса и Global Media Element для воспроизведения неконтролируемой фоновой музыки. Я использую (Microsoft.Xna.Framework.Media) (Microsoft.Xna.Framework) пространство имен. Используя их, я использую следующие способы воспроизведения фонового звука. DispatcherTimer и FrameworkDispatcher.Update

Теперь, когда я нажимаю кнопку радости, чтобы открыть их предложения, они загружаются нормально; однако, когда я открываю видео в предложении, они показывают нам следующую ошибку: "Невозможно воспроизвести видео, пожалуйста, попробуйте еще раз".

Основываясь на некоторых исследованиях, я попробовал несколько вещей и обнаружил, что: а) Мне нужно установить Media Element, а DispatcherTimer равно нулю. б) Приложение отправляется в фоновом режиме (деактивировано), а затем я снова открываю его (активировано), видео идет нормально. Я проверил и обнаружил, что Media Element и DispatcherTimer были установлены в нуль правильно.

Но если я выполняю только первый шаг и не отправляю приложение в фоновом режиме, медиа-элемент и dispatcherTimer не устанавливаются в нуль.

Может кто-нибудь, пожалуйста, помогите мне и ответьте мне следующее

а) Я делаю что-нибудь с этим? б) Могу ли я сделать что-нибудь, чтобы при нажатии кнопки "Радость нажатия" мое приложение автоматически отправлялось в фоновый режим, поскольку это может решить проблему. в) я использую gc.collect() после установки значения в ноль, но все равно он не уничтожается.

Заранее спасибо, Дэвид Джейкоб.

1 ответ

Я пытаюсь следовать тому, что ты сказал. Я лично настроил бы это по-другому, но я вернусь к этому позже. У меня есть настройка, которая похожа на ваше описание, и она работает с видео Tapjoy.

Во-первых, вы упомянули, что это игра Silverlight, поэтому я создал новый проект приложения для Windows Phone по шаблону Silverlight For Windows Phone в VS 2010.

Установка диспетчера:

Я добавил следующий класс в свой проект (обычно называемый XNAFrameworkDispatcherService.cs из этого примера msdn: http://msdn.microsoft.com/en-us/library/ff842408.aspx)

public class XNAFrameworkDispatcherService : IApplicationService
{
    private DispatcherTimer frameworkDispatcherTimer;

    public XNAFrameworkDispatcherService()
    {
        this.frameworkDispatcherTimer = new DispatcherTimer();
        this.frameworkDispatcherTimer.Interval = TimeSpan.FromTicks(333333);
        this.frameworkDispatcherTimer.Tick += frameworkDispatcherTimer_Tick;
        FrameworkDispatcher.Update();
    }

    void frameworkDispatcherTimer_Tick(object sender, EventArgs e)
    {
        FrameworkDispatcher.Update();
    }

    void IApplicationService.StartService(ApplicationServiceContext context)
    {
        this.frameworkDispatcherTimer.Start();
    }

    void IApplicationService.StopService()
    {
        this.frameworkDispatcherTimer.Stop();
    }
}

Чтобы запустить этот сервис, убедитесь, что вы добавили его в свой App.xaml. Добавьте атрибут к вашему элементу Application, который указывает на ваше пространство имен, примерно так:

xmlns:s="clr-namespace:WindowsPhoneApplication;assembly=WindowsPhoneApplication">

Затем в вашем блоке добавьте следующее:

<s:XNAFrameworkDispatcherService />

Воспроизводить музыку:

Теперь о воспроизведении зацикленного музыкального файла. В файле MainPage.xaml.cs я настроил Microsoft.Xna.Framework.Media.Song для зацикливания при переходе на страницу с помощью Microsoft.Xna.Framework.Media.MediaPlayer.

protected override void OnNavigatedTo(System.Windows.Navigation.NavigationEventArgs e)
{
    base.OnNavigatedTo(e);

    Tapjoy.TapjoyConnect.Instance.RequestTapjoyConnect("your-app-id", "your-secret-key");

    try
    {
        Song song = Song.FromUri("example", new Uri("/example.wma", UriKind.Relative));
        MediaPlayer.IsRepeating = true;
        MediaPlayer.Play(song);
    }
    catch (Exception)
    {
        System.Diagnostics.Debug.WriteLine("Can't load sound");
    }
}

Я также установил его, чтобы остановить воспроизведение музыки, когда страница перемещена от.

protected override void OnNavigatedFrom(System.Windows.Navigation.NavigationEventArgs e)
{
    base.OnNavigatedFrom(e);

    MediaPlayer.Stop();
}

Затем я создал кнопку для запуска стены предложения Tapjoy.

private void button1_Click(object sender, RoutedEventArgs e)
{
    Tapjoy.TapjoyConnect.Instance.ShowOffers();
}

Резюме:

Что происходит сейчас, когда ваше приложение запускается, оно запускает XNAFrameworkDispatcherService, который работает примерно со скоростью 30 кадров в секунду. Это будет отправлять сообщения, которые находятся в очереди XNA Framework для вас. Это необходимо только в приложениях Silverlight, которые используют аудио / медиа-сервисы от XNA.

При переходе на главную страницу вы отправляете эхо-запрос Tapjoy с помощью вызова Connect и загружаете свою композицию в цикл.

Обычный игровой процесс теперь может развиваться, и когда нажата кнопка "Показать предложения", Tapjoy отойдет от вашей страницы, что приведет к переходу от события к выстрелу, и MediaPlayer остановит вашу песню.

Идеи для вашей игры:

Возможно, вы захотите создать новый проект и использовать опцию "Приложение Windows Phone Silverlight и XNA". VS2010 создаст пустой проект с уже настроенным Менеджером контента, так что вы можете использовать звуки и изображения с конвейером XNA, что, как мне показалось, проще.

Удачи, и помните, что Tapjoy также поддерживает эти проблемы. Просто напишите им по адресу support@tapjoy.com или воспользуйтесь группой разработчиков Tapjoy по адресу: https://groups.google.com/group/tapjoy-developer?hl=en

Другие вопросы по тегам