Monday, September 9, 2013

Became featured app once again and about critical problem of Weather Tag Pro and Place Tag Pro

After becoming featured app on Windows Phone Store on August 25 and August 26, Weather Tag Pro became featured app once again. It will become featured app on Saudi Arabia market for all phones on September 11.

By the way, as many users reported, I noticed that Weather Tag Pro and Place Tag Pro have a critical problem with retrieving place information. As I checked, the problem only happens on Windows Phone 7.x, not Windows Phone 8. A fix was submitted and it will available on Windows Phone Store a few days later. Sorry for the inconvenience.

Saturday, August 17, 2013

I love the feedback

At this time Weather Tag Pro received 29 rate and reviews. 22 of 29 are 4 or 5 stars rates. It is really great. They are made me proud and give me more exciting to work on Weather Tag Pro. Some of the reviews are really good. They don't just say what the user think about my app, they also tell me give me some ideas to work on. Here are a few samples:

Su Nokia Lumia 920: funziona, veloce, divertente con previsioni e temperatura molto precise. 2 cose da migliorare: il geotag ke mette solo la regione invece ke la città e le info sulla foto ke sono in inglese invece ke in italiano.
from an anonymous user, Italy

Die App funktioniert gut. Ich hatte mit einer anderen schlechte Erfahrungen gemacht. Eventuell könnte man bei den Orten nachbessern - da hier wirklich nur die Stadt angegeben wird (die andere App hatte noch die Postleitzahl dabei). Ich probiere es demnächst mal außerhalb von Berlin. Etwas umständlich ist, dass nach dem Foto erst mal der Fotoeditor geladen wird. Wenn man keine Effekte hinzufügen möchte ist das etwas zeitraubend. Oder ich habe noch nicht gefunden, wie man das umgeht. Ansonsten eben fünf Sterne, weil es wohl im Moment die beste Wetter-Foto-App für WindowsPhone ist. Ob das so bleibt, wenn - wie angekündigt - die InstaWeather usw. für WindowsPhone kommt? Wir lassen uns mal überraschen. Kaufempfehlung!
from Dennis, Germany

Good app, works good. Photo editor starts slowly on my Nokia Lumia 800. A skip option for the photo-editor would be nice. Dutch language would also be nice.
from Laurent, Netherlands

Beside the good reviews, I also received some bad (or maybe, not good) reviews. Most of them complain about the location, my dear users want it to work more accurate.

And here is my actions:

- A skip option for the photo-editor was added in version 2.3 (or 2.5)
- Dutch is supported in version 2.6 (with correction in version 3.0)
- And the most wanted, improvement in retrieving location information, it was added in version 3.0.

Please try it and let me know your feedback. Let me know if you like it, or even hate it. Thank you.

Happy Weather :-)

BTW, as always, my dear users, you can always send me feedback directly via email. You only need to open "about" menu item on the start page, then tap "Send feedback" button.

Tuesday, August 13, 2013

How to open a picture by Weather Tag Pro in Photo hub

Open a picture in Photo hub

Step 1

Step 2

Step 3


How to create square picture in Weather Tag Pro

Step 1

Step 2

Step 3


How to edit place in Weather Tag Pro


  • From version 3.1 of Weather Tag Pro, you are able to edit place by selecting a nearby place from Foursquare
  • From version 3.2 (not release yet), you can search places using Foursquare

Step 1

Step 2

Edit manually

Edit using Foursquare

How to change temperature unit in Weather Tag Pro

Step 1

Step 2

Monday, July 22, 2013

Weather Tag Pro 2.3 is available on Windows Phone Store and what will coming with v2.5

A few days ago, Weather Tag Pro version 2.3 appeared on Windows Phone Store. This version supports Italian in full. Yes, it means the photo editor supported Italian. In addition, a new feature that many people want to have, editing place, is included in this version also.

As I mentioned before, I expected that version 2.5 to be released in a few weeks. Now I would like to announce that Weather Tag Pro 2.5 will support square pictures. It means you can take and create pictures with weather information in all the ways you like (portrait, landscape and square) :-) Of course, Weather Tag Pro 2.5 will come with improvements and bug fixes also.

