Viber now available on all Windows 10 devices

We announced the release of Viber for Windows 10 beta last month and now, we’re excited to welcome the full version to the Windows Store. Viber for Windows 10, free to download on all your Windows 10 devices, now includes great new features such as video calls for mobile, Cortana support*, quick reply and more!

Viber for Windows 10

Viber is the easy-to-use free app that lets you send messages and make HD-quality phone and video calls securely over WiFi and mobile networks from just about anywhere. Share photos, videos and voice messages, message groups of up to 200 people, and if you have second thoughts about a message you’ve sent, just delete it – even after it’s been delivered.

Let’s take a closer look at the awesome features in Viber for Windows 10:

  • Video calls on mobile: Now you can video-call anyone from your phone!
  • Quick reply: Your messages will pop up outside of the app so that you can reply quickly, without opening up the app, and get on with whatever you’re doing.
  • Cortana support: Simply ask Cortana with your voice to call or text someone for you.
  • Share to Viber: Share links, text, photos, videos or your location to Viber easily from within any Windows 10 app.
  • Access chats from Start menu: Start a new message or reply in recent chats right from the Start menu.
  • Organize stickers: Hide and change the display order of your stickers through the Sticker Market settings.
  • Localization: New language support for both Russian and Portuguese
  • Live Tile: The Live Tile in Windows 10 will show you your new messages
  • Like messages: You can now like messages in group chats

You can learn more about the exciting news over on Viber’s blog. Viber for Windows 10 is ready to let you contact the world and to let the world connect with you!

*Cortana available in select markets.

Windows Store Weekly: great offers and titles to check out

Today’s roundup of what’s new in the Windows Store includes great offers and deals on games, movies, TV episodes and more!

Countdown to Windows 10 Anniversary Update

Minecraft: Story Mode

Special offers are available in the Windows Store starting through July 29, as we countdown to the Windows 10 Anniversary Update on August 2! Enjoy new features on favorite games, rent a movie for free, get up to four months of free music and more. Read the full blog post for details.

Games

Artifex Mundi Summer Sale

Artifex Mundi Summer Sale in the Windows Store

Explore an undersea complex or take a ride on a gryphon! Save 50% off popular Artifex Mundi hidden object games from July 21 to 27. Check out the full collection on sale in the Windows Store, available for Windows 10 PC and Mobile.

Movies

Anime Month

Anime Month in the Windows Store

There’s still a week left of Anime Month! Celebrate all things anime with big discounts, tons of free TV episodes and more. Discover an amazing new series or two, revisit old favorites, and don’t miss these awesome deals: season one of Dragon Ball Z and Fairy Tail are free through August 1. Head over here to start watching!

Music

Katy Perry, Rise – Buy for $1.29

Katy Perry's single Rise in the Windows Store

Katy Perry’s new single, Rise, is out today and available in the Windows Store. You can buy it for $1.29 or listen free with a free 30-day trial of Groove Music Pass.*

Comic-Con Central

Comic-Con collection in the Windows Store

It’s a bird, it’s a plane, it’s the San Diego Comic-Con! Get ready for the big convention with heroic apps, games, movies and music.

Head over here to see everything that’s new and updated in the Windows Store this week, and have a great weekend!

*30-day trial continues to a paid monthly subscription unless cancelled. Credit card required. Groove Music Pass sold separately and in select markets. Catalog size and availability varies by market and over time.

Improvements for smaller app downloads on Google Play

Posted by Anthony Morris, SWE Google Play

Google Play continues to grow rapidly, as Android users installed over 65
billion apps in the last year from the Google Play Store. We’re also seeing
developers move to update their apps more frequently to push great new content,
patch security vulnerabilities, and iterate quickly on user feedback.

However, many users are sensitive to the amount of data they use, especially if
they are not on Wi-Fi. Google Play is investing in improvements to reduce the
data that needs to be transferred for app installs and updates, while making
data cost more transparent to users.

Read on to understand the updates and learn some tips for ways to optimize the
size of your APK.

New Delta algorithm to reduce the size of app updates

