Nico's digital footprint

I grew up in the nineties, that makes me awesome by default

Make your WP7.5 app run on low-end devices

by Nico

On MWC the first Windows Phone Tango devices were announced. The Nokia Lumia 610 and the ZTE Orbit are low-end devices running on only 256MB of RAM. This is made possible thanks to a new, lower end version of the Windows Phone platform. Developers need to make their applications available for either low-end or high-end devices or both. This is determined by the memory usage of the application and if it’s set in the manifest file. Since the new devices only have 256MB of ram your application can use a maximum of 90MB according to the developer guidelines. The memory consumption of your application can be tested with the marketplace test kit by right clicking on your WP7.5 project in Visual Studio 2010.

The refresh of the WP7.1 SDK includes a second emulator running on the low end version of Windows Phone. With this developers can now test if their applications will keep running on the cheaper devices. If not, the user will get an error when trying to install your application stating that it won’t run on their low-end device. Users with a mid –or high-end device can keep using your app without any problems.

This is in fact the same emulator but running on a different image. After installing the update you won’t be able to launch the emulator from the Windows start menu anymore, to fix this add either –256 or –512 to the shortcut depending on what image you want to load in the emulator.

With that, let’s dive into some code and figure out what we can do on the low-end device.

I’ve created a demo project that on launch checks for the available amount of memory using a Device Extended Property from the new SDK called ApplicationWorkingSetLimit. I’ve poured this into a method that sets a private boolean to true if it’s a low-end device

Code Snippet
  1. private void CheckWP7Version()
  2. {
  3.     //check if the device is low-end
  4.     long result = (long) DeviceExtendedProperties.GetValue("ApplicationWorkingSetLimit");
  5.  
  6.     if (result < 94371840)
  7.     {
  8.         isLowEndDevice = true;
  9.     }
  10.     else
  11.     {
  12.         isLowEndDevice = false;
  13.     }
  14. }

Note that the ApplicationWorkingSetLimit is a hardcoded string, so be very careful of typos. The 94371840 is the maximum amount of bytes my application can use on a low-end device.

Another limitation of Windows Phone Tango is that it currently does not support background agents and that includes both periodic tasks as well as resource intensive tasks. When you try to add a background agent on a low-end device you get this:

That’s not a very clear error message is it? The inner exception doesn’t tell us much more. This will probably change once the new SDK is completely finished. So when you’re using background tasks in your application, please update your app with checks of the version. Don’t submit the update to the marketplace just yet because the current CTP version of the SDK doesn’t have a go-live license so it won’t pass marketplace certification.

My example is an app that will set a random count to the application’s tile if it’s pinned to the start screen. In debug mode it will do this every 30 seconds. When you install it on the 256MB version of the emulator it won’t be able to register the agent, in fact it won’t even try because I have a build-in check for low memory devices.

In my example I’ve used a boolean to store whether or not the device has low memory. This works because my app only has one page. In a real life application it would be better to store this into the IsolatedStorageSettings using this code.

Code Snippet
  1. private void CheckWP7Version()
  2. {
  3.     bool isLowEndDevice;
  4.  
  5.     //check if the device is low-end
  6.     long result = (long)DeviceExtendedProperties.GetValue("ApplicationWorkingSetLimit");
  7.  
  8.     if (result < 94371840)
  9.     {
  10.         isLowEndDevice = true;
  11.     }
  12.     else
  13.     {
  14.         isLowEndDevice = false;
  15.     }
  16.  
  17.     if (IsolatedStorageSettings.ApplicationSettings.Contains("IsLowEndDevice"))
  18.     {
  19.         IsolatedStorageSettings.ApplicationSettings["IsLowEndDevice"] = isLowEndDevice;
  20.     }
  21.     else
  22.     {
  23.         IsolatedStorageSettings.ApplicationSettings.Add("IsLowEndDevice", isLowEndDevice);
  24.     }
  25.  
  26. }

And load the value anywhere in your application again like this

Code Snippet
  1. var isLowEndDevice = IsolatedStorageSettings.ApplicationSettings["IsLowEndDevice"];

If for some reason your application can’t run on low-end devices you can block those devices from downloading it. To do this you need to add some lines to the application’s manifest file, right below the capabilities.

Code Snippet
  1. <Requirements>
  2.   <Requirement Name="ID_REQ_MEMORY_90" />
  3. </Requirements>

With this in place the low-end devices will get a message stating that their device is not suited to run your application.

I hope I gave you a good overview about what to expect with the new low-end devices and that you can adjust your applications to support these devices. Don’t be too worried about the memory limitations on the new devices, Microsoft scanned all available applications and found only 5 that utilise too much memory, they’ve contacted the developers and are working together with them to overcome these problems.

