Archive

Posts Tagged ‘google’

Android Play Store Tidbits – Blocking Unlocked/Uncertified/Rooted Devices, Graphics Drivers as an App

May 20th, 2017 10 comments

There’s been at least two or three notable stories about the Play Store this week. It started with Netflix not installing from the Google Play Store anymore on rooted device, with unclocked bootloader, or uncertified devices, and showing as “incompatible”. AndroidPolice contacted Netflix which answered:

With our latest 5.0 release, we now fully rely on the Widevine DRM provided by Google; therefore, many devices that are not Google-certified or have been altered will no longer work with our latest app and those users will no longer see the Netflix app in the Play Store.

So that means you need to  Google Widevine DRM in your device, which mean many Android TV boxes may stop to work with Netflix. You can check whether you device is certified by opening Google Play and click on settings, Scroll to the bottom and check Device Certification to see if it is Certified or Uncertified (H/T jon for the tip).

I tried this in my Chinese phone, and unsurprisingly it is “Uncertified”. AndroidPolice however successfully tested both Netflix 4.16 and Netflix 5.0.4 on an unlocked Galaxy S tab with Level 3 DRM and both worked. So the only drawback right now is that you can’t install Netflix from the Play Store, but it still works normally. Some boxes do not come with any DRM at all, which you can check with DRM info, and they may not work at all (TBC).

We’ve know learned this will not only affect Netflix, as developers will now be able to block installation of apps that fail “SafetyNet” as explained at Google I/O 2017:

Developers will be able to choose from 3 states shown in the top image:

  • not excluding devices based on SafetyNet
  • excluding those that don’t pass integrity
  • excluding the latter plus those that aren’t certified by Google.

That means any dev could potentially block their apps from showing and being directly installable in the Play Store on devices that are rooted and/or running a custom ROM, as well as on emulators and uncertified devices ….. This is exactly what many of you were afraid would happen after the Play Store app started surfacing a Device certification status.

This would mean it might become more complicated to install apps from the Google Play store on some devices, and we may have to start to side-load apps again, or use other app store. That’s provided they don’t start to stop apps running all together. The latter has been possible for year, as for example many mobile banking apps refuse to run on rooted phones.

I’ll end up with a better news, as starting with Android O it will be possible to update Graphics Drivers from the Play Store, just like you would update an app. Usually, a graphics driver update would require an OTA firmware update, or flash a new firmware image manually, and it’s quite possible this new feature has been made possible thanks to Project Treble.

Categories: Android Tags: Android, app, driver, drm, google, gpu, netflix, oreo

Android Things Developer Preview 4 Released with Google Assistant SDK Support

May 18th, 2017 2 comments

Earlier this month, Google released a preview of the Google Assistant SDK that works on boards running Debian like the Raspberry Pi 3, and even launched AIY Project Voice Kit for the later. You can now play with Google Assistant on Android Things as the company has just released Android Things Developer Preview 4 with support for Google Assistant SDK.

The operating systems works on any Android Things certified devices, but the example instructions  for Google Assistant API on Android Things also include steps to use Raspberry Pi 3 board together with AIY Projects Voice kit.

The developer preview 4 also adds I2S to the peripheral I/O API and is demonstrated in the aforementioned example, and new hardware support with NXP i.MX7D based Pico Board equipped WiFi & Bluetooth, Ethernet, USB ports, an audio jack, and an I/O expansion port.

Pico Board with NXP i.MX7D SoM

Android Things DP4 also brings the ability for developers to enable/disable Bluetooth profiles at run time. Finally, Google mentioned the open source hardware Edison Candle to show an example of Android Things hardware, which we shortly covered previously. Separately, Rockchip published a press release about a Rockchip RK3229 solution supporting the Google Assistant SDK and Android Things. Sadly, few details are provided in the PR, and RK3229 devkit is not listed in Android Things Hardware page.

You can download Android Things DP4 in the developer preview page.

Banana Pi BPI-M64 Board Gets Allwinner R18 Processor with Google Cloud IoT Core Support

May 18th, 2017 29 comments