For approximately 98% of app updates from the Play Store, only changes
(deltas) to APK files are downloaded and merged with the existing
files, reducing the size of updates. We recently rolled out a delta algorithm,
bsdiff, that further reduces
patches by up to 50% or more compared to the previous algorithm. Bsdiff is
specifically targeted to produce more efficient deltas of native libraries by
taking advantage of the specific ways in which compiled native code changes
between versions. To be most effective, native libraries should be stored
uncompressed (compression interferes with delta algorithms).

An example from Chrome:

Patch Description Previous patch size Bsdiff Size
M46 to M47 major update 22.8 MB 12.9 MB
M47 minor update 15.3 MB 3.6 MB

Apps that don’t have uncompressed native libraries can see a 5% decrease in size
on average, compared to the previous delta algorithm.

Applying the delta algorithm to APK Expansion Files to further
reduce update size

APK Expansion Files allow you to include additional large files up to 2GB in
size (e.g. high resolution graphics or media files) with your app, which is
especially popular with games. We have recently expanded our delta and
compression algorithms to apply to these APK Expansion Files in addition to
APKs, reducing the download size of initial installs by 12%, and updates by 65%
on average.

Clearer size information in the Play Store

Alongside the improvements to reduce download size, we also made information
displayed about data used and download sizes in the Play Store clearer. You can
now see actual download sizes, not the APK file size, in the Play Store. If you
already have an app, you will only see the update size. These changes are
rolling out now.

Example 1: Showing new “Download size” of APK

Example 2: Showing new “Update size” of APK


Tips to reduce your download sizes

1. Optimize for the right size measurements: Users care about download size (i.e. how many bytes are transferred when installing/updating an app), and they care about disk size (i.e. how much space the app takes up on disk). It’s important to note that neither of these are the same as the original APK file size nor necessarily correlated.

Chrome example:

Compressed Native Library Uncompressed Native Library
APK Size 39MB 52MB (+25%)
Download size (install) 29MB 29MB (no change)
Download size (update) 29MB 21MB (-29%)
Disk size 71MB 52MB (-26%)/td>

Chrome found that initial download size remained the same by not compressing the native library in their APK, while the APK size increased, because Google Play already performs compression for downloads. They also found that the update size decreased, as deltas are more effective with uncompressed files, and disk size decreased as you no longer need an compressed copy of the native library:

2. Reduce your APK size: Remove unnecessary data from the APK like unused resources and code.

3. Optimize parts of your APK to make them smaller: Using more efficient file formats, for example by using WebP instead of JPEG, or by using Proguard to remove unused code.

Read
more about reducing APK sizes
and watch the I/O 2016 session ‘Putting Your App on a
Diet’
to learn from
Wojtek Kaliciński, about how to reduce the size of your APK
.

Google Play Books introduces Bubble Zoom

Whether it’s reading up on the origins of Justice League or enjoying a reboot like Invincible Iron Man, we all love our heroes and villains and there’s nothing more thrilling than flipping through your favorite comic when the battle is on — THWACK!


Last year, Google Play made it easier to find and read your favorite comics on your phone or tablet, including a new vertical scrolling experience. We wanted to use our superpowers, like machine learning, to improve the digital comics experience even further. Machine learning is the technology that makes the digital things in your life more useful, like finding the right image in Google Photos by searching for “hugs” to “dogs.” So what happens when we bring our machine learning capabilities to the world of comics?

At San Diego Comic-Con 2016, we just announced Bubble Zoom: a new way to read digital comics on phones and tablets. Using the same technology to recognize objects in photos, we trained our system to identify speech bubbles in comics. Bubble zoom expands the speech bubbles of a comic one-tap-at-a-time, making them super easy to read on your mobile device. It’s much easier to read digital comics one-handed as Bubble Zoom automatically identifies and expands each speech bubble for readability. No more compromising the full-page experience or getting lost while panning around.

