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

The Dew Review – Intel 下一代 Ultrabook™ 配 Windows 8:最终审阅

emptyStarIconemptyStarIconemptyStarIconemptyStarIconemptyStarIcon

0/5 (0投票)

2012年11月21日

CPOL

4分钟阅读

viewsIcon

9674

这是我对英特尔超极本的第三篇也是最后一篇评测。

您可以在这里阅读我对英特尔下一代超极本的前两篇评测

  1. The Dew Review – Intel 下一代 Ultrabook™ 配 Windows 8:初步印象
  2. The Dew Review – Intel Next Generation Ultrabook™ with Windows 8: Playing with Sensors

引言

这是我对英特尔超极本的第三篇也是最后一篇评测。 我很高兴地说,这并不是我停止使用这台机器。 它已经成为我在工作之外进行开发和所有其他常规用途的主要设备。 我的妻子和孩子也喜欢使用它。

家庭时光

我有三个女儿。 六岁的露西喜欢在Mr. Anker Tests上练习单词和数字。 它为学前班和小学儿童提供了各种基于Flash的活动。 露西非常喜欢她可以使用触摸板或屏幕与网站互动。 每当她在非触摸设备上看到Windows应用程序时,她都会倾向于首先触摸屏幕。 这不是在使用iPod Touch、iPad或Kindle Fire之后发生的事情。 我认为这是看到相同的Windows用户界面触发了它。

更多Windows 8开发

自从上次评测以来,我一直在研究WinRT中提供的传感器API。 我创建了另外几个简单的概念验证类型的应用程序,它们只是引用所有传感器并显示和记录输出。 其中一个类似于我的第一个C#/XAML SensorFun应用程序,但我用HTML/JavaScript编写了它,看看这种类型的应用程序有什么不同。 我发现除了语法之外,它们几乎相同。 该应用程序名为SensorFunJS,这是JavaScript代码的片段。

(function () {
    "use strict";

    WinJS.Binding.optimizeBindingReferences = true;

    var orientationSensor;
    var app = WinJS.Application;

    function id(elementId) {
        return document.getElementById(elementId);
    }

    function onOrientationChanged(e) {
        switch (e.orientation) {
            case Windows.Devices.Sensors.SimpleOrientation.notRotated:
                id('orientationElement').innerHTML = "Not Rotated";
                break;
            case Windows.Devices.Sensors.SimpleOrientation.rotated90DegreesCounterclockwise:
                id('orientationElement').innerHTML = "Rotated 90 degrees";
                break;
            case Windows.Devices.Sensors.SimpleOrientation.rotated180DegreesCounterclockwise:
                id('orientationElement').innerHTML = "Rotated 180 degrees";
                break;
            case Windows.Devices.Sensors.SimpleOrientation.rotated270DegreesCounterclockwise:
                id('orientationElement').innerHTML = "Rotated 270 degrees";
                break;
            case Windows.Devices.Sensors.SimpleOrientation.faceup:
                id('orientationElement').innerHTML = "Face Up";
                break;
            case Windows.Devices.Sensors.SimpleOrientation.facedown:
                id('orientationElement').innerHTML = "Face Down";
                break;
            default:
                id('orientationElement').innerHTML = "Unknown orientation: " + e.orientation;
                break;
        }
    }

    app.onactivated = function (activationArgs) {
        if (activationArgs.detail.kind === Windows.ApplicationModel.Activation.ActivationKind.launch) {
            
            orientationSensor = Windows.Devices.Sensors.SimpleOrientationSensor.getDefault();
            orientationSensor.addEventListener("orientationchanged", onOrientationChanged);
            
            WinJS.UI.processAll();
        }
    };
    
    app.start();
})();

接下来,我找到了Code Project上的一篇文章,其中包含一个引用WinRT库并使用传感器API的Windows 8 WinForm应用程序。 同样的C#代码可以用于Windows 8上的WPF桌面应用程序。 我计划利用这个项目中的想法来创建我自己的库,该库可以在Windows 8桌面应用程序之间共享。 这是Yvan的文章中的代码示例。

