[英]Play Background Audio on MVVM on windows phone 8.1
我真的坚持这一点。 到目前为止,MSDN论坛上没有人能够帮助我。
我有一个MVVM应用程序,一个经过编辑的AppStudio应用程序。 我在应用程序上添加了播客功能。 由于播客音频从未在Background上播放,因此该功能可以完美发挥作用。
我已经在MediaElement上声明这是具有背景功能的媒体。 这是我认为的XAML
<DataTemplate x:Key="PodCast1DetailDetail">
<ScrollViewer>
<StackPanel>
<TextBlock Margin="0,16" Text="{Binding Title, Converter={StaticResource TextPlainConverter}, ConverterParameter = 140}" Style="{StaticResource SubHeaderText}" />
<MediaElement x:Name="PodCast"
Source="{Binding Enclosure}"
PosterSource="{Binding PodcastImg}"
CurrentStateChanged="Media_CurrentStateChanged"
RateChanged="Media_RateChanged"
AreTransportControlsEnabled ="True"
AudioCategory="BackgroundCapableMedia"
Stretch="UniformToFill"
Width="340"
Height="auto"
MediaFailed="Media_MediaFailed"
MediaOpened="Media_MediaOpened"
MediaEnded="Media_MediaEnded"
AutoPlay="False"
HorizontalAlignment="Stretch"/>
<!--<Image Source="{Binding ImageUrl, Converter={StaticResource ThumbnailConverter}, ConverterParameter=300}" Stretch="Uniform" />-->
<TextBlock Margin="0,12" Style="{StaticResource ItemContentText}" Text="{Binding Content, Converter={StaticResource TextPlainConverter}}" />
<!--<controls:WebControl Html="{Binding Content}" Width="auto" Height="1000" Foreground="{StaticResource AppForegroundColor}" />-->
</StackPanel>
</ScrollViewer>
</DataTemplate>
这是详细信息页面上的XAML:
<FlipView x:Name="FlipViewPodCast" Grid.Row="1" TabIndex="1"
DataContext="{Binding NextCastModel}"
ItemsSource="{Binding Items}"
ItemTemplate="{StaticResource NextCast1DetailDetail}"
SelectedItem="{Binding SelectedItem, Mode=TwoWay}"
ItemContainerStyle="{StaticResource FlipItemStyle}">
</FlipView>
遵循详细页面后面的所有代码:
using System;
using System.Diagnostics;
using System.Threading;
using System.Net.NetworkInformation;
using Windows.Foundation;
using Windows.Foundation.Collections;
using Windows.UI.Xaml;
using Windows.UI.Xaml.Controls;
using Windows.UI.Xaml.Navigation;
using Windows.ApplicationModel.DataTransfer;
using Windows.Media;
using Windows.Media.Playback;
using Windows.UI.Core;
using Windows.UI.Xaml;
using Windows.UI.Xaml.Media;
using Windows.UI.Xaml.Controls;
using Windows.UI.Xaml.Navigation;
using AppStudio.Services;
using AppStudio.ViewModels;
namespace AppStudio.Views
{
public sealed partial class PodCastDetail : Page
{
private NavigationHelper _navigationHelper;
private DataTransferManager _dataTransferManager;
public PodCastDetail()
{
this.InitializeComponent();
_navigationHelper = new NavigationHelper(this);
}
public PodCastViewModel PodCastModel { get; private set; }
public NavigationHelper NavigationHelper
{
get { return _navigationHelper; }
}
protected override void OnNavigatedTo(NavigationEventArgs e)
{
_dataTransferManager = DataTransferManager.GetForCurrentView();
_dataTransferManager.DataRequested += OnDataRequested;
_navigationHelper.OnNavigatedTo(e);
PodCastModel = NavigationServices.CurrentViewModel as PodCastViewModel;
if (PodCastModel != null)
{
PodCastModel.ViewType = ViewTypes.Detail;
}
DataContext = this;
}
protected override void OnNavigatedFrom(NavigationEventArgs e)
{
_navigationHelper.OnNavigatedFrom(e);
_dataTransferManager.DataRequested -= OnDataRequested;
}
private void OnDataRequested(DataTransferManager sender, DataRequestedEventArgs args)
{
if (PodCastModel != null)
{
PodCastModel.GetShareContent(args.Request);
}
}
}
}
有人可以帮帮我吗? 我真的坚持这一点。 谢谢
我能说什么...首先,它是在应用程序中创建的MediaElement对象,与ListView或连接的触发器相同。 当切换应用程序时,它们会发生什么? ListView将处于活动状态? 本地文件在后台播放,因为默认播放器正在播放它们,所以请单击媒体控件(UVC面板)的标题轨道。 我将打开默认播放器,而不是您的应用程序。
我认为这应该对您有帮助。
概述:背景音频(Windows Phone Store应用)
好吧,至少我完成了自己的播放器,播放该播放器以及本地轨道和流轨道时没有问题:3
请注意,当前Windows Phone和Windows Store应用程序对背景音频的工作方式有所不同。
对于电话上的背景音频,您不能使用XAML中声明的MediaElement
:相反,您需要使用背景音频任务来完成音频工作。
您需要遵循MSDN上Windows Phone的特定说明 。 这将为您提供一个非常有用的背景音频代码示例。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.