“Justice League (2011) Origin – Vol 1.” and “Invincible Iron Man Vol 1.” read using Bubble Zoom
Bubble Zoom will be available on the latest version of Google Play Books app for Android as a technical preview with all Marvel and DC collected volumes supported. We’re also celebrating this preview with a 50% off sale on select DC Comics and Marvel comics in the Google Play Store — just use the code SDCC2016 by July 24th, 2016.

Rolling out today, you can upgrade Play Books and provide feedback on supported comic volumes in the app as this exclusive experience is only the first step. As we continue to teach our machines to read more comic book styles, our goal is to eventually bring Bubble Zoom to all the comics and manga ever made.



So stay on the lookout for Bubble Zoom and by Odin’s beard…go read some comics!

Posted by Greg Hartrell, Head of Product, Google Play Books


Connecting your App to a Wi-Fi Device

Posted by Rich Hyndman, Android Developer Advocate

With the growth of the Internet of Things, connecting Android applications to
Wi-Fi enabled devices is becoming more and more common. Whether you’re building
an app for a remote viewfinder, to set up a connected light bulb, or to control
a quadcopter, if it’s Wi-Fi based you will need to connect to a hotspot that may
not have Internet connectivity.

From Lollipop onwards the OS became a little more intelligent, allowing multiple
network connections and not routing data to networks that don’t have Internet
connectivity. That’s very useful for users as they don’t lose connectivity when
they’re near Wi-Fis with captive portals. Data routing APIs were added for
developers, so you can ensure that only the appropriate app traffic is routed
over the Wi-Fi connection to the external device.

To make the APIs easier to understand, it is good to know that there are 3 sets
of networks available to developers:

  • WiFiManager#startScan returns a list of available Wi-Fi networks. They are
    primarily identified by SSID.
  • WiFiManager#getConfiguredNetworks returns a list of the Wi-Fi networks
    configured on the device, also indexed by SSID, but they are not necessarily
    currently available.
  • ConnectivityManager#getAllNetworks returns a list of networks that are being
    interacted with by the phone. This is necessary as from Lollipop onwards a
    device may be connected to multiple networks at once, Wi-Fi, LTE, Bluetooth,
    etc… The current state of each is available by calling ConnectivityManager#getNetworkInfo
    and is identified by a network ID.

In all versions of Android you start by scanning for available Wi-Fi networks
with WiFiManager#startScan,
iterate through the ScanResults
looking for the SSID of your external Wi-Fi device. Once you’ve found it you can
check if it is already a configured network using WifiManager#getConfiguredNetworks
and iterating through the WifiConfigurations
returned, matching on SSID. It’s worth noting that the SSIDs of the configured
networks are enclosed in double quotes, whilst the SSIDs returned in ScanResults
are not.

If your network is configured you can obtain the network ID from the
WifiConfiguration object. Otherwise you can configure it using WifiManager#addNetwork
and keep track of the network id that is returned.

To connect to the Wi-Fi network, register a BroadcastReceiver that listens for
WifiManager.NETWORK_STATE_CHANGED_ACTION
and then call WifiManager.enableNetwork
(int netId, boolean disableOthers)
, passing in your network ID. The
enableNetwork call disables all the other Wi-Fi access points for the next scan,
locates the one you’ve requested and connects to it. When you receive the
network broadcasts you can check with WifiManager#getConnectionInfo
that you’re successfully connected to the correct network. But, on Lollipop and
above, if that network doesn’t have internet connectivity network, requests will
not be routed to it.

Routing network requests

To direct all the network requests from your app to an external Wi-Fi device,
call ConnectivityManager#setProcessDefaultNetwork
on Lollipop devices, and on Marshmallow call ConnectivityManager#bindProcessToNetwork
instead, which is a direct API replacement. Note that these calls require
android.permission.INTERNET; otherwise they will just return false.

Alternatively, if you’d like to route some of your app traffic to the Wi-Fi
device and some to the Internet over the mobile network:

Now you can keep your users connected whilst they benefit from your innovative
Wi-Fi enabled products.

Android Developer Story: StoryToys finds success in the ‘Family’ section on Google Play

Posted by Lily Sheringham, Google Play team

