我目前正在使用AudioPlaybackAgent
播放在线音频流(mp3
)。如果设备连接到互联网,则播放音频。但是当没有网络连接时,我按下我的应用程序中的play
按钮,然后崩溃
An unhandled exception of type 'System.SystemException' occurred in System.Windows.ni.dll
它指出了这部分代码
....
case UserAction.Play:
if (player.PlayerState != PlayState.Playing)
{
player.Play();
}
break; // << right here
....
我可以粘贴我的整个音频播放器,但它的标准生成背景音频播放器。 这里还有一点是,在后台播放器初始化时,有一行代码
Application.Current.UnhandledException += AudioPlayer_UnhandledException;
应该处理未处理的例外......但它不会。
我可以使用简单的try-catch在音频播放器中捕获此异常但我无法使用来自audioplaybackagent的MessageBox显示它(因为如果您尝试将应用程序提交到商店,MS不允许它)。
所以我的问题是:
感谢您的帮助!
答案 0 :(得分:1)
您是否检查了音频播放代理中的AudioPlayer_UnhandledException
方法?开箱即用,它的逻辑只在连接调试器时处理错误,如果我没记错的话。
然而,IMO,处理这种情况的更好方法是检查是否存在网络连接并禁用音频流/在应用程序本身中相应地警告用户,而不是依靠代理来检测并通知网络是否可用。
Windows Phone提供了在Microsoft.Phone.Net.NetworkInformation中查找连接状态的方法,即DeviceNetworkInformation类。
DeviceNetworkInformation.NetworkAvailabilityChanged += new EventHandler<NetworkNotificationEventArgs>(NetworkChange);
void NetworkChange(object sender, NetworkNotificationEventArgs e)
{
// Network changed, disable audio streaming and alert user
}
答案 1 :(得分:0)
我已经弄明白了,使用以下代码检查网络是否可用于点击“播放”按钮
if (NetworkInterface.GetIsNetworkAvailable() == false)
{
// push some info to user...
}