65.9K
CodeProject 正在变化。 阅读更多。
Home

7MC Gofer

starIconstarIconstarIconstarIconstarIcon

5.00/5 (2投票s)

2010年6月23日

CPOL

2分钟阅读

viewsIcon

28344

7MC Gofer 是一个基于 Windows Phone 7 的 Windows Media Center 远程控制。

Gofergo-fer(发音为 /'go?f?r/ "Topo")是一个 雇员,经常被派去跑腿。

介绍 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 客户端

Windows Phone

这里 下载工具。

现在我们已经涵盖了基础知识,我们可以开始实际的应用程序了!这是我的想法… 主视图(我称之为仪表板,提供一些 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");
        }
    }
}

非常基础,我知道… 但它有效。:)

和一如既往地,这里 是代码。

在您开始之前,请查看此视频

也请阅读

© . All rights reserved.