Hope that you will love, use and support Weather Tag Pro.

Cheers :-)

Sunday, July 14, 2013

What's new in Weather Tag Pro 2.2?

In previous post, I mentioned that version 2.5 of Weather Tag Pro will available in a few weeks. But there is an accidental problem, Microsoft asked me to pull Weather Tag Pro from Windows Phone store due to a non-technical problem. Yesterday I summitted a fix (version 2.2) and hope that Microsoft will make it available soon. In addition to the fix, Weather Tag Pro will have an important improvement. Together with English and Vietnamese (my native language), from version 2.2, Weather Tag Pro will support Italian.

Why Italian? Because an Italian is mad with me and rated Weather Tag Pro 2 stars because I didn't support Italian. Just kidding :-) At this time, Weather Tag Pro was reviewed by 5-6 people and most of them are from Italia. I see Italia as a potential market and I hope Italian will love and use Weather Tag Pro :-)


BTW, again, I'm not an Italian. I'm a Vietnamese :-)

Friday, July 12, 2013

Weather Tag Pro 2.1 is available on Windows Phone Store

Weather Tag Pro 2.1 is ready to download from Windows Phone Store. In this version I fixed a critical problem when the app cannot post pictures to Twitter. In addition, this version included

  • Enable to post text to Facebook and Twitter
  • Minor improvements and bug fixes

And I hope to finish Weather Tag Pro 2.5 in a few weeks. More information about this version will come later. Please stay tuned.

Monday, July 1, 2013

Vài điều cần chú ý khi phát triển ứng dụng Windows Phone với Visual Studio 2013 Preview/trên Windows 8.1 Preview

  • Visual Studio 2013 hỗ trợ việc phát triển các ứng dụng Windows Phone (khi cài đặt bạn nhớ check ô Windows Phone) nhưng nó chỉ hỗ trợ Windows Phone 8. Nếu bạn muốn tiếp tục phát triển các ứng dụng cho Windows Phone 7, bạn cần cài Visual Studio 2012. Đây không phải là vấn đề quá lớn khi Visual Studio 2013 có thể "sống chung nhà" với Visual Studio 2012.
  • Nếu bạn sử dụng Windows 8.1 Preview, Visual Studio 2012 và Windows Phone SDK sẽ hoạt động bình thường. Tuy nhiên bạn cần cài đặt Visual Studio 2012 Update 3, nó sẽ sửa một vài vấn đề về sự tương thích của emulator.
Link download

Monday, June 3, 2013

Pivot control mở rộng

Khi sử dụng pivot control trên Windows Phone 8, đôi khi tôi muốn ẩn đi tiêu đề của nó để có thêm “đất” hiển thị dữ liệu. Tuy nhiên pivot control có trong Windows Phone SDK không có khả năng ẩn/hiện này. Vì vậy tôi quyết định tạo một custom pivot control thực hiện công việc này.

Xây dựng một XAML custom control

Việc tạo một custom trong XAML là khá dễ dàng nếu bạn tuân theo đúng hướng dẫn. Nó yêu cầu bạn phải tạo thư mục Themes và trong thư mục đó tạo file có tên generic.xaml. generic.xaml là file resource, do đó không cần bất cứ file code behind nào. Hãy thực hiện việc đặt tên chính xác, bằng không control của bạn sẽ không làm việc. Bước tiếp theo là tạo một class thừa kế từ class ContentControl (hay một class đã thừa kế class ContentControl), cụ thể ở đây là class Pivot. Cấu trúc dự án ExtendedPivot sẽ trông như sau

Kiểu của dự án là Windows Phone Class Library. Nó chứa hai custom control, một cho pivot và một cho pivot item.