Banana Pi BPI-M64 board was launched with Allwinner A64 processor, but a few days ago, I noticed the board got an option for Allwinner R18. Both processors are likely very similar since they are pin-to-pin compatible, and Pine64 was first seen with Allwinner R18, so I did not really feel it was newsworthy. But today, Google announced Google Cloud IoT Core cloud service working with a few app partners such as Helium and Losant, as well as several device partners including ARM, Marvell, Microchip, Mongoose OS, NXP… and Allwinner, having just announced the release of an Allwinner R18 SDK with libraries supporting Google Cloud IoT Core.

Let’s go through the board specifications first which are exactly the same as for the original BPI-M64 board, except for the processor:

  • SoC – Allwinner R18 quad core ARM Cortex A53 processor with Mali-400MP2 GPU
  • System Memory – 2GB DDR3
  • Storage – 8GB eMMC flash (16, 32 and 64GB options), micro SD slot up to 256 GB
  • Video Output / Display interface – HDMI 1.4 up to 4K resolution @ 30 Hz, MIPI DSI interface
  • Audio – HDMI, 3.5 mm headphone jack, built-in microphone
  • Connectivity – Gigabit Ethernet + 802.11 b/g/n WiFi & Bluetooth 4.0 (AP6212)
  • USB – 2x USB 2.0 host ports, 1x micro USB OTG port
  • Camera – MIPI CSI interface (which I guess you support parallel cameras via some kind of bridge)
  • Security – Hardware security enables ARM TrustZone, Digital Rights Management (DRM), information encryption/decryption, secure boot, secure JTAG and secure efuse
  • Expansion – 40-pin Raspberry Pi 2 somewhat-compatible header
  • Debugging – 3-pin UART header
  • Misc – IR receiver; U-boot, reset and power buttons;
  • Power – 5V via power barrel; 3.7V Lithium battery header; AXP803 PMIC

So from hardware perspective, there’s no advantage of getting the board with the new R18 processor. But the SDKs are somehow different, and based on Allwinner’s press release, only R18 processor gets Google Cloud IoT Core support.

Cloud IoT Core Overview

Some of the key benefits of Cloud IoT Core include:

  • End-to-end security – Enable end-to-end security using certificate-based authentication and TLS; devices running Android Things or ones supporting the Cloud IoT Core security requirements can deliver full stack security.
  • Out-of-box data Insights – Use downstream analytic systems by integrating with Google Big Data Analytics and ML services.
  • Serverless infrastructure: Scale instantly without limits using horizontal scaling on Google’s serverless platform.
  • Role-level data control – Apply IAM roles to devices to control access to devices and data.
  • Automatic device deployment – Use REST APIs to automatically manage the registration, deployment and operation of devices at scale.

Both Foxconn/SinoVoIP and Pine64 can offer Allwinner R18 platforms compatible with Google Cloud IoT Core via their Banana Pi BPI-M64 and Pine A64+ boards respectively.

Google Releases Android O Developer Preview 2, Announces Android Go for Low-End Devices, TensorFlow Lite

May 18th, 2017 1 comment

After the first Android O developer preview released in March, Google has just released the second developer preview during Google I/O 2017, which on top of features like PiP (picture-in-picture), notifications channels, autofill, and others found in the first preview, adds notifications dots, a new Android TV home screen, smart text selection, and soon TensorFlow Lite. Google also introduced Android Go project optimized for devices with 512 to 1GB RAM.

Notifications dots (aka Notification Badges) are small dots that show on the top right of app icons – in supported launchers – in case a notification is available. You can then long press the icon to check out the notifications for the app, and dismiss or act on notifications. The feature can be disabled in the settings.

Android TV “O” also gets a new launcher that allegedly “makes it easy to find, preview, and watch content provided by apps”. The launcher is customizable as users can control the channels that appear on the homescreen. Developers will be able to create channels using the new TvProvider support library APIs.

I found text selection in Android to be awkward and frustrating most of the big time, but Android O brings improvements on that front with “Smart Text Selection” leveraging on-device machine learning to copy/paste, to let Android recognize entities like addresses, URLs, telephone numbers, and email addresses.

