
When compared to other hardware platforms, the netbook is unique in a number of key areas.
Most obvious is it's conveniently smallish size. As such it is likely to be taken places where a Laptop may may too much to lug around; Planes, long car rides, meetings, and school. An extremely efficient CPU compliments the netbooks proportions and allows us the lofty battery life. As developers targeting this platform we are conscientious that this also means we need to be careful how we utilize the CPU to ensure our apps run smooth.
I mentioned the above because most of us seem to understand it and have built our applications with the mobile lifestyle in mind. We have been careful to optimize our code and from what I see in AppUp, we are doing well with that. What I want to focus on are the untapped hardware components that the netbook contains. This article is meant to challenge you to think of how we can leverage the netbooks hardware to function as more than just an extremely efficient laptop replacement. Along the way I will share a few helpful libraries and links to get your started.
To do that we need to have a look under the hood of our netbook at the hardware we can take advantage of. As we review this hardware, try to envision what this masterpiece of mobile computing may do with your code in control. Could it be a bluetooth media server? Perhaps a motion detecting security appliance? The only limit is your imagination and development skills.
Hardware: Wireless Adapter
This one may seem altogether obvious, but there lies great potential in a wireless radio in such a small package. Scanning for wireless networks, automatic connection control based on a system event, and any number of TCP/IP server daemons are just the beginning. The netbook may indeed make a great virtual wireless access point.
Depending upon your preferred programming language/libraries, you will have many options for accessing the wireless radios properties and events. A good start is the Native Wifi API in C++.
Native WiFi API (MSDN): http://msdn.microsoft.com/en-us/library/ms706556%28VS.85%29.aspx
Hardware: Bluetooth Radio
This piece of hardware is a gold mine once you consider the untapped potential in the bluetooth space.Just about everyone has a bluetooth enabled phone, and you can take advantage of this from the netbook as long as the device is within approximately 32 feet. Ideas include data sharing (contact list, pictures, video), call status/control, and phone property monitoring.
You will want to learn a bit about Bluetooth Profiles and what each one is capable of. The best place to start down this path is http://www.bluetooth.org. Remember that not all mobile phones support all bluetooth profiles, and you will want to query the phone to detect it's capabilities prior to trying to connect to a particular profile. It would be good customer service to alert the user with a friendly error message should their phone not support a bluetooth profile required by your application.
Bluetooth Profiles: http://bluetooth.com/English/Technology/Works/Pages/Profiles_Overview.aspx
Hardware: Webcam
Webcams can do far more than we give them credit for. There are the obvious directions one could take them, with video chat and picture framing. Think beyond that, to security systems and face recognition. The netbook being power efficient and portable can do alot with this type of input data. On the windows platform my favorite method of getting to this data is the Microsoft DirectShow Library. This gives you low level access to the video and the ability to create your own Filter Graphs (A Filter Graph can be thought of as a processing pipeline). If it is video encoding you are after, you can use the aforementioned DirectShow library or skip on over to a lighter weight wrapper, the Windows Media Encoder SDK. This SDK allows for extremely simple access to encode video for digital broadcast or disk storage.
DirectShow (MSDN): http://msdn.microsoft.com/en-us/library/dd375454%28VS.85%29.aspx
More about Filter Graphs: http://msdn.microsoft.com/en-us/library/dd407188%28VS.85%29.aspx
Windows Media Encoder SDK: http://www.microsoft.com/downloads/details.aspx?FamilyID=000a16f5-d62b-4...
Hardware: Touch Screen
While not common yet, touch screen enabled devices are coming and they will offer us new ways to present our user interfaces. Making your application more accessible will help separate you from your competition. Let's face it, being able to zoom in on a UI element using two fingers is more natural (and fun) then fumbling through menus and mouse clicks.
Hardware: Microphone
The microphone has long been overlooked over the past decade as all desktops and most laptops have required the use of an external microphone. As most netbooks have a built in microphone, the potential to acquire and analyze external audio has become something to consider in a mainstream application. One direction would be voice recognition, other potentials include speaker authentication (identifying the user by voice print), and a one very powerful voice recorder.
Many libraries exist for audio acquisition and manipulation, my favorite being BASS as it is extremely efficient and pluggable. On those occasions where you need access at a lower level I suggest spending some time looking into the Win32 libraries or DirectShow. If you are the scientific type and looking to push the envelope I will refer you to look into DSP algorithms, including Fast Fourier Transform (FFT).
BASS Library: http://www.un4seen.com/
DirectShow (MSDN): http://msdn.microsoft.com/en-us/library/dd375454%28VS.85%29.aspx
Hardware: GPS
Last on my list but certainly not least. Integrating GPS with existing applications can bring untold value to your offering. Social media related applications can benefit from this as can niche utilities. Of all of the devices listed, this one is still the least commonly found.
When it comes to libraries, you will find that most hardware vendors supply an API to interface with the GPS receiver. A quick search using your favorite search engine will tell you what hardware is being utilized in most of the current netbook offerings. From there you will want to make yourself familiar with the NMEA standard. It is essentially a text stream of GPS data.
NMEA Standard: http://www.gpsinformation.org/dale/nmea.htm
Important to note is that not all Netbooks will have all of the above hardware devices. Some hardware such as bluetooth and a webcam can be found on nearly all models. In addition you will want to ensure that your meta description specifies that a particular piece of hardware is required to use your application. This will go a long way to ensure that your customers are not surprised and end up asking for a refund.
As the story of the ATOM SDK unfolds, I challenge you to pick a piece of netbook hardware and integrate it into your next application or game. Hardware integration will ultimately help bring your customer and your solution even closer than ever.
Black Belt (Community Leadership)
Comments
Nice article. Some good references to libraries there. Thanks Brian!
Nice post Brian. This is something I've been thinking about ties in pretty well with Accelerator 2010 contest for AppUp http://appdeveloper.intel.com/en-us/article/million-dollar-development-f...
Personally I think the Webcam is an under utilized piece of hardware. I'd take my Netbook on the road more if I had more apps that allowed me to quickly snap a picture, edit, then share with my social network.
Nice article. You can add information about touchpad http://www.synaptics.com/developers
All Windows? Ergh. Color me disappointed. Over a third of all netbooks globally run Linux, and besides which, it's my platform of choice. :(
"if I had more apps that allowed me to quickly snap a picture, edit, then share with my social network."
If you're running Linux, Cheese is the main app for just that. (http://projects.gnome.org/cheese/)
In Windows the WMI Class Win32_Processor provides, among other things, a family ID (integer). This is also available from _cpuid.
Does anyone have an inkling where we would find the family IDs for Atoms and other new famailies as well as the text equivalents? For
example, family 177 has a text equivalent of Pentium III with Speedstep
http://www.intel.com/Assets/pdf/appnote/241618.pdf - CPUID command description. On the page 20 you can find Atom processor signature.
Post new comment