7MC Gofer





5.00/5 (2投票s)
7MC Gofer 是一个基于 Windows Phone 7 的 Windows Media Center 远程控制。
介绍 7MC Gofer
7MC Gofer 是一个基于 Windows Phone 7 的 Windows Media Center 远程控制。
安装 Vista Media Center TCP/IP Controller
从 这里 下载 Windows 7 版本。
在我们开始之前,我们需要一种控制 7MC 的方法。Vista Media Center TCP/IP Controller 是 7MC 的一个小插件,它托管一个类似 HTTP 的服务器,可以接受简单的命令(例如向上按钮、音量等)。
安装完成后,通过在浏览器中导航到以下 URL (https://:40510/help) 来测试该服务。

我还创建了一个极其简单的命令执行包装器
public class MceService
{
const string endPointServer = "localhost";
private void ExecuteCommand(string command, params object[] args)
{
string requestUriString = string.Format
("http://{0}:40510/{1}", endPointServer, command);
foreach (var arg in args)
{
requestUriString += "%20";
requestUriString += arg;
}
Console.WriteLine(requestUriString);
var request = (HttpWebRequest)WebRequest.Create(requestUriString);
request.Method = "GET";
request.BeginGetResponse(ExecuteCommandCallback, null);
}
static void ExecuteCommandCallback(IAsyncResult result) { }
public void Goto(string parameter)
{
ExecuteCommand("goto", parameter);
}
// The reset is removed for brevity
}
这基于 Dan & Clint 在 Tech-ed 上演示的代码(你必须观看他们的视频)。
MVVM Light Toolkit
在我们开始之前,我们需要涵盖的最后一件事是 MVVM Light Toolkit。它是由 Laurent Bugnion 创建的一个很棒的 MVVM 工具包。我使用这个框架主要有两个原因,定位 ViewModel…
DataContext="{Binding Main, Source={StaticResource Locator}}"
…以及连接命令… 这是命令(在我的 ViewModel 中)
private RelayCommand backCommand;
public RelayCommand BackCommand
{
get
{
if (backCommand == null)
backCommand = new RelayCommand(() =>
{
// Do your work here...
});
return backCommand;
}
}
在 View 中呢?
< />Button /> Content />="Back" />>
< />i:Interaction.Triggers />>
< />i:EventTrigger /> EventName />="Click" />>
< />cmd:EventToCommand /> Command />="{Binding BackCommand}" /> / />>
< />/ />i:EventTrigger />>
< />/ />i:Interaction.Triggers />>
< />/ />Button />>
MVVM Light Toolkit 使这变得非常容易!
创建 Windows Phone 7 客户端
从 这里 下载工具。
现在我们已经涵盖了基础知识,我们可以开始实际的应用程序了!这是我的想法… 主视图(我称之为仪表板,提供一些 7MC 主要功能的快捷方式,例如视频、图片、音乐和电视)。我还允许您更改音量(增大、减小、静音和取消静音)。这是仪表板

一旦您实际点击了某个选项,您将被带到另一个视图。

这是方向板。导航是通过简单的手势完成的(向上/向下/左/右轻扫和双击)。
这是检查手势的代码
private void PhoneApplicationPage_ManipulationStarted
(object sender, System.Windows.Input.ManipulationStartedEventArgs e)
{
e.Handled = true;
}
private void PhoneApplicationPage_ManipulationDelta
(object sender, System.Windows.Input.ManipulationDeltaEventArgs e)
{
}
private void PhoneApplicationPage_ManipulationCompleted
(object sender, System.Windows.Input.ManipulationCompletedEventArgs e)
{
double x = e.TotalManipulation.Translation.X;
double y = e.TotalManipulation.Translation.Y;
// Ugly hack I know...
var vm = DataContext as MainViewModel;
if (Math.Abs(y) > Math.Abs(x))
{
if (y < -20)
{
vm.MceService.Button("up");
}
if (y > 20)
{
vm.MceService.Button("down");
}
}
else
{
if (x < -20)
{
vm.MceService.Button("left");
}
if (y > 20)
{
vm.MceService.Button("right");
}
}
}
非常基础,我知道… 但它有效。:)
和一如既往地,这里 是代码。
在您开始之前,请查看此视频

也请阅读