Building Compelling Windows* Store Apps for Intel® Atom™ Processor-Based Tablet Devices

Pub Date : Nov 26 (to be removed)


Building Compelling Windows* Store Apps for Intel® Atom™ Processor-Based Tablet Devices [PDF 403KB]


This article looks at the various platform features available on the latest Intel® Atom™ processor Z3000 series-based tablets and explores ways to use these features to build compelling Windows* Store apps. This article also explores some of the new features and APIs available in Windows 8.1 to build these compelling apps.


Some of the new and improved features available on Intel Atom processor Z3000 series-based tablets include Camera Image Signal Processing (ISP) 2.0, NFC, Sensors, GPS, Intel® HD Graphics, Media capabilities, Intel® Wireless Display, and more. This article will explore some of these platform features, provide a brief overview of the capabilities, and discuss how you can implement these features in a Windows Store app.

Camera Image Signal Processing 2.0

The Intel Atom processor Z3000 series-based tablet platforms have a new and improved ISP for taking great action images and videos. Improvements include digital video stabilization, burst capture mode, zero shutter lag capture, and multi-camera image capture.

Capturing Audio and Video

Windows 8.1 includes a simple and easy to incorporate API for capturing videos and photos. The CameraCaptureUI class gives the end user a full camera experience, complete with customization of options and a crop interface after an image is captured. See the screenshot in Figure 1 for more details.

Figure 1. CameraCaptureUI screenshot in Windows* 8.1

The code to enable this feature is as simple as the following:

CameraCaptureUI dialog = new CameraCaptureUI();
StorageFile file = await dialog.CaptureFileAsync(CameraCaptureUIMode.Photo);

Digital Video Stabilization

New for Windows 8.1 and tablets with Intel Atom processor Z3000 series is the ability to enable video stabilization. This feature uses dedicated hardware to stabilize jitter or shakiness caused by hand motion while recording. To enable this feature, create a new MediaCapture object and add an effect as demonstrated in the code below:

mediaCapture = new Windows.Media.Capture.MediaCapture();
await mediaCapture.InitializeAsync(settings);
await mediaCapture.AddEffectAsync(Windows.Media.Capture.MediaStreamType.VideoRecord, “Windows.Media.VideoEffects.VideoStabilization”, null );

Dual Cameras

Another new feature is the ability to simultaneously capture video or images from both the front and rear facing cameras. In the screenshot below, the front facing camera captures a headshot and the rear facing camera captures a landscape.

The ability to snap pictures or record video from both cameras simultaneously creates some interesting use cases. A tablet with two cameras could capture video of multiple meeting participants at the same time for an online meeting. This could also be useful for adding narration while recording.