private void SensorListener()
{
    // Monitor accelerometer events.
    if (_accelerometer != null)
    {
        _accelerometer.ReportInterval = 0; // default

        _accelerometer.ReadingChanged += AccelerometerOnReadingChanged;
        _accelerometer.Shaken += (s, a) => _shaken++;
        Log("Shake activity will be monitored.");
    }

    // Monitor compass events.
     if(_compass != null)
    {
        _compass.ReportInterval = 0; // default
        _compass.ReadingChanged += CompassOnReadingChanged;
    }

    // Monitor gyro events.

    if(_gyrometer != null)
    {
        _gyrometer.ReportInterval = 0; // default
        _gyrometer.ReadingChanged += GyrometerOnReadingChanged;
    }

    // Monitor light sensor events.
    if (_light != null)
    {
        _light.ReportInterval = 0; // default

        _light.ReadingChanged += LightOnReadingChanged;
    }

    // Monitor position sensor events.
    if (_geolocator != null)
    {
        _geolocator.ReportInterval = 1000;
        _geolocator.MovementThreshold = 1;
        _geolocator.DesiredAccuracy = PositionAccuracy.High;
        _geolocator.StatusChanged += GeolocatorOnStatusChanged;
        _geolocator.PositionChanged += GeolocatorOnPositionChanged;
    }

     // Monitor NFC proximity events.
     if (_proximity != null)
    {
        _proximity.DeviceArrived += ProximityDeviceArrived;
        _proximity.DeviceDeparted += ProximityDeviceDeparted;
    }
            
    // The sensor loop.

    while (true)
    {
        if (_stopping)
            return;
        Thread.Sleep(0); // Defer to other threads that need cycles.
    }
}

如你所见,这段代码与WinRT应用程序的代码没什么不同。

英特尔有一篇非常好的文章,题为“从桌面应用程序使用Windows 8 WinRT API”。 如果你正在为Windows 8开发桌面应用程序,我强烈建议你查看一下。 WinRT中有很多很棒(且易于使用)的API。 能够在我们的桌面应用程序中利用它们真是令人兴奋。

现实世界中的传感器

至于传感器在现实世界应用程序中的实用性,我认为最大的机会在于游戏开发。 对于其中一些应用程序,也可能有一些模拟器和医疗保健相关的应用程序。

我正处于创建名为Steady Hands Challenge的应用程序的早期阶段。 你可以阅读我在Code Project上的应用程序概述。 基本上,你将超极本放在手掌上,应用程序将使用屏幕上的图表来指示用户向哪个方向倾斜超极本。 你保持实际X/Y/Z线与目标线越接近,你的得分就越高。 加速度计检测到的任何抖动都会导致惩罚。 虽然我最初设想这个WPF应用程序是一种游戏,但我可以看到类似的东西可以用于游戏化物理治疗。 只要你不担心患者会掉落你的超极本。

最后的总结

正如我多次声明的那样,我非常喜欢在这台机器上进行开发。 我真的相信,搭载Windows 8的超极本是当今完美的开发者机器。 它们提供运行Visual Studio或任何其他IDE的多个实例所需的能力和速度。 触摸屏和传感器也消除了拥有单独平板电脑来测试应用程序的需求。 我可以编写使用复杂手势的应用程序,并通过简单的F5进行测试。 这节省了时间、金钱和麻烦。

我的名字是Alvin Ashcraft,我认可这款超极本。

材料连接披露: 我免费收到上述一种或多种产品或服务,希望我会在我的博客上提到它。 无论如何,我只会推荐我个人使用的产品或服务,并相信我的读者会喜欢。 我是根据联邦贸易委员会的16 CFR,第255部分:“关于在广告中使用代言和证明的指南”披露这一点。

© . All rights reserved.