Mở rộng pivot control
    public class ExtendedPivot : Pivot
        public static readonly DependencyProperty HeaderVisibilityProperty =
            DependencyProperty.Register("HeaderVisibilityProperty", typeof(Visibility), typeof(ExtendedPivot),
                new PropertyMetadata(null));

        public ExtendedPivot()
            DefaultStyleKey = typeof (ExtendedPivot); // Set style of the control to the style defined in generic.xaml

        public Visibility HeaderVisibility // Property to show/hide header of pivot
            get { return (Visibility) GetValue(HeaderVisibilityProperty); }
            set { SetValue(HeaderVisibilityProperty, value); }

Chúng ta sẽ bắt đầu với constructor, dòng 9 nhất thiết phải có khi phát triển custom control, nó xác định style của control định nghĩa trong generic.xaml. Dòng 12-16 là property để xác định sự ẩn/hiển của tiêu đề. Dòng 3-5 đăng ký DependencyProperty để bind giá trị khi sử dụng control.


Đây là style của ExtendedPivot control định nghĩa trong generic.xaml

    <Style TargetType="local:ExtendedPivot">
        <Setter Property="Margin" Value="0" />
        <Setter Property="Padding" Value="0" />
        <Setter Property="Foreground" Value="{StaticResource PhoneForegroundBrush}" />
        <Setter Property="Background" Value="Transparent" />
        <Setter Property="ItemsPanel">
                    <Grid />
        <Setter Property="Template">
                <ControlTemplate TargetType="local:ExtendedPivot">
                    <Grid HorizontalAlignment="{TemplateBinding HorizontalAlignment}" VerticalAlignment="{TemplateBinding VerticalAlignment}">
                            <RowDefinition Height="Auto" />
                            <RowDefinition Height="Auto" />
                            <RowDefinition Height="*" />
                        <Grid Grid.RowSpan="3" Background="{TemplateBinding Background}" />
                        <ContentControl Grid.Row="0"
                                        Content="{TemplateBinding Title}"
                                        ContentTemplate="{TemplateBinding TitleTemplate}"
                                        Visibility="{TemplateBinding HeaderVisibility}" />
                        <primitives:PivotHeadersControl x:Name="HeadersListElement" Grid.Row="1" />
                        <ItemsPresenter x:Name="PivotItemPresenter"
                                        Margin="{TemplateBinding Padding}" />

Đây là style của ExtendedPivotItem control định nghĩa trong generic.xaml

    <Style TargetType="local:ExtendedPivotItem">
        <Setter Property="Background" Value="Transparent" />
        <Setter Property="Padding" Value="0" />
        <Setter Property="HorizontalContentAlignment" Value="Stretch" />
        <Setter Property="VerticalContentAlignment" Value="Stretch" />
        <Setter Property="Template">
                <ControlTemplate TargetType="local:ExtendedPivotItem">
                    <Grid HorizontalAlignment="{TemplateBinding HorizontalAlignment}"
                          VerticalAlignment="{TemplateBinding VerticalAlignment}"
                          Background="{TemplateBinding Background}">
                            <VisualStateGroup x:Name="Pivot">
                                <VisualState x:Name="Right" />
                                <VisualState x:Name="Left" />
                                <VisualState x:Name="Center" />
                        <ContentPresenter Margin="{TemplateBinding Padding}"
                                          HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}"
                                          VerticalAlignment="{TemplateBinding VerticalContentAlignment}"
                                          Content="{TemplateBinding Content}"
                                          ContentTemplate="{TemplateBinding ContentTemplate}" />

Cách tạo 2 style trên rất đơn giản. Bạn chỉ cần nhấn nút phải chuột trên control gốc tương ứng (ở đây là Pivot và PivotItem) trong cửa sổ Document Outline, chọn Edit Template, rồi Edit a Copy...

Style của ExtendedPivotItem giống hệt của PivotItem, trong khi style của ExtendedPivot có chút thay đổi so với của Pivot. Style của ExtendedPivot có thêm Visibility="{TemplateBinding HeaderVisibility}" để bạn có thể bind giá trị để ẩn/hiển tiêu đề của Pivot control.

Vậy là bạn đã hoàn thành ExtendedPivot control cho riêng mình.

