2013-07-26 2 views
0

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

Я запускаю медиафайл для воспроизведения моего музыкального файла из изолированного хранилища, с доступными функциями (воспроизведение, пауза, следующий, предыдущий, поиск), и все идет идеально!

Теперь я хочу, чтобы приложение продолжало играть на выходе пользователя или выгрузке страницы или что-то в этом роде, когда уже появился медиаэлемент!

Обратите внимание на Abobe попробовать

 
list.playlist: is a list with audiotracks 
num_input: is the number of music file in list that will play, (get: from mediaelement) 
time_input: is the timespan from mediaelement before stop, (set: backgroundaudioplayer to start) 
play: is boolean variable, true if mediaelement plays 
Stop(): is function that stops mediaelement from playing 

Thats я пытаюсь это:

private void PhoneApplicationPage_Unloaded(object sender, RoutedEventArgs e) 
{ 
    if (play == true) 
    { 
     TimeSpan time_input = med.Position; 
     Stop(); 

     BackgroundAudioPlayer.Instance.Close(); 
     BackgroundAudioPlayer.Instance.Track = list.playlist[num_input]; 
     BackgroundAudioPlayer.Instance.Position = time_input; 
     if (PlayState.Playing == BackgroundAudioPlayer.Instance.PlayerState) {  BackgroundAudioPlayer.Instance.Pause(); } 
     else { BackgroundAudioPlayer.Instance.Play(); } 
     } 
} 

void Instance_PlayStateChanged(object sender, EventArgs e) 
{ 
    switch (BackgroundAudioPlayer.Instance.PlayerState) 
    { 
     case PlayState.Playing: 
      break; 

     case PlayState.Paused: 
     case PlayState.Stopped: 
      break; 
    } 
} 

Проблема заключается в том, что, когда приложение страниц разрядить (а не на выходе пользователя, первая проблема) backgroundaudioplayer получает имя и EnabledControls и весь персонал, но он не воспроизводит даже я нажимаю кнопку воспроизведения (так что кнопки не работают, вторая проблема)!

Также я хочу контролировать список моих приложений рядом с этим проигрывателем (предыдущий, следующий, воспроизведение, пауза), даже приложение закрыто!

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

AudioTrack audiotrack1 = new AudioTrack(new Uri(emp.EmployeeFile + ".mp3", UriKind.Relative), emp.EmployeeName, null, null, null, null, EnabledPlayerControls.All); 

Спасибо!

ответ

1

Реализация фонового звука требует больше работы. См. Эту статью для пошагового руководства: http://msdn.microsoft.com/EN-US/library/windowsphone/develop/hh202978(v=vs.105).aspx

Остерегайтесь, что агент живет в другом процессе, я не уверен, поддерживает ли SqlCe одновременный доступ к одной базе данных из разных процессов. ИМО лучшим способом связи с фоновым агентом является изолированный файл хранения (например, плейлист), охраняемый с помощью имени System.Threading.Mutex.

+0

Учтите, что агент принимает плейлист плей-листа как переменную не из базы данных, как вы сказали! Plan (Database ---> static variable List ---> Agent), я видел этот документ, но я не хочу управлять агентом через приложение, но список через агента, когда приложение закрыто! –

+0

Мой план будет Database -> List (в графическом интерфейсе) -> изолированный файл хранилища -> статический список (в процессе агента) -> фоновый аудиоплеер. Помните, что ОС иногда прерывает ваш процесс графического интерфейса (например, когда пользователь нажимает кнопку «назад» достаточно времени или в результате надгробия), в то время как процесс агента будет жить счастливо, воспроизводить вашу музыку и отвечать на универсальный «контроль паузы- предыдущее воспроизведение ". Вот почему вам нужно иметь свой плейлист в фоновом режиме. – Soonts

+0

Я вижу, я также хочу, чтобы вы знали, что я не получаю никаких исключений из существующего музыкального файла или чего-то подобного! Итак, как я могу установить плейлист в процессе агента? –

Смежные вопросы