Based in Dublin, Ireland, StoryToys
is a leading publisher of interactive books and games for children. Like most
kids’ app developers, they faced the challenges of engaging with the right
audiences to get their content discovered. Since the launch of the Family
section on Google Play, StoryToys has experienced an uplift of 270% in revenue
and an increase of 1300% in downloads.

Hear Emmet O’Neill, Chief Product Officer, and Gavin Barrett, Commercial
Director, discuss how the Family section creates a trusted and creative space
for families to find new content. Also hear how beta testing, localized pricing
and more, has allowed StoryToy’s flagship app, My
Very Hungry Caterpillar
, to significantly increase engagement and revenue.

Learn
more about Google Play for Families
and get the Playbook
for Developers app
to stay up-to-date with more features and best practices
that will help you grow a successful business on Google Play.

Strictly Enforced Verified Boot with Error Correction

Posted by Sami Tolvanen, Software Engineer

Overview

Android uses multiple layers of protection to keep users safe. One of these
layers is verified
boot
, which improves security by using cryptographic integrity checking to
detect changes to the operating system. Android has alerted about system integrity since Marshmallow,
but starting with devices first shipping with Android 7.0, we require verified
boot to be strictly enforcing. This means that a device with a corrupt boot
image or verified partition will not boot or will boot in a limited capacity
with user consent. Such strict checking, though, means that non-malicious data
corruption, which previously would be less visible, could now start affecting
process functionality more.

By default, Android verifies large partitions using the dm-verity kernel driver,
which divides the partition into 4 KiB blocks and verifies each block when read,
against a signed hash tree. A detected single byte corruption will therefore
result in an entire block becoming inaccessible when dm-verity is in enforcing
mode, leading to the kernel returning EIO errors to userspace on verified
partition data access.

This post describes our work in improving dm-verity robustness by introducing
forward error correction (FEC), and explains how this allowed us to make the
operating system more resistant to data corruption. These improvements are
available to any device running Android 7.0 and this post reflects the default
implementation in AOSP that we ship on our Nexus devices.

Error-correcting codes

Using forward error correction, we can detect and correct errors in source data
by shipping redundant encoding data generated using an error-correcting code.
The exact number of errors that can be corrected depends on the code used and
the amount of space allocated for the encoding data.

Reed-Solomon
is one of the most commonly used error-correcting code families, and is readily
available in the Linux kernel, which makes it an obvious candidate for
dm-verity. These codes can correct up to ⌊t/2⌋ unknown errors and up to
t known errors, also called erasures, when t
encoding symbols are added.

A typical RS(255, 223) code that generates 32 bytes of encoding data for every
223 bytes of source data can correct up to 16 unknown errors in each 255 byte
block. However, using this code results in ~15% space overhead, which is
unacceptable for mobile devices with limited storage. We can decrease the space
overhead by sacrificing error correction capabilities. An RS(255, 253) code can
correct only one unknown error, but also has an overhead of only 0.8%.

An additional complication is that block-based storage corruption often occurs
for an entire block and sometimes spans multiple consecutive blocks. Because
Reed-Solomon is only able to recover from a limited number of corrupted bytes
within relatively short encoded blocks, a naive implementation is not going to
be very effective without a huge space overhead.

Recovering from consecutive corrupted blocks

In the changes we made to dm-verity
for Android 7.0, we used a technique called interleaving to allow us to recover
not only from a loss of an entire 4 KiB source block, but several consecutive
blocks, while significantly reducing the space overhead required to achieve
usable error correction capabilities compared to the naive implementation.

Efficient interleaving means mapping each byte in a block to a separate
Reed-Solomon code, with each code covering N bytes across the corresponding N
source blocks. A trivial interleaving where each code covers a consecutive
sequence of N blocks already makes it possible for us to recover from the
corruption of up to (255 – N) / 2 blocks, which for RS(255, 223) would
mean 64 KiB, for example.