The solution of my example can be found here(SkyDrive link).


Tags:

XAML | WP7 | Metro | Devices | .Net

BlockAddiction V2.0 online now

by Nico

Version 2.0 of BlockAddiction has passed marketplace certification and is available for download now. The biggest change is the all new Time Attack mode where you have to survive for 60 seconds and score as high as possible. Game Over means no score.

BlockAddiction has reached well over 400 downloads and is available on Windows Phone marketplace (Link).

I was thinking about an About page and advertising but I figured ads could ruin the experience and I completely forgot about the About page. Glimlach I might add it in the future but for now my focus shifted to some other projects.

If you’ve got ideas, bug reports or some other feedback, leave a comment, contact me via Twitter or send me a mail!


Tags:

XNA | WP7 | .Net | Devices

Windows 8–the road so far

by Nico

So it’s official, the Windows 8 beta, nicknamed Consumer Preview, will hit the worldwide web on February 29th. Time to list what we know so far.

For consumers:

  • the classic start menu has been replaced by a Metro interface, still unsure if there will be an option to bring back the classic menu
  • the windows desktop has now been extracted from the kernel and is just an app
  • Windows 8 utilizes much less resources then Windows 7, allowing it to run smoothly on weaker hardware
  • boot time is impressive, it takes mere seconds to launch. The cause is the fact that Windows 8 doesn’t shutdown completely, it’s kernel goes into hibernation. When you do a hard reset of the device you’ll notice that booting takes more time but it’s still noticeably faster than Win 7
  • Windows 8 will have two types of applications, the classic ones like we know them on Win 7 and Metro style applications. These Metro apps run completely full screen, no chrome like titlebars or borders
  • Metro apps run either full screen or snapped, running side by side with another app (even desktop apps)
  • Windows 8 comes with it’s very own Marketplace. Here you can download all kinds of Metro style applications
  • the ribbon that has been in Office since version 2007 now makes it’s way into the Windows explorer but it will be collapsed by default
  • Pinball and solitaire are installed games by default. Available in the store at launch will be:
    • Hydro Thunder
    • Toy Soldiers
    • Reckless Racing
    • Angry Birds
    • Ilomilo
    • Rocket Riot
    • Full House Poker
    • Tentacles
    • Crash Course
    • Ms Splosion Man
    • Wordament
  • Following apps will be included in the Consumer Preview
    • Camera
    • Messaging
    • Mail
    • Calendar
    • SkyDrive
    • People
    • Photos
    • Video
    • Music
  • Win 8 will be available on x86/x64 cpu’s and for the first time on ARM, mostly used in tablets
  • ARM versions of Windows will have both desktop and metro interface and comes with Office 15, a new Office version
  • Your profile (settings, wallpaper, …) will be synched to skydrive so that every time you buy a new Win 8 pc you don’t need to set everything manually
  • Refresh and Reset options, a refresh will keep all files and folders but will put Windows back in a fresh installed state, removing all installed applications and settings while a reset will do the same but also deletes all files and folders for all profiles
  • native USB 3.0 support
  • Windows 8 can mount and browse ISO and VHD files
  • UEFI Safe boot to prevent boot sector virusses
  • full backwards compatibility

For Developers:

  • anyone with XAML experience will be able to build Metro apps
  • Metro style takes a lot of the concepts of Windows Phone 7 and Silverlight
  • Instead of using the dreadful Win32 API developers can now use WinRT which provides a much cleaner way to interact with the OS
  • Metro apps are NOT .net code
  • .net 4.5 is included in Win 8
  • Metro apps in C#/VB/C++ + XAML or Javascript + HTML

 

Windows 8 will be pretty different compared to win 7. The developer preview has been out since September and I’ve been using it on a Iconia Tab W500 tablet since December. At the time I started using it I also had an iPad 2 but there’s just something special about a full blown OS on a tablet device, especially when running Win 8. I like the OS so far. The developer preview has lots of bugs, obviously, so I’m very curious about the performance and stability of the Consumer preview. Due to the stability problems I haven’t spend much time developing metro apps, this will change with the consumer preview. I’ll probably start by converting my WP7 apps to Win 8. More about that when I get to it.


Tags:

.Net | Windows programming | Windows 8 | Metro

Windows Phone 8, first official details!

by Nico

A video of Joe Belfiore detailing Windows Phone 8, codename “Apollo”, to Nokia has been leaked. The video has a bunch of rumors that are confirmed and some new features that will find their way into Microsoft’s next mobile OS.