TensorFlow is an open source machine learning library that for example allows image recognition. Android O will now support TensorFlow Lite specifically designed to be fast and lightweight for embedded use cases. The company is also working on a new Neural Network API to accelerate computation, and both plan for release in a future maintenance update of Android O later this year.

Finally, Android Go project targets devices with 1GB or less of memory, and including optimization to the operating system itself, as well as optimization to apps such as YouTube, Chrome, and Gboard to make them use less memory, storage space, and mobile data. The Play Store will also highlight apps with low resources requirements on such devices, but still provide access to the full catalog. “Android Go” will ship in 2018 for all Android devices with 1GB or less of memory.

You can test Android O developer preview 2 by joining the Android O beta program if you own a Nexus 5X, 6P, Nexus Player, Pixel, Pixel XL, or Pixel C device.

AIY Projects Voice Kit Transforms Raspberry Pi 3 Into Google Home, Comes Free with Raspberry Pi Magazine

May 5th, 2017 11 comments

We’ve just reported about the preview release of Google Assistant SDK that works on the Raspberry Pi 3, and other boards with a microphone, speakers, and access to Internet. The Raspberry Pi foundation and Google have now made it even easier, as they launched AIY Projects Voice Kit with a Google Voice HAT, a speaker, a stereo microphone Voice HAT board, a button, a few cables, and a cardboard case.

You’ll just need to add your own Raspberry Pi 3, follow the instructions to assemble kits, load and setup the software. Once this is all done, you’ll be able to press the top button, asking anything you want to Google Voice, including the weather.

Price? Sort of free, as it comes with MagPi 57 magazine, where you’ll also find detailed instructions for the kit. Google AIY Projects got its name from a mix between (DIY) and artificial intelligence (AI), and considering it’s “Projects” and not just “Project”, we can expect more kits in the future.

Google Assistant SDK Turns Your Raspberry Pi 3 into Google Home

May 3rd, 2017 7 comments

Google Home allows you to select music, control your home automation system and more with voice commands, but now you can do the same with a Raspberry Pi 3 as Google released a developer preview (alpha v1) of the Google Assistant API that works on Raspberry Pi 3, and other development boards running Debian or Ubuntu.
Functionalities are limited right now, with RPC API and Python sample code, but it only works with English language, and features such as timers & alarm, playing music, news, or podcasts, and precise location are not supported. Location is determined using your IP address only, and if you’re using some third party services / products such as Uber or Hue, you’ll need an actual Google Home device for initial setup.

Google has provided instructions to use Google Assistant SDK with Raspberry Pi 3 board. First you’ll need a USB microphone ($5.99 on Amazon), and speakers connected via USB or the 3.5 mm audio jack. After installing Raspbian on the board, you’ll need to configure a developer project and account settings, configure and test audio (with arecord/aplay), and finally install Python and the Assistant API sample:

Once this is done, authorize and run the sample:

Press Enter, ask something, and your Raspberry Pi 3 board should answer.

Since you just need audio and network working on the hardware, this should also work on other development boards, and Google has indeed provided instructions for other platforms too. Basically the same steps, but less detailed, except for the authorization part which seems a little more complicated.

Thanks to Harley for the tip.

Google Releases Android O Developer Preview with UI & Audio Improvements, Better Performance, etc…

March 22nd, 2017 No comments

Nearly exactly one year after Android N developer preview release, Google has now announced the release of Android O developer preview in order to get feedback from the developer community before the official release of Android 8.0? Oreo? in Q3 2017.