Sử dụng ExtendedPivot control

Việc sử dụng ExtendedPivot control rất đơn giản. Đây là XAML code.

        FontFamily="{StaticResource PhoneFontFamilyNormal}"
        FontSize="{StaticResource PhoneFontSizeNormal}"
        Foreground="{StaticResource PhoneForegroundBrush}"
        SupportedOrientations="Portrait" Orientation="Portrait"

        <!--LayoutRoot is the root grid where all page content is placed-->
        <Grid x:Name="LayoutRoot" Background="Transparent">
            <!--  Pivot Control  -->
            <extendedPivot:ExtendedPivot HeaderVisibility="{Binding Visibility}" Title="MY APPLICATION">
                <extendedPivot:ExtendedPivotItem Header="item 1">
                        <Button Click="ButtonBase_OnClick" Content="Toggle header" />
                <extendedPivot:ExtendedPivotItem Header="item 2">


Còn đây là code C#

    public partial class MainPage : PhoneApplicationPage
        private readonly MainViewModel _mainViewModel;

        public MainPage()

            _mainViewModel = new MainViewModel();

            DataContext = _mainViewModel;

        private void ButtonBase_OnClick(object sender, RoutedEventArgs e)
            _mainViewModel.Visibility = _mainViewModel.Visibility == Visibility.Collapsed
                ? Visibility.Visible
                : Visibility.Collapsed;

Và cuối cùng là view model

    public class MainViewModel : INotifyPropertyChanged
        private Visibility _visibility;

        public Visibility Visibility
            get { return _visibility; }
                if (_visibility == value) return;

                _visibility = value;


        public event PropertyChangedEventHandler PropertyChanged;

        protected virtual void OnPropertyChanged(string propertyName = null)
            PropertyChangedEventHandler handler = PropertyChanged;
            if (handler != null) handler(this, new PropertyChangedEventArgs(propertyName));

Source code của control và ví dụ sử dụng nó, các bạn có thể truy cập tại đây:

Hy vọng qua bài viết này, các bạn có thể nắm được cơ bản về cách tạo một custom control cho Windows Phone.

Friday, May 17, 2013

V-Place 1.5 is available on Windows Phone Store

V-Place 1.5 is available on Windows Phone Store. Here are new features, improvements and bug fixes in this release:

  • Share to Twitter directly from the app
  • Support Vietnamese
  • Fixed cannot retrieve place information in some regions
  • A lot of improvements and bug fixes

Sunday, May 12, 2013

Critical error in V-Place 1.1

I've just found a critical error in V-Place 1.1 which relates with how the app retrieves place information. The problem only happens with devices were set up with some specified regions (Vietnam is an example). But it doesn't effect to others (US, UK and Singapore are just a few examples). I will push version 1.5 and hope that it as soon as possible. Very sorry for inconvenient.

Saturday, May 11, 2013

V-Place 1.1 was available on store

A few days ago I released V-Place 1.1. In this version I did some small changes to make the app works better. Here are they:

  • Enable saving and sharing pictures without location services
  • Minor improvements and bug fixes

I will continue the incremental change to keep the app better and more polite.

The upcoming 1.5 will come with new features and a lot of improvements and bug fixes. I expect it to come in next 10 days. Stay tuned, more information will come soon :-)

Saturday, May 4, 2013

Comparison between V-Place, PhotoPlace Pro and Ciel

Note: Click the picture for larger view.

Monday, April 29, 2013

V-Place 1.0 is available on Windows Phone Store

It took about one month for development, beta testing, submission and fixing bug, now V-Place 1.0 is available on Windows Phone Store.

In this version, you can:

  • Take/open pictures
  • Add effects
  • Save pictures to device
  • Share pictures to Facebook

You can get V-Place 1.0 using the link or QR code below

One bug I found out after releasing: The app shows a message which mentions that application location service setting is disabled even it is enable by default. It will be fixed soon.

If you can't wait for new version, there is a workaround. You only need to open settings from start page via settings menu item, then navigate back to start page.