An even better solution is to maximize the distance between the bytes covered by
the same code by spreading each code over the entire partition, thereby
increasing the maximum number of consecutive corrupted blocks an RS(255, N) code
can handle on a partition consisting of T blocks to ⌈T/N⌉ × (255 –
N) / 2
.

Interleaving with distance D and block size B.

An additional benefit of interleaving, when combined with the integrity
verification already performed by dm-verity, is that we can tell exactly where
the errors are in each code. Because each byte of the code covers a different
source block—and we can verify the integrity of each block using the existing
dm-verity metadata—we know which of the bytes contain errors. Being able to
pinpoint erasure locations allows us to effectively double our error correction
performance to at most ⌈T/N⌉ × (255 – N) consecutive blocks.

For a ~2 GiB partition with 524256 4 KiB blocks and RS(255, 253), the maximum
distance between the bytes of a single code is 2073 blocks. Because each code
can recover from two erasures, using this method of interleaving allows us to
recover from up to 4146 consecutive corrupted blocks (~16 MiB). Of course, if
the encoding data itself gets corrupted or we lose more than two of the blocks
covered by any single code, we cannot recover anymore.

While making error correction feasible for block-based storage, interleaving
does have the side effect of making decoding slower, because instead of reading
a single block, we need to read multiple blocks spread across the partition to
recover from an error. Fortunately, this is not a huge issue when combined with
dm-verity and solid-state storage as we only need to resort to decoding if a
block is actually corrupted, which still is rather rare, and random access reads
are relatively fast even if we have to correct errors.

Conclusion

Strictly enforced verified boot improves security, but can also reduce
reliability by increasing the impact of disk corruption that may occur on
devices due to software bugs or hardware issues.

The new error correction feature we developed for dm-verity makes it possible
for devices to recover from the loss of up to 16-24 MiB of consecutive blocks
anywhere on a typical 2-3 GiB system partition with only 0.8% space overhead and
no performance impact unless corruption is detected. This improves the security
and reliability of devices running Android 7.0.

Announcing Windows 10 Insider Preview Build 14393 for PC and Mobile

Hello my Windows Insiders!

I hope everyone had an awesome weekend. Many of you know that helping people learn tech is a deep passion of mine so I spent some time working on some UWP app ideas that the we can do with you all, both in-person and online.  We are always looking to learn new things (such as IoT development) and what better way that alongside all of you. I’ll share some videos of the progress we make.

In build news, today we are releasing Build 14393 for both PC and Mobile to Windows Insiders in the Fast ring. This build includes a handful of new fixes to take note of:

Improvements and fixes for PC

  • We have improved the reliability of Start, Cortana, and Action Center.
  • You should now be able to mount iPods as USB mass-storage devices.

Improvements and fixes for Mobile

  • We fixed an issue resulting in rapid battery drain when Visual Voicemail syncs voicemail messages on Dual SIM devices like the Lumia 950 XL.
  • We also fixed an issue causing some battery drain on older devices like the Lumia 535, 640, 735, 830, 930 and Icon.
  • We fixed the issue causing Voice Recorder to not show up consistently as an option for Call Recording. A app update was released last Friday that fixes this issue. Make sure you have the app version 10.1607.1931.0.
  • We fixed several issues impacting Dual SIM capabilities. Using a device with two SIMs should work as it should.

Known issues for PC

  • We are aware of certain cases in which Surface Books and Surface Pro 4’s may bugcheck (bluescreen) due to a camera driver issue. An updated driver will roll-out via Windows Update soon that will fix this.

Known issues for Mobile

  • We are continuing to investigate W-Fi issues on certain devices.
  • Turning off Bluetooth can sometimes result in freeze, crash, or reset. See this forum post for more details.
  • Wallet users are prompted for a PIN twice when using tap to pay from a locked phone. You can enter their PIN twice and tap as usual once the phone is unlocked. A fix for this will come as a Wallet app update via the Store.
  • REMINDER: We have changed the backup format for Windows 10 Mobile devices to reduce the size of the backup stored in OneDrive. As a result, if you do a backup on a device running the latest Windows 10 Mobile Insider Preview builds and move back to the released version of Windows 10 Mobile (Build 10586) and restore from your backup – your Start screen layout won’t restore and remain the default Start layout. Your previous backup also gets overwritten. If you need to go back to Build 10586 temporarily, once you are on Build 10586 you should disable backup so it doesn’t overwrite the good backup from Windows 10 Mobile Insider Preview builds. We will stop noting this going forward.

