Windows Phone 8.1 多媒体(3):音乐
原文:Windows Phone 8.1 多媒体(3):音乐
Windows Phone 8.1 多媒体(3):音乐
(1)前台
说是前台,其实音乐的播放都是利用系统后台的 BackgroundMediaPlayer:
BackgroundMediaPlayer.Current.SetUriSource(new Uri("ms-appx:///djlang59_-_Drops_of_H2O_(_The_Filtered_Water_Treatment_).mp3"));
BackgroundMediaPlayer.Current.Play();
可以添加音乐播放状态改变事件:
BackgroundMediaPlayer.Current.CurrentStateChanged += MediaPlayerStateChanged; private async void MediaPlayerStateChanged(MediaPlayer sender, object args
{
await Dispatcher.RunAsync(CoreDispatcherPriority.Normal, () =>
{
switch( BackgroundMediaPlayer.Current.CurrentState )
{
case MediaPlayerState.Stopped:
AppBarBtnPause.IsEnabled = false;
AppBarBtnStop.IsEnabled = false;
break;
case MediaPlayerState.Playing:
AppBarBtnPause.IsEnabled = true;
AppBarBtnStop.IsEnabled = true; BackgroundMediaPlayer.SendMessageToBackground(new ValueSet
{
{"Title", "Drops of H2O"},
{"Artist", "J.Lang"},
});
break;
case MediaPlayerState.Paused:
AppBarBtnPause.IsEnabled = false;
break;
}
});
}
其中 BackgroundMediaPlayer.SendMessageToBackground 方法可以向后台音乐播放程序发送消息,可在后台程序中添加处理事件:
BackgroundMediaPlayer.MessageReceivedFromForeground += BackgroundMediaPlayerOnMessageReceivedFromForeground; private void BackgroundMediaPlayerOnMessageReceivedFromForeground(object sender, MediaPlayerDataReceivedEventArgs e)
{
systemmediatransportcontrol.DisplayUpdater.Type = MediaPlaybackType.Music;
systemmediatransportcontrol.DisplayUpdater.MusicProperties.Title = e.Data["Title"].ToString();
systemmediatransportcontrol.DisplayUpdater.MusicProperties.Artist = e.Data["Artist"].ToString();
systemmediatransportcontrol.DisplayUpdater.Update();
}
(2)后台
这里说的后台是指 SystemMediaTransportControls,也就是按下音量键后顶部弹出的控制音乐播放的控件。
1)新建 Windows Runtime Component 和继承 IBackgroundTask 的后台类
A:Run 方法中可设置 SystemMediaTransportControls 的各个按键属性以及事件的订阅(比如下一曲按钮可不可用,状态更改事件等)
public void Run(IBackgroundTaskInstance taskInstance)
{
systemmediatransportcontrol = SystemMediaTransportControls.GetForCurrentView();
systemmediatransportcontrol.ButtonPressed += SystemControlsButtonPressed;
systemmediatransportcontrol.IsEnabled = true;
systemmediatransportcontrol.IsPauseEnabled = true;
systemmediatransportcontrol.IsStopEnabled = true;
systemmediatransportcontrol.IsPlayEnabled = true; BackgroundMediaPlayer.Current.CurrentStateChanged -= BackgroundMediaPlayerCurrentStateChanged;
BackgroundMediaPlayer.MessageReceivedFromForeground -= BackgroundMediaPlayerOnMessageReceivedFromForeground;
BackgroundMediaPlayer.Current.CurrentStateChanged += BackgroundMediaPlayerCurrentStateChanged;
BackgroundMediaPlayer.MessageReceivedFromForeground += BackgroundMediaPlayerOnMessageReceivedFromForeground; deferral = taskInstance.GetDeferral();
}
B:事件的处理
private void BackgroundMediaPlayerCurrentStateChanged(MediaPlayer sender, object args)
{
if (sender.CurrentState == MediaPlayerState.Playing)
{
systemmediatransportcontrol.PlaybackStatus = MediaPlaybackStatus.Playing;
}
else if (sender.CurrentState == MediaPlayerState.Paused)
{
systemmediatransportcontrol.PlaybackStatus = MediaPlaybackStatus.Paused;
}
} private static void SystemControlsButtonPressed(SystemMediaTransportControls sender, SystemMediaTransportControlsButtonPressedEventArgs args)
{
switch (args.Button)
{
case SystemMediaTransportControlsButton.Play:
BackgroundMediaPlayer.Current.Play();
break;
case SystemMediaTransportControlsButton.Pause:
BackgroundMediaPlayer.Current.Pause();
break;
case SystemMediaTransportControlsButton.Stop:
BackgroundMediaPlayer.Current.Pause();
BackgroundMediaPlayer.Current.Position = TimeSpan.FromSeconds();
break;
}
}
2)前台应用添加上一步新建的后台任务
Windows Phone 8.1 多媒体(3):音乐的更多相关文章
- 重新想象 Windows 8 Store Apps (65) - 后台任务: 音乐的后台播放和控制
[源码下载] 重新想象 Windows 8 Store Apps (65) - 后台任务: 音乐的后台播放和控制 作者:webabcd 介绍重新想象 Windows 8 Store Apps 之 后台 ...
- Windows Phone 8.1 多媒体(1):相片
原文:Windows Phone 8.1 多媒体(1):相片 Windows Phone 8.1 多媒体(1):相片 Windows Phone 8.1 多媒体(2):视频 Windows Phone ...
- Windows Phone 8.1 多媒体(2):视频
原文:Windows Phone 8.1 多媒体(2):视频 Windows Phone 8.1 多媒体(1):相片 Windows Phone 8.1 多媒体(2):视频 Windows Phone ...
- go语言让windows发出声音,或者播放音乐
go语言让windows发出声音,或者播放音乐的例子:会发出alert警告的声音 ( 这是我应群员的求助写的, 如果你需要了解其中的调用原理或过程 或更多go语言调用win32api的资料,加群: 2 ...
- 与众不同 windows phone (40) - 8.0 媒体: 音乐中心的新增功能, 图片中心的新增功能, 后台音乐播放的新增功能
[源码下载] 与众不同 windows phone (40) - 8.0 媒体: 音乐中心的新增功能, 图片中心的新增功能, 后台音乐播放的新增功能 作者:webabcd 介绍与众不同 windows ...
- Python调用Windows API函数编写录音机和音乐播放器
功能描述: 1)使用tkinter设计程序界面: 2)调用Windows API函数实现录音机和音乐播放器. . 参考代码: 运行界面:
- Qt Quick 多媒体 - 播放音乐和视频
MediaPlayer 是 QML 提供的核心多媒体类,可以播放音频.视频.要使用 MediaPlayer,需要引入 QtMultimedia 模块,在 QML 文档的开始加入 "impor ...
- HTML添加多媒体或音乐
1,添加多媒体 <embed src="多媒体文件地址" width="多媒体的宽度" height="多媒体的高度" autosta ...
- C# Winform使用Windows Media Player播放多媒体整理
一.简单使用示例步骤 1.添加Windows Media Player 组件当前是系统的 Com组件 工具箱>右键“选择项”>选择Com组件 2.控件拖拽到桌面,使用 private vo ...
随机推荐
- 玩转Web之JavaScript(一)-----javaScript语法总结(一) 与鼠标操作有关的语法
click() 对象.click() 使对象被点击. event.clientX 返回最后一次点击鼠标 X 坐标值: event.clientY 返回最后一次点击鼠标 Y 坐标值: event ...
- LeetCode Solutions : Reorder List
→-→Ln-1→Ln, reorder it to: L→Ln-2→- You must do this in-place without altering the nodes' values. Fo ...
- Jquery在线咨询地址
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.2.6/jquery.min.js" type=&quo ...
- 实现一个简单的boot
1.汇编语言.分别汇编器和链接as86和ld86.码如下面: .globl begtext,begdata,begbss,endtext,enddata,endbss .text begtext: . ...
- 于SharePoint经营SharePoint Designer建立
于SharePoint经营SharePoint Designer建立 SharePoint Designer 2010(SPD)它是一种强大的工具,帮助建立一个高速解决方案. 通过连接到现场,能够自由 ...
- cocos2d-x由Jni实现Java与C++打电话给对方
cocos2d-x由Jni实现Java与C++打电话给对方. cocos2d-x与开发商提供一个类JniHelper,提供java与c++之间的互jni解. 笔者所开发的"史上最坑爹的游戏& ...
- PHP上传文件(学习)
<?php if(isset($_FILES['upfile'])) { if (is_uploaded_file($_FILES['upfile']['tmp_name'])){ $upfil ...
- Web API之消息处理管道
Web API之消息处理管道 前言 MVC有一套请求处理的机制,当然Web API也有自己的一套消息处理管道,该消息处理管道贯穿始终都是通过HttpMessageHandler来完成.我们知道请求信息 ...
- Cocos2dx 3.0 交流篇
创建项目: For(MAC) Runtime Requirements Android 2.3 or newer iOS 5.0 or newer OS X 10.7 or newer Windows ...
- 【DataStructure】Some useful methods for arrays
Last night it took me about two hours to learn arrays. For the sake of less time, I did not put emph ...