What's next?

  • 1.1 will come with bug fixes and improvement.
  • 1.5 will come later with new features.

Monday, April 22, 2013

Some tips in using Windows Phone 8 emulator

Cannot connect to Internet from emulator
Run this command from Command Prompt

    "C:\Program Files (x86)\Microsoft XDE\8.0\XdeCleanup.exe"
It will remove all virtual network cards and they will be re-created when you start the emulator.

Start emulator without Visual Studio
Run this command from Command Prompt

    "C:\Program Files (x86)\Microsoft XDE\8.0\XDE.exe"
    /vhd "C:\Program Files (x86)\Microsoft SDKs\Windows Phone\v8.0\Emulation\Images\Flash.vhd" 
    /video "720x1280" 
    /memsize 1024 
    /language 409 
    /creatediffdisk "%Temp%\dd.720x1280.1024.vhd" 

Wednesday, January 23, 2013

Thủ thuật download Windows Phone 7.8 SDK để cài đặt offline

Hôm nay, Microsoft đã giới thiệu Windows Phone 7.8 SDK để dọn đường cho việc đưa ra phiên bản Windows Phone 7.8 với một số cải thiện về mặt giao diện và tính năng cho người dùng dự định bắt đầu từ 31/1. Tuy nhiên hiện tại Microsoft mới chỉ đưa ra bộ cài đặt Windows Phone 7.8 SDK qua web. Bạn có thể tải nó tại đây với yêu cầu là máy tính của bạn đã được cài đặt sẵn Windows Phone SDK 7.1 hoặc 8.0.

Vậy làm sao chúng ta có thể tải bộ cài đặt này về để có thể cài đặt offline và dành cho các lần cài đặt sau. Rất đơn giản, bạn chỉ cần chạy lệnh "WPExpress78_update.exe /layout" ở cửa sổ Command Prompt:

Bộ cài đặt sẽ hỏi bạn thư mục bạn muốn tải nó về. Chọn thư mục và click nút Download

Việc tiếp theo là chờ đợi.

Sau khi tải xong, bộ cài đặt offline này chiếm khoảng 5,45 GB ổ cứng và bạn chỉ cần chạy file WPExpress78_update.exe nằm bên trong thư mục download để cài đặt.

Wednesday, January 2, 2013

Khởi đầu với Windows Phone 8

Như các bạn đã biết, ngày 30 tháng 10 vừa qua, Microsoft đã chính thức giới thiệu Windows Phone 8 (WP8) cùng các thiết bị đầu tiên được cài đặt sẵn hệ điều hành này đến từ Nokia, HTC và Samsung. Đồng thời với việc giới thiệu này, Microsoft cũng đưa ra bản SDK (Software Development Kit) cho các nhà phát triển để họ triển khai, phát triển các ứng dụng cho WP8.

Những điểm nổi bật trong SDK của WP8 là hỗ trợ lập trình bằng C++, hỗ trợ nhiều độ phân giải màn hình, sử dụng dịch vụ map của Nokia,… Để biết chi tiết hơn những điểm mới trong SDK cho WP8, bạn có thể tìm hiểu tại đây.

Trong bài viết này, tôi muốn giới thiệu tới các bạn những yêu cầu tối thiểu để cài đặt WP8 SDK và sau đó ta sẽ cùng cài đặt và sử dụng nó để viết một ứng dụng WP8 cơ bản.

Cấu hình tối thiểu để cài đặt WP8 SDK như sau:

  • Hệ điều hành:
    • Windows 8 64-bit (x64)
  • Phần cứng:
    • 6,5 GB chỗ trống trên ở cứng
    • 4 GB RAM
    • 64-bit (x64) CPU

Ngoài ra để có thể chạy được WP 8 emulator, bạn cần có:

  • Windows 8 Pro hoặc Windows 8 Enterprise
  • CPU có hỗ trợ SLAT (Second Level Address Translation). Để kiểm tra xem CPU của bạn có hỗ trợ SLAT hay không, bạn tham khảo bài viết này.