So what’s new so far in Android O? Here are some of the changes:

  • Background activity limits –  Automatic limits on what apps can do in the background for implicit broadcasts, background services, and location updates.
  • Notification channels –  New app-defined categories for notification content for better control from the use, as user may only block or change the behavior from one channel, instead of applying the same behavior to all notifications from a given app. For example, a News app may have notifications for Technology, Sports, Politics, International, etc…
  • Autofill APIs – Platform support for autofill, where users can select an autofill app, similar to the way they select a keyboard app, with the app securely storing  addresses, user names, and even passwords.
  • PIP for handsets and new windowing features – Picture in Picture (PIP) display is now working on phones and tablets, so users can continue watching a video while they’re answering a chat or hailing a car. Other window features include overlay window and multi-display support.
  • Font resources in XML – Apps can now use fonts in XML layouts as well as define font families in XML — declaring the font style and weight along with the font files.
  • Adaptive icons  Icons that can be displayed in different shapes, e.g. round or rounded square based on a mask selected by the device. Animated interactions with the icons are also supported.
  • Wide-gamut color for apps – Android developers of imaging apps can now take advantage of new devices that have a wide-gamut color capable display.
  • Connectivity 
    • Support for high-quality Bluetooth audio codecs such as LDAC codec.
    • Wi-Fi Aware support, aka Neighbor Awareness Networking (NAN), allowing to discover and communicate over WiFi without an Internet access point
    • Extension of ConnectionService APIs to enable third party calling apps integrate with System UI and operate seamlessly with other audio apps.
  • Keyboard navigation –  Better use of “arrow” and “tab” navigation key for systems connected to keyboard such as Chrome OS with Google Play.
  • AAudio API for Pro Audio –  Native API designed for high-performance, low-latency audio.
  • WebView enhancements –  Multiprocess mode enabled by default, and new API for errors and crashes handling.
  • Java 8 Language APIs and runtime optimizations  – New Java Language APIs, such as java.time API. Android Runtime is up to 2x faster on some application benchmarks. 

Google has provided system images for Nexus 5X, Nexus 6P, Nexus Player, Pixel, Pixel C, and Pixel XL devices. You’ll find more details about the preview on Android Developer website.

Categories: Android, Chrome OS Tags: Android, audio, battery, google, oreo, sdk

Google Releases Guetzli Open Source JPEG Encoder Generating 20 to 35% Smaller Files Compared to Libjpeg

March 17th, 2017 14 comments

Google has been working one several front to make data and images smaller, hence faster to load from the Internet, with project such as Zopfli algorithm producing smalled PNG & gzip files, or WebP image compression algorithm that provides better lossless compression compare to PNG, and better lossy compression compared to JPEG, but requires updated support from clients such as web browsers. Google has now released Guetzli algorithm that improve on the latter, as it can create JPEG files that are 20 to 35% smaller compared to libjpeg with similar quality, and still compatible with the JPEG format.

The image above shows a close up on a phone line with the original picture, the JPEG picture compressed with libjpeg with the artifacts around the line, and a smaller JPEG picture compressed with Guetzli with less artifacts.

You can find out more about the algorithm in the paper entitled “Guetzli: Perceptually Guided JPEG Encoder“, or read the abstract below:

Guetzli is a new JPEG encoder that aims to produce visually indistinguishable images at a lower bit-rate than other common JPEG encoders. It optimizes both the JPEG global quantization tables and the DCT coefficient values in each JPEG block using a closed-loop optimizer. Guetzli uses Butteraugli, our perceptual distance metric, as the source of feedback in its optimization process. We reach a 29-45% reduction in data size for a given perceptual distance, according to Butteraugli, in comparison to other compressors we tried. Guetzli’s computation is currently extremely slow, which limits its applicability to compressing static content and serving as a proof- of-concept that we can achieve significant reductions in size by combining advanced psychovisual models with lossy compression techniques.

The compression is quite slower than with libjpeg or libjpeg-turbo, but considering that on the Internet a file is usually compressed once, and decompressed many times by visitors, this does not matter so much. Another limitation is that it does not support progressive JPEG encoding.

You can try Guetzli by yourserlf as the code was released on github. It did the following to build the tool on Ubuntu 16.04:

You’ll the executable in bin/release directory, and you can run it to list all options:

Ideally you should have a raw or losslesly compressed image, but I tried a photo taken from my camera first:

But it reported my JPEG file was invalid, so I tried another file (1920×1080 PNG file):

It’s a single threaded process, and it takes an awful lot of time (about 3 minutes on an AMD FX8350 processor), at least with the current implementation. You may want to run it with “verbose” option to make sure it’s not dead.

I repeated the test with convert using quality 95, as it is the default option in Guetzli:

The file compressed with Guetzli is indeed about 15% smaller, and should have similar quality:

It’s just currently about 1,400 times slower on my machine.