Sensors available on Intel Atom processor-based tablets include GPS, NFC, accelerometer, gyrometer, magnetometer, and others. The article “Using Sensors and Location Data for Cutting-edge User Experiences in Mobile Applications” ( takes an in-depth look at the APIs available in Windows Store apps and ways to improve on sensor experiences.

The rest of this article expands on a new module for creating Geofencing featured apps and looks at use cases around NFC.


This first question to look at is, what is geofencing? The following image depicts a virtual perimeter around a real world geographic location:

The red marker is the real world point of interest, and the green dot is the device reporting a GPS position. The blue perimeter is a virtual fence around this point of interest.

In this image, as the device with GPS moves location and leaves the virtual fence, the application is notified and an action can be taken. This is also true for the reverse. If the device enters the virtual fence, the same application notification occurs.

Geofencing itself is not new. What is new are the classes and modules available in Windows 8.1 for a great developer (and user) experience creating (and using) geofencing apps. With geofencing APIs come some new interesting use cases for apps. Some examples include location-based reminders, such as a receiving a reminder to pick up milk on the way home when you leave the geofence around the office. Geofences could be set up to send users alerts for upcoming train stops or notifications for when their children arrive or depart school. Apps could use geofences to assist with check-ins and check-outs from social web sites. Geolocation apps could include retail applications, where coupons are offered to users who are physically in your store. Additionally, coupons could be offered only when the user has spent a certain amount of time browsing in the store.

To set up a geofence in code, the following example can be adapted for your purposes:

// Get a geolocator object 
geolocator = new Geolocator();
position = geolocator.GetGeopositionAsync()

// receive notifications of change events
GeofenceMonitor.Current.GeofenceStateChanged += OnGeofenceStateChanged;

// the geofence is a circular region of 50 meters
Geocircle geocircle = new Geocircle(position, 50);

TimeSpan dwellTime = new TimeSpan(0, 5, 0); // 5 minutes
TimeSpan duration = new TimeSpan(2, 0, 0); // 2 hour duration

geofence = new Geofence(fenceKey, geocircle, mask, singleUse, dwellTime, 	startTime, duration);

First, the app needs a position to set up the virtual fence around. This is done by using the Geolocator object. Next, an event handler is configured to be called when the geofence conditions are met. In this example a geocircle with a 50-meter radius is to be used as the virtual perimeter. The last step is to create the geofence and add it to the list of all geofences. The two time parameters specify how long the device’s position needs to be in or out of the geofence before triggering and how long the conditions should remain active.

Near Field Communication (NFC)

NFC is a wireless connection that differs from Bluetooth* or Wi-Fi* in a couple of ways. NFC is a quick, simple, automatic connection that requires little or no configuration by the end user. This is quite different from Bluetooth or Wi-Fi where connections require passwords and other information to establish a connection. In the case of NFC, proximity is used as the connection mechanism, and an NFC connection will only work when the devices are within about 4 cm.

At a higher level, NFC usage can be divided into three use cases: acquiring information (e.g., read URI from NFC tag), exchanging information (e.g., send/receive photo), and connecting devices (e.g., tap device to configure Bluetooth or other connection configuration). These three categories together can enable a variety of use cases, and we will take a look at a couple of them below.

For a closer look at NFC and its details, see the article “NFC Usage in Windows* Store Apps – a Healthcare App Case Study” (

Protocol Activation

Using NFC for acquiring information means that a device is brought near another device or passive NFC tag for reading its contents. It would be nice if the user has an application that knows how to handle the custom data of the NFC tag to go ahead and launch the app for the user. The process follows three steps:

  1. App registers the URI (e.g., mailto, http) in the application manifest
  2. User reads the NFC tag with URI
  3. App is launched and entire URI is passed in

With the URI, the application can then pull information from it as follows:

public partial class App
   protected override void OnActivated(IActivatedEventArgs args)
       if (args.Kind == ActivationKind.Protocol)
ProtocolActivatedEventArgs protocolArgs = args as ProtocolActivatedEventArgs;
        // URI is protocolArgs.Uri.AbsoluteUri

Connect Devices

One of the most compelling use cases is to use NFC for configuring a more complicated connection such as Wi-Fi or Bluetooth. In this method a user could tap their device to NFC-enabled Bluetooth headphones and quickly set up an audio connection for listening to music. The following code is an example of how to set up a socket connection started with an NFC connection.

// configure the type of socket connection to make
PeerFinder.AllowInfrastructure = true;
PeerFinder.AllowBluetooth= true;
PeerFinder.AllowWiFiDirect = true;

// Hook up an event handler that is called when a connection has been made
PeerFinder.TriggeredConnectionStateChanged += OnConnectionStateChange;
void OnConnectionStateChange(object sender, TriggeredConnectionStateChangedEventArgs eArgs)
if (eArgs.State == TriggeredConnectState.Completed)
     // use the socket to send/receive data
     networkingSocket = eArgs.Socket;

The first few lines specify what type of new socket-based connection you want to initiate when an NFC connection is made. Next, it’s as simple as adding a callback and waiting for the user to take some action. I have simplified the example somewhat. For more details, see the article “Creating Multi-Player Experiences Using NFC and Wi-Fi* Direct On Intel® Atom™ Processor-Based Tablets” (

Intel® Wireless Display (Intel® WiDi)

Windows 8.1 includes support for Miracast. Intel® Wireless Display (Intel® WiDi) is compatible with the Miracast specification, and Windows 8.1 allows developers to take advantage of Intel WiDi in a Windows Store app. The main way to use Intel WiDi is in a dual-screen scenario. In this scenario, a single Windows Store app makes use of both the tablet device screen and an Intel WiDi-connected screen. The Intel WiDi screen does not have to be just a mirrored display of what is on the tablet. Instead, it can contain completely different content than the tablet display. One common use case for this scenario is to play a movie on an Intel WiDi screen connected to the living room television, and then use the tablet to extend the movie experience by displaying controls for video playback or contextual information about the movie.

The following is a quick sample of the functions involved:

if ( ProjectionManager.ProjectionDisplayAvailable )
    // start projecting a view on secondary display
    ProjectionManager.StartProjectingAsync( secondaryViewId, ApplicationView.GetForCurrentView().Id);

Using ProjectionManager, you first figure out if a second display is available. If so, then pass in a view ID to start projecting on the second display. To learn more, see the reference material at


The items discussed in this article are just some of the new features and APIs available on the Intel Atom processor Z3000 series-based tablets running Windows 8.1. Other platform features include Intel® HD Graphics, different sensors, and security features. You can find out about additional Windows 8.1 functionality in the article “Windows 8.1: New APIs and features for developers” (

About the Author

Nathan Totura is an application engineer in the Intel Software and Services Group. Currently working on the Intel® Atom™ processor-enabling team, he helps connect software developers with Intel® technology and resources. Primarily these technologies include tablets and handsets on the Android*, Windows* 8, and iOS* platforms.

Connect with Nathan on Google+

Intel, the Intel logo, and Atom are trademarks of Intel Corporation in the US and/or other countries.
Copyright © 2013 Intel Corporation. All rights reserved.
*Other names and brands may be claimed as the property of others.

For more complete information about compiler optimizations, see our Optimization Notice.