Chú ý: Mặc dù máy của bạn có thể không chạy được WP8 emulator (như máy tính ở nhà của tôi với CPU Intel Q9550) điều đó không có nghĩa là bạn không thể phát triển các ứng dụng cho WP8. Bạn vẫn có thể phát triển chúng bình thường, tuy nhiên để chạy thử, bạn phải deploy chúng lên thiết bị WP8 thật. Điều này gây cho bạn đôi chút phiền toái nhưng việc deploy và test ứng dụng của bạn trên thiết bị WP8 dù bạn có thể hay không thể sử dụng WP8 emulator là việc nên làm.

Bước đầu tiên của việc cài đặt WP8 SDK là tải nó về từ trang web của Microsoft. Bạn có 2 lựa chọn tải WP8 SDK:

  • Phiên bản cài qua Internet tải tại đây
  • Phiên bản ISO để cài offline tải tại đây

Tôi chọn phiên bản ISO để sau này nếu cần có thể cài đặt lại.

Sau khi tải xong file ISO cho bộ cài đặt WP8 SDK, bạn nhấn nút phải chuột trên file ISO rồi chọn Mount, Windows 8 sẽ "mount" file ISO thành một ổ đĩa ảo. Bạn hãy mở ổ đĩa ảo đó trong explorer rồi nhấn đúp file WPexpress_full.exe để bắt đầu quá trình cài đặt.

Quá trình cài đặt WP8 SDK cũng tương tự như bất cứ quá trình cài đặt ứng dụng Windows nào khác. Trước tiên bạn sẽ phải chấp nhận các điều khoản về license bằng cách đánh dấu vào ô "I agree to the License terms and conditions" rồi sau đó nhấn nút INSTALL.

Tiếp đó bạn chỉ việc ngồi chờ đợi. Nếu không có bất cứ trục trặc gì xảy ra, bộ cài đặt sẽ thông báo tiến trình cài đặt hoàn thành như dưới đây.

Chú ý: Trong trường hợp máy tính của bạn đã được cài đặt sẵn Visual Studio 2012 (VS2012) từ phiên bản Professional trở lên, SDK tool sẽ được tích hợp vào Visutal Studio. Trong trường hợp máy tính của bạn không có một trong các phiên bản trên, Visual Studio 2012 Express for Windows Phone sẽ được cài đặt.

Vậy là bạn đã có thể bắt đầu việc phát triển ứng dụng cho WP8. Và ngay sau đây chúng ta sẽ cùng bắt tay vào viết một ứng dụng WP8 đơn giản. Tôi sử dụng VS2012 Ultimate nên giao diện có thể sẽ có đôi chút khác biệt trong trường hợp bạn dùng VS2012 Express for Windows Phone.

Đầu tiên là tạo project. Bạn hãy mở VS2012 và chọn File, New sau đó chọn Project. Bạn mở rộng mục Templates, Visual C# rồi chọn Windows Phone. Với ví dụ này, chúng ta sẽ sử dụng Windows Phone App template. Hãy chọn nó, nhập tên cho dự án và chọn lưu tại thư mục mà ban mong muốn.

Sau khi nhấn OK, VS2012 sẽ hiển thị hộp thoại yêu cầu chọn hệ điều hành. Bạn hãy chọn "Windows Phone OS 8.0" rồi nhấn OK.

VS2012 sẽ tạo project cho bạn và hiển thị MainPage.xaml

Bạn hãy tìm đoạn code sau

Sau đó thay "MY APPLICATION" thành "HELLO WORLD" và "page name" thành "hello page"

Để deploy ứng dụng trên emulator hay thiết bị thật, bạn chọn mục tương ứng như trong hình sau rồi nhấn F5.

Ứng dụng sẽ được deploy lên emulator hoặc thiết bị rồi thực thi như trong hình sau.

Chúc mừng bạn, vậy là chúng ta đã hoàn thành ứng dụng WP8 đầu tiên.

Tôi sẽ trở lại với các bài viết về lập trình WP8 nữa. Mong các bạn đón đọc.