All right, that’s all for now.  Have an excellent week, team.

Keep hustling,

Dona <3

Countdown to Windows 10 Anniversary Update with offers in the Windows Store

We’re excited to share some great offers hitting the Windows Store beginning tomorrow through July 29 as we countdown to the Windows 10 Anniversary Update on August 2*. Enjoy new features on your favorite games, rent a movie for free and get up to four months of free music. Vote for your favorite titles in the Store for the chance to win one of 10 $50 Windows Store digital gift cards!

Here’s a run through of just some of the top offers you can enjoy beginning tomorrow through July 29 in the Windows Store:

Minecraft: Story Mode – Free Episode

Minecraft: Story Mode

Enjoy the Adventure of a lifetime in the world of Minecraft with Minecraft: Story Mode – A Telltale Games Series. In this five-part episodic series, you’ll embark on a perilous adventure across the Overworld, through the Nether, to the End and beyond. Get episode 1 FREE & episode 2 – 6, discounted 50% from July 19 – July 29.

Minecraft: Windows 10 Edition Beta – Free Map

Minecraft: Windows 10 Edition Beta

This month marks the one-year anniversary of Minecraft: Windows 10 Edition Beta! It’s been quite a ride, and to celebrate, Minecraft is releasing an awesome roller coaster map featuring all kinds of crazy visuals and builds. The map will become available for free download starting July 19.

Microsoft Solitaire

Microsoft Solitaire

Download and play in a contest beginning on July 19 with a new Windows 10 Anniversary Star Club Collection. The first 1,000 people in the U.S. who complete the entire Windows 10 First Anniversary Star Club collection will get $10 Microsoft Store gift codes! See official rules.

Free movie rental from Microsoft Movies & TV

School of Rock in the Windows Store

Accept no substitutes!  Between July 19 and July 25, you can rent School of Rock for free on Microsoft Movies & TV, starring Jack Black as an out-of-work musician who poses as a substitute teacher and turns a class of fifth grade high-achievers into high-voltage rock and rollers. Once you rent it you’ll have 14 days to start the film, and once you start the film you have 24 hours to finish watching it. Rated PG-13.

Get up to 4 months of free music with Microsoft Groove

Groove Music Pass

Buy a one-month subscription or a free trial of Groove Music Pass, and the next three months are on the house. What’s even better than millions of songs in your pocket – plus playlists, artist radio, and more? Get all that music free for up to 4 whole months. For a limited time, sign up for Music Pass, and after your first month we’ll email you a promo code for your complimentary months. As always, you can cancel anytime. But act fast – this deal only lasts until July 29. Available to customers without a current music pass. Sign up now.

Fan Picks Poll

Fan Pick Poll

Beginning tomorrow through July 27, cast your vote for your favorite Windows store apps, games, music, movies & TV shows to enter for a chance to win one of 10, $50 Windows Store gift cards! Best of Windows Fan Pick Favorites in the four categories will be announced on July 29! See official rules.

Age of Empires: Castle Siege

Age of Empires: Castle Siege

Castle Siege and Windows 10 are celebrating the Windows 10 Anniversary! Giveaways, contests, and free in-game boosts abound during this special celebration, helping you to grow your empire and crush your enemies! Special anniversary activities begin in game on July 20. Head over to the Windows Store to download the game today. See official rules.

Celebrate Windows 10’s first anniversary with these offers and get ready for the Windows 10 Anniversary Update by taking advantage of the free upgrade to Windows 10 by July 29!

*Valid from July 19, 2016 until July 29, 2016; Microsoft Solitaire contest available July 19, 2016 through August 30, 2016, or until 1,000 eligible entries are received.  Available in Windows Store on Windows 10 and the Web in the US.