Today I’m glad to announce that Lock Buster 3.0 has reached the Windows Phone Store.
The third version of Lock Buster follows in Hello Friend’s footsteps and adds support for more customization options.
Color effects make your lock screen look even more exciting! The app offers various modes like a high contrast one and a black & white mode. Moreover, users are now able to select addons which show additional information on the lock screen. The current version brings the following addons that can be combined with all collages:
Weather shows weather information depending on the user’s current GPS position. The settings screen allows choosing between the units Fahrenheit and Celsius.
Battery Status shows the remaining battery percentage
Addons can also have a background so that they can be read more easily when combined with a photo collage. More addons are planned for future releases. You can also tweak your collage by adjusting the thickness of the images’ margins!
While the Windows Phone 8 edition contains all listed improvements, the WP7 update includes everything except the addons since the OS does not allow updating the lock screen automatically.
Here’s a sneak peek of the current update:
Beside adding features, we improved the performance of the collage preview mode and added overall bug fixes. You can get the app in the Windows Phone Store with a free trial right here: Link to store
I’m glad to announce that the fourth version of Hello Friends is now available in the Windows Phone Store.
A lot of user feedback has reached us since the first version of Hello Friends. Most of them were asking for even more customization of their lock screens. Thus, we were reacting on the user feedback and implemented some nice new features. Hello Friends 4.0 for Windows Phone 8 supports addons that can be combined with your collage.
As you can see in the teaser image some additional options were added to the “customize” screen.
At first, you are now able to activate addons that will be integrated in your lock screen. In the current version there are two addons available:
Weather shows weather information depending on your current GPS position. You can use the settings screen to choose between the units Fahrenheit and Celsius.
Battery Status shows the remaining battery percentage
You are also able to choose from different shades of transparency to get a suitable background for your addon. For your interest, we are planning to integrate more addons in future releases.
The current update does not only bring addons: You can now optimize your lock screen with additional color effects. For example, the app offers a back & white and a high contrast mode. From now on every template offers to adjust the thickness of the images’ margins in the collage, so that you are able to customize your lock screen even more!
We also worked heavily on the problems users were facing when selecting custom contacts and fixed bugs that led to the app’s crash under certain circumstances. A high number of contacts was preventing the lock screen to get refreshed sometimes which we solved, too.
The update should be available during the next few hours. If you can’t see it yet, you might want to browse to the store on your phone and update it manually. Here’s the deep link to the Windows Phone Store:
Sometimes it might be necessary to get the in-order successor of a given node in a binary search tree where each node has a link to its parent.
For this case, we need the data structure at first:
class Node
{
public int Data;
public Node Left;
public Node Right;
public Node Parent;
};
I just wrote down the data structure in a really minimalistic way without using properties or get/set methods. Each node has a data field and references its parent as well as its left and right children.
The next steps consists of building the traversal algorithm. The in-order successor of a node can also be defined as the node with the smallest key greater than the key of input node.
So at first we need to test if the given node has a right child (line 3/4), in this case we just need to walk through all left children. The other case (line 6 – 15) checks if the parent element’s data field is greater than the current one. Then, we would have to stop. Otherwise, we can walk up the tree until we reach an element that has a greater data field than the given one.
private static Node GetSuccessor(Node node)
{
if (node.Right != null)
return GeMinimum(node.Right);
Node current = node;
Node parent = null;
while (current.Parent != null)
{
parent = current.Parent;
if (parent.Data > node.Data)
return parent;
current = parent;
}
return current.Parent;
}
private static Node GeMinimum(Node node)
{
if (node.Left == null)
return node;
return GeMinimum(node.Left);
}
The first weeks are over since Hello Friends has been released. Taking a look at user ratings is mandatory to get to know what works well and what seems to be missing. It’s great to see that the app gets so many nice reviews.
Let me collect some user reviews from the store:
★★★★★ "Should be made part of OS. Really worth the $$$."
★★★★★ "Great idea, why Microsoft didn't build this right into the OS is beyond me"
★★★★★ "Wow, I really like this app! Great job."
★★★★★ "Adds awesome customization for the lock screen! Love it!"
★★★★★ "Excellent addition to new home screen experience "
★★★★★ "Very nice! Microsoft should have thought of this."
To cut a long story short: That’s really impressive.
But not enough with these great reviews: Windows Phone Central did a review of Hello Friends and says the following about it:
“The app is so ingenious, we’re kind of shocked Microsoft didn’t build this in to the OS. [...] HelloFriends simply generates gorgeous lock screen wallpaper based off of your contact photos.”
“We wouldn’t be surprised if Microsoft bought this app and built it into the People Hub. It works that well.”
What do we learn from these reviews? It seems that the first analysis of requirements was quite successful, so that users enjoy a clean and simple app with a well-defined scope of functionalities.
That’s a great start for Hello Friends! I also watched the ranking of Hello Friends in the store. Since some days, the app worked its way up to the top and is now #1 of the top paid photo apps in the U.S. with an average of 4.5 out of 5 stars (67 ratings):
Beside all these reviews, there are a lot of suggestions and comments from users that reached me. Among them are many great ideas that will lead to upcoming features. I really want to thank you for these suggestions!
In the next chapter I will explain how to design the visual appearence of this app.
Last time we built up the vision and identified the requirements of the app called Hello Friends. This time I would like to go a step further and to think about the project in general.
You can find the final version of the app I am writing about in the Windows Phone marketplace:
For today we have some open questions:
Can we use existing libraries?
How to structure the project?
Which design patterns should be used?
Existing Libraries
Well, there are a lot of helpful libraries out there. And I really like using nice libraries that reduce one’s own programming effort. The following ones are the libraries we will use in this tutorial:
MvvmLight: A library that helps you following the principle “Separation of Concerns”. The View is for displaying the user interface and forwarding user interactions, nothing more. The ViewModel is a representation of the view’s data and offers public properties that can be bound to the view. http://mvvmlight.codeplex.com/
Microsoft.Practices.ServiceLocation: A simple and nice dependency injection container that helps you building loosely coupled applications (http://unity.codeplex.com/).
WriteableBitmapEx: This is a great library from René Schulte with a lot of useful extension methods for the WriteableBitmap class. http://writeablebitmapex.codeplex.com/ We need this one because we will have to do some graphic stuff for generating lock screen images.
These are the basic libraries we will use in this tutorial. MvvmLight and Unity are basic libraries that can be used in almost every project. Additional ones like the Windows Phone Toolkit or some libraries for adding Google Analytics support are also worth checking them out. We will include them later, when necessary.
The Project Structure
Now we’re heading to the big question: How about the project structure?
The answer depends on several aspects: Do you want it quick and dirty? Do you want to reuse resulting libraries in different projects? If yes, are the other projects similar apps for the same platform? Do we need reusable libraries for Windows 8 or Xbox? Or even a shared library for Windows Phone 7?
Let me define the principles for this tutorial:
We don’t want it quick and dirty. If the app sells well, you may want to maintain and extend features (non-functional requirements). We also want to be able to bring this app to Windows Phone 7.5, if users are asking for it. If you start quick and dirty, it gets even more dirty.
I would always suggest building libraries that can be reused in other projects. This saves a lot of time, brings unity to your projects and helps you regarding the project structure: For example, if you put everything from the UI to the data layer together in one assembly, you can’t reuse anything.
The first step of structuring the source code is building separate projects in Visual Studio:
The initial Windows Phone 8 project that contains the user interface
One Windows Phone library that contains all the algorithms, data providers and so on.
We also need another project for the Background Agent, because one of the requirements was to change the lock screen automatically from time to time
We need a contracts assembly containing interfaces for instances that are registered to the dependency injection container.
How to name these projects?
The project name you enter when creating the WP8 project in Visual Studio will also be used for the namespace. Of course, you can change that later, but it’s a good deal to have everything geared from the beginning to obtain a great structure.
I usually end up in naming projects according to namespaces:
I chose a generic name “LockScreenApp” because the final name of the product may change and generic names are better for the case if you want to reuse libraries in other projects. As you can see in the screenshot, we also have a library called “BrilliantVision.Common” which is just a collection of often used functionalities that I collected during developing several Windows Phone projects.
The marked project is the entry point containing user interfaces, the other ones I guess are self explaining.
Design Patterns
Design patterns are a great way to solve architectural issues and to keep the project structure clean. Remember: We don’t want a messy Windows Phone project. Before we start writing code we should think about patterns that can be very useful in our project. As I mentioned before, the MVVM pattern is great for decoupling the GUI from the business logic. We will also use the dependency injection principle, as well as the command and observer patterns. These are quite common for almost every kind of project. If you are not familiar with these principles I would suggest either this classic book or this one for those who need more examples. The latter comes with great explanations based on real-world scenarios.
Conclusion
At this point we’ve already collected requirements for the app and know what we want to build. We also know the technical environments: Which libraries do we use, what functionality do they offer. In one of the next parts I will focus more on designing the visual appearence of the app. I took this chapter before the UI design part because it is important to know the environmental parts with all their capabilities and restrictions. In the design phase we will be able to see more quickly where we have to put specific elements inside our project when having a basic structure.
Hello Friends has reached the marketplace in its current version 3.1 with improvements for WP7 and WP8 devices.
The Windows Phone 8 version comes with these changes:
Improved update mechanism: The previous version sometimes had problems setting the current lock screen image. This is now solved, the lock screen will be updated even more reliable.
Bug fix for the selection of custom contacts: Some users reported that the app crashed without any notice when trying to select custom contacts. A memory issue was solved so that this problem will no longer occur.
The Windows Phone 7.5 edition contains the following improvements:
New preview mode including miniatures of all available templates (the same one that was previously released for the WP8 edition)
One new template
Bug fix for the selection of custom contacts (equivalent to the WP8 bug fix)
Both editions were released globally to all existing Windows Phone markets, now also including 42 new countries with stricter content rules (including China and Indonesia).
You can get the updated version directly from the store:
I’m glad to announce that our app Lock Buster, formerly known as “My LockScreen” got another comprehensive update. The latest update will push the app to version 2.5 and brings support for Windows Phone 7.5 (Mango).
This version will contain the following improvements:
New preview screen when creating a customized lock screen
New template selection window that shows miniatures of all templates
One new template (“9 Accent Mix” contains a box that is colored with the phone accent color)
More options when selecting the refresh interval (Now available: 30, 60 mins, 3, 8, 12, 24 hours, 2, 4, 7 days and an option to never update the lock screen)
Improvements of the overall experience: The lock screen will be updated more reliable
The version for Windows Phone Mango is slightly modified due to the restrictions of the OS. Users will be able to save the lock screen in the pictures library, but will not get the advantage of automatic changing lock screens. As soon as this functionality will be integrated in Windows Phone 7.8, Lock Buster will support this feature.
You can pick up the app with a time limited trial edition from the Windows Phone Store:
The third version of Hello Friends is now in the Windows Phone Store! It also supports the Windows Phone 7.5 platform. So I’d like to tell you what’s new in the current version:
First of all, we did an overall improvement of the user experience. We got very much feedback from our users (we appreciate that, thank you!), so we were able to tackle problems on several devices as well building a better usability.
The list of improvements covers the following feature updates:
2 new templates (“6×10 Friends” is now the template with the highest number of pictures and “9 Accent Mix” contains a box that is colored with the phone accent color)
New preview mode
New template selection window that shows miniatures of all templates
A newlive tile
More refresh intervals
Shuffleoption when previewing your collage
Performance improvements
Several bug fixes from feedback of users
You’ve read right, there’s also a Windows Phone 7.5 edition available. Since it is not possible to change the lock screen automatically yet, you still can create your custom collage and set it manually as the current lock screen. We hope that the coming update of Windows Phone 7.8 will include the mechanism to get the same experience of Hello Friends as in the newest OS from Microsoft.
Here’s a picture of the template selection window with miniatures of available templates:
If you have any questions or suggestions, please let us know! You can get the latest version 3.0 right here:
Special Thanks go out to the guys at WPCentral.com who made it possible to get that much user feedback!
Since Windows Phone 7 Mango you are able to create your own Live Tiles. To be more precisely, you can specify content, titles and images for the front side as well as for the back side. The images can be taken from the web or from the app’s isolated storage. Sometimes it may be necessary to build a Live Tile like the one of the People Hub.
As you can see I’ve created a tile with 9 custom images inside of it. These photos are loaded by a background agent and dynamically merged into one image. I’d like to explain how I did this.
At first, provide a list of images to load:
private const string FLICKR_LIVE_TILE = "/Shared/ShellContent/flickr_live_tile.jpg";
private object imageCountLock = new object();
private const int IMAGES_TO_LOAD = 9;
private const int IMAGE_DIMENSIONS = 57;
private static string PhotoLiveTileNavUri = "/MainPage.xaml?list=flickr";
private static string TwitterLiveTileNavUri = "/MainPage.xaml?list=twitter";
// Just using the DisplayImage class with an attribut called "ThumbnailImage".
//The size of the image has to be really small.
public void UpdateTileImages(IList images)
{
WebClient webClient = new WebClient();
int imageLoadedCount = 0;
var maxItems = Math.Min(images.Count, IMAGES_TO_LOAD);
Stream[] streams = new Stream[maxItems];
webClient.OpenReadCompleted += ((s, e) =>
{
lock (imageCountLock)
{
streams[imageLoadedCount] = e.Result;
imageLoadedCount++;
if (imageLoadedCount == maxItems)
{
CreateBackgroundImage(streams);
}
else
webClient.OpenReadAsync(new Uri(images[imageLoadedCount].ThumbnailImage, UriKind.Absolute));
}
});
webClient.OpenReadAsync(new Uri(images[imageLoadedCount].ThumbnailImage, UriKind.Absolute));
}
I’m pleased to announce the second version of Hello Friends. It has hit the Windows Phone Store today and comes with a lot of improvements. Hello Friends is a new app that allows you to decorate your lock screen with a nice collage of your friends. It’s a great addition for users that like to customize their phone as much as possible. Read more…