gpt4 book ai didi

windows-phone-8 - InvalidOperation 异常,后台音频代理,Windows Phone 8

转载 作者:行者123 更新时间:2023-12-02 05:16:32 26 4
gpt4 key购买 nike

我正在尝试将背景 AudioPlayer 添加到 Windows Phone 8 应用程序。

我已经创建了主项目和背景音频代理。我在主项目中添加了对后台音频播放器的引用,并将以下内容添加到应用程序 list 文件中。

   <ExtendedTask Name="BackgroundTask">
<BackgroundServiceAgent Name="myCastsbackgroundaudio" Type="myCastsbackgroundaudio.AudioPlayer" Source="myCastsbackgroundaudio" Specifier="AudioPlayerAgent"/>
</ExtendedTask>

我对引用文献进行了双重和三次检查,我确信它们指向正确的东西。

我正在使用 IsolatedStorage 和以下代码在两个应用程序之间共享信息

    private AudioTrack GetNextTrack()
{
string myTrack = settingsHelper.Read("track", string.Empty);
AudioTrack track = new AudioTrack()
{
Title = "Generic Title",
Source = new Uri("isostore://"+ myTrack, UriKind.Relative)
};
return track;
}

这似乎可以很好地获取轨道名称,然后尝试创建用于播放的音轨。此时,应用程序将抛出以下错误。

    System.InvalidOperationException was unhandled
_HResult=-2146233079
_message=Operation is not valid due to the current state of the object.
HResult=-2146233079
Message=Operation is not valid due to the current state of the object.
Source=Microsoft.Phone
StackTrace:
at Microsoft.Phone.BackgroundAudio.AudioTrack.set_Title(String value)
at myCastsbackgroundaudio.AudioPlayer.GetNextTrack()
at myCastsbackgroundaudio.AudioPlayer.OnPlayStateChanged(BackgroundAudioPlayer player, AudioTrack track, PlayState playState)
at Microsoft.Phone.BackgroundAudio.AudioPlayerAgent.CallOnPlayStateChanged(ParameterPropertyBag parameters)
at Microsoft.Phone.BackgroundAudio.AudioPlayerAgent.Invoke(Uri uri, ParameterPropertyBag parameters)
at Microsoft.Phone.BackgroundAgentDispatcher.AgentRequest.Invoke()
at Microsoft.Phone.BackgroundAgentDispatcher.InvocationThread()
at System.Threading.ThreadHelper.ThreadStart_Context(Object state)
at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
at System.Threading.ThreadHelper.ThreadStart()
InnerException:

对于我的生活,我无法弄清楚是什么导致了错误。根本原因没有跳出来,我已经为其他应用程序做了几次没有问题。

如有任何建议或见解,我们将不胜感激。

编辑:根据要求,我在下面粘贴了 OnPLayStateChanged 代码

     protected override void OnPlayStateChanged(BackgroundAudioPlayer player, AudioTrack track, PlayState playState)
{
switch (playState)
{
case PlayState.TrackEnded:
player.Track = GetNextTrack();
break;
case PlayState.TrackReady:
player.Play();
break;
case PlayState.Shutdown:
// TODO: Handle the shutdown state here (e.g. save state)
break;
case PlayState.Unknown:
break;
case PlayState.Stopped:
break;
case PlayState.Paused:
break;
case PlayState.Playing:
break;
case PlayState.BufferingStarted:
break;
case PlayState.BufferingStopped:
break;
case PlayState.Rewinding:
break;
case PlayState.FastForwarding:
break;
}

NotifyComplete();
}

还要添加一些额外的信息,错误是在 GetNextTrack 中创建音轨时抛出的,所以这个代码块

     AudioTrack track = new AudioTrack()
{
Title = "Generic Title",
Source = new Uri("isostore://"+ myTrack, UriKind.Relative)
};

最佳答案

AudioTrack 对轨道属性的编辑非常敏感。您应该使用构造函数来设置这些值,或者使用 AudioTrack.BeginEdit/EndEdit

所以尝试:

    var track =
new AudioTrack(
new Uri("isostore://"+ myTrack, UriKind.Relative),
myTrack,
string.Empty,
string.Empty,
null);

关于windows-phone-8 - InvalidOperation 异常,后台音频代理,Windows Phone 8,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14558851/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com