- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有这个奇怪的问题。我正在尝试为Windows Phone 8.1
创建一个音乐播放器应用程序。即使应用程序处于后台/关闭状态,我也需要音乐播放器在后台播放音乐。所以我正在使用BackgroundMediaPlayer类来播放音乐。以下是相同的代码:
private void SendMessageToBackground(string Path, string Name, bool IsRadio)
{
if (!string.IsNullOrEmpty(Path))
{
var message = new ValueSet();
message.Add(Constants.TrackURI, Path);
message.Add(Constants.TrackName, Name);
message.Add(Constants.IsRadio, IsRadio);
BackgroundMediaPlayer.MessageReceivedFromBackground += BackgroundMediaPlayer_MessageReceivedFromBackground;
BackgroundMediaPlayer.Current.MediaFailed += Current_MediaFailed;
BackgroundMediaPlayer.SendMessageToBackground(message);
}
}
Music
文件夹之外的文件时(请参见屏幕截图),背景音乐播放器根本无法播放该文件。
BackgroundMediaPlayer
及其
MediaPlayer
中的事件以检查是否有任何可能的失败原因,但是在回放失败的情况下都不会触发这两个事件。但是,如果成功播放(来自Music文件夹),则正确触发了
BackgroundMediaPlayer
的
MessageReceivedFromBackground
事件。我检查了正在传递的文件路径,并且都正确,然后尝试使用手机的内置“音乐”应用程序播放这些音乐文件,并且也成功播放了。这可能是什么问题?我该如何解决?
Uri
/
StorageFile
传递给
BackgroundMediaPlayer.Current
。码:
public async void StartTrackAt(string TrackURI, string Name)
{
try
{
BackgroundMediaPlayer.Current.SetUriSource(new Uri(TrackURI)); // This works fine in debug mode. Throws Exception in release mode
/* Tried this also, but this doesn't even work in debug mode
StorageFile storageFile = await StorageFile.GetFileFromPathAsync(TrackURI);
mediaPlayer.SetFileSource(s);
*/
}
catch (Exception ex)
{
//Control comes here when trying to play files outside Music folder.
}
}
Exception
:
{System.UnauthorizedAccessException: Access is denied. (Exception from HRESULT: 0x80070005 (E_ACCESSDENIED))
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at System.Runtime.CompilerServices.TaskAwaiter`1.GetResult()
at BackgroundMusicPlayer.MyPlayListManager.<StartTrackAt>d__0.MoveNext()}
[System.UnauthorizedAccessException]: {System.UnauthorizedAccessException: Access is denied. (Exception from HRESULT: 0x80070005 (E_ACCESSDENIED))
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at System.Runtime.CompilerServices.TaskAwaiter`1.GetResult()
at BackgroundMusicPlayer.MyPlayListManager.<StartTrackAt>d__0.MoveNext()}
Data: {System.Collections.ListDictionaryInternal}
HelpLink: null
HResult: -2147024891
InnerException: null
Message: "Access is denied. (Exception from HRESULT: 0x80070005 (E_ACCESSDENIED))"
Source: "mscorlib"
StackTrace: " at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)\r\n at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)\r\n at System.Runtime.CompilerServices.TaskAwaiter`1.GetResult()\r\n at BackgroundMusicPlayer.MyPlayListManager.<StartTrackAt>d__0.MoveNext()"
Uri
而不获取
StorageFile
时,它在 Debug模式下运行良好。
最佳答案
我遇到了BackgroundMediaPlayer的相同访问问题。
请see this answer about possible access to different files。
因此,您需要结合使用FolderPicker和FutureAccessList
var folder = await folderPicker.PickSingleFolderAsync();
Windows.Storage.AccessCache.StorageApplicationPermissions.FutureAccessList.Add(folder);
关于c# - BackgroundMediaPlayer无法播放音乐文件夹外部的音乐文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34014612/
我有一个有两个后台任务的应用程序:一个后台音频任务和一个蓝牙任务。我想要做的是在蓝牙任务的代码中修改音频播放的状态,而无需通过前台应用程序。我试着把它放在蓝牙任务中希望它能工作: if (Backgr
当我将应用程序的生命周期更改为“暂停和关闭”时,来自前台的事件 MessageReceivedFromBackground 没有触发? 当我更改为“暂停”并在更改为“恢复”之后一切正常。 最佳答案 有
WP 8.1有BackgroundMediaPlayer来播放背景音频。 http://www.jayway.com/2014/04/24/windows-phone-8-1-for-develope
我正在用 C# 创建一个计时器。当计时器结束时,用户将收到通知。 如果我的应用被挂起,我会使用 ToastNotificationManager 安排通知,并在 toast XML 中将声音设置为内部
我最近决定在我的应用程序中添加对播客的背景音频播放支持。我已经完成了大部分工作,但是 BackgroundMediaPlayer 的 SystemTransportControls 中的暂停按钮似乎没
我阅读了有关背景音频的 msdn 概述并查看了示例应用程序,但我对可以通过它们交换的消息和数据有点困惑。 ValueSet messageDictionary = new ValueSet(); me
我是一名优秀的程序员,十分优秀!