The new features are:

  • Data Smart: your phone being smart about what network to use, this includes support for carrier wireless networks.
  • App-to-App communication. WP apps are sandboxed, in WP8 apps will be able to communicate with each other on a lower level then deeplinking by utilizing some sort of contracts.
  • Internet Explorer 10 Mobile. next gen mobile browser, based on the IE10 desktop kernel
  • Shared components with Windows 8. The kernel, multi-core processor support, sensor fusion, security model, network, and video and graphics technologies are all coming from Windows 8.
  • Companion experiences with Windows 8. the xbox companion app will be integrated into the system. Skydrive will have a deeper integration. All this will give the possibility to share content across phone, pc, console, … Also Zune will make place for some sort of new ActiveSync client, ow yeah! As much as I like Zune, activesync is just better.
  • Skype app. Still a separate but better app and not integrated into OS.
  • NFC and Wallet. Google wallet but coming from Microsoft, so obviously the same but better Glimlach Up to the carriers if they’ll support it. It will work both from build-in NFC chips or by special sim cards that have an on-board NFC chip
  • Local Scout. Now with personal recommendations and support for carrier hotspots.
  • Camera improvements. more powerful experience and some sort of “lens” app, we’ll have to wait and see what this means.
  • Business features. WP8 is targeting the  business again with features such as complete bitlocker encryption, secure boot check, system center integration, Exchange activesync policies and inventory possibilities. And, and this one’s kinda big, private appstores for businesses! That’s right, your in-house, employee only apps can be hosted on a private store.
  • For Developers: the CE kernel is boosted out in favor of the Windows 8 kernel, WP7 apps will be fully backwards compatible. With the new kernel comes support for native code, C++ developers rejoice! This makes porting ios and android apps easier and will make certain very popular apps finally come to our beloved platform.
  • Hardware: 4 resolutions, swappable SD card support, multicore CPU, NFC.

In my opinion, if Microsoft can deliver these features WP8 will be HUGE! This makes the Windows Phone platform on par with the competition and on some levels it exceeds them. Big kudos to Microsoft for making this happen in about 2 years, both Apple and Google have spent over 5 years to get to these kinds of functionality. Only two things remain in the dark, will our current devices get an upgrade? And will they pull this off? WP8 is rumored to roll out in the 4th quarter of 2012.

And remember Joe Belfiore, nothing remains hidden on the internet.


Tags:

WP7 | WP8 | Devices

Techdays Belgium 2012

by Nico

So Techdays is right around the corner and I’ll be attending for the third time.I’ll be attending all kinds of sessions going from Windows 8 development to the complete deep dive track on web to my favorite subject, Windows Phone 7 development. I’m also excited about the Scott “The Gu” Guthrie doing the opening keynote and doing a session the second day. Also presenting this year is Laurent Bugnion, the father of the awesome MVVM Light framework.

Here’s the list of sessions I’ll be attending, this list is subject to change depending on if I change my mind the last minute, as I’m known to do sometimes Glimlach.

Tuesday February 14th

  • Opening keynote with Scott Guthrie
  • Welcome to the Metro Application Platform
  • Windows Phone Fast App Switching, Tombstoning and Multitasking
  • The Future of C# and Visual Basic
  • Devices + Cloud: Using Azure on iOS, Android, Windows Phone, …

Wednesday February 15th

  • ScottGu unplugged
  • Take a ride on the Metro
  • The zen of async: Best practices for best performance
  • MVVM Applied: From Silverlight to Windows Phone to Windows 8
  • MVVM & WCF RIA Services: an architectural story
  • Building a data intensive application

Thursday February 16th

This is a deep dive day, I’ll be following the web track that focuses on what’s new in ASP.net 4.5 and Visual Studio 11

 


Tags:

.Net | Presenting | WP7 | Windows programming | XAML | XNA | Web development | MVVM Light | Devices

  Log in

About the author

Hi,

My name is Nico, I’m an MVP Windows Platform Development living in Belgium.
I’m currently employed as a .NET consultant at RealDolmen, one of Belgium’s leading IT single source providers.

I'm also founding member and board member of the Belgian Metro App Developer Network, a user group focussed on Windows 8 and Windows Phone development. If you're in Belgium feel free to drop by if we're doing an event. http://www.madn.be

Since June 2012 I'm a proud member of Microsoft's Extended Experts Team Belgium. And in February 2013 I became a member of DZone's Most Valuable Bloggers family.

In 2013 I became a book author and wrote "Windows 8 app projects, XAML & C# edition".

In 2014 I received the MVP award for the very first time.

I hope to get feedback from my readers either through comments, mail (nico_vermeir@hotmail.com), twitter, facebook, …

 

mvp

 

mvp

 

 

MeetLogo

 

MVBLogo

mybook

 

Month List