Saturday, April 14, 2012

[Gd] Crowd Sourcing with Google Forms and Fusion Tables

| More

Google Apps Developer Blog: Crowd Sourcing with Google Forms and Fusion Tables

Crowd sourcing has been growing substantially in popularity. More and more businesses and individuals are interested in gathering data from the general public for real-time data analysis and visualization. The concept is being adopted in several fields, including journalism, public health and safety, and business development. During this election year, for example, a journalist might be interested in learning what candidate his or her readers support, and the reasons why they support this candidate.

Google Forms, Fusion Tables, and Apps Script make both data collection and analysis super simple! Using Google Forms, a journalist can quickly create an HTML form for readers to submit their opinions and feedback. Fusion Tables make data analysis easy with several cool data visualization options. Apps Script acts as the glue between Google Forms and Fusion Tables, enabling the Form to send data directly to Fusion Tables.

Let’s take a look at how our journalist friend would use all these tools to collect her reader’s candidate preferences.

Google Forms

Google Forms provides a simple UI tool to develop forms perfect for collecting data from readers. Here’s an example of a simple form the journalist can create to get information from her readers:

Once the form has been created, it can be embedded directly into the journalist’s website or blog using the embeddable HTML code provided by Google Forms.

Google Fusion Tables

Google Fusion Tables makes data analysis simple with its visualization capabilities. Using Fusion Tables, the journalist can create maps and charts of the collected data with just a few clicks of the mouse!

Using some fake data as an example, here’s a pie chart that can be created using Fusion Tables to show the the results of the survey:

With Fusion Tables, it’s also easy to filter data and create a pie chart visualization showing why people like Mitt Romney:

These visualizations can also be embedded in the journalist’s website or blog, as Fusion Tables provides embeddable HTML code for all its visualizations. Now, any time someone visits the webpage with the embedded visualization, they will see the current poll result!

Apps Script

Finally, Apps Script acts as the glue between the Google Form and the Fusion Table, since there is currently no direct way to send Google Form submissions to a Fusion Table. During a hack event last year, I took some time to write an Apps Script script that submits the form data to Fusion Tables. The script uses the onFormSubmit Apps Script functionality as described in this blog post. The Fusion Tables code is based on the code described in this blog post.

To learn how to set up your own Google Form to collect data and save that data in a Fusion Table, please see these instructions.

Kathryn Hurley profile

Kathryn is a Developer Programs Engineer for Fusion Tables at Google. In this role, she helps spread the word about Fusion Tables by presenting at conferences and developer events. Kathryn received an MS in Web Science from the University of San Francisco. Prior work experience includes database management, web production, and research in mobile and peer-to-peer computing.


[Gd] Android C2DM — Client Login key expiration

| More

Android Developers Blog: Android C2DM — Client Login key expiration

[This post is by Francesco Nerieri, engineering team lead for C2DM — Tim Bray]

In the upcoming weeks, some of the older Client Login authentication keys will expire. If you generated the token you’re currently using to authenticate with the C2DM servers before October 2011, it will stop working.

If the response from the C2DM servers contains an Update-Client-Auth header, you’ll need to replace the current token with the one included in the header.

  // Check for updated token header
String updatedAuthToken = conn.getHeaderField(UPDATE_CLIENT_AUTH);
if (updatedAuthToken != null && !authToken.equals(updatedAuthToken)) {"Got updated auth token from datamessaging servers: " +

We suggest that you start using the Update-Client-Auth response header to update tokens regularly, as keys will expire periodically from now on. For example, have a look at the Chrome to Phone service hosted on; this code takes care of authenticating via Client Login and then sending a message:

Alternatively, you can manually generate a new Client Login token now and replace the one currently in use. ClientLogin can be used with any application that can make an HTTPS POST request. The POST request should be structured as a form post with the default encoding application/x-www-form-urlencoded, like this:

POST /accounts/ClientLogin HTTP/1.0
Content-type: application/x-www-form-urlencoded


If the POST succeeds, the response contains the authorization token, labeled "Auth", which is your new token. You could even do this from the command line:

curl -d \
"accountType=HOSTED_OR_GOOGLE&" \ | \
grep Auth

If your request fails or if you are prompted for captchas, please read ClientLogin for Installed Applications. And of course, if you updated your code to use the Update-Client-Auth header after the keys had expired, then you will first need to manually generate a new token.

Have fun with C2DM!


[Gd] Beta Channel Update

| More

Chrome Releases: Beta Channel Update

The Beta channel has been updated to 19.0.1084.24 for Windows, Mac, Linux, and Chrome Frame. 

Take a look at the changelog to see what happened in this release.

If you'd like to get on the Beta channel, you can download it from our Beta download page. If you find a new issue, please let us know by filing a bug.

Anthony Laforge
Google Chrome

Friday, April 13, 2012

[Gd] Fridaygram: Chrome tools, Goldberg machines, Lehrer songs

| More

Google Developers Blog: Fridaygram: Chrome tools, Goldberg machines, Lehrer songs

Author Photo
By Scott Knaster, Google Developers Blog Editor

If you use Google Chrome and you like to live on the edge, you might want to try Google Chrome Canary. There's a new version of Chrome Canary pretty much every day, and it gets the latest features. Of course, because it's built every day, sometimes it’s not very stable and it falls right off the leading edge it's balanced on. That’s why, for safety, you can install and run the stable version of Chrome alongside the Canary version.

Recent Canary builds have added cool new features to the developer tools section of Chrome. Specifically, you can now test mobile environments by simulating different screen sizes and by emulating touch events using the mouse. These features are on the Settings page of developer tools.

If you haven’t visited Chrome's developer tools before, you might be pleasantly surprised at all the nifty things available there. To get to developer tools, click the Wrench in Chrome, then choose Tools > Developer Tools. Have a look around – if you need a guide, see the documentation.

Some developers make hardware too, and a bunch of them competed in this year’s Rube Goldberg Machine Contest at Purdue University. The winning team broke a record – their own record – by building a machine that takes 300 steps to inflate and pop a balloon. When you consider that 14 people spent 5000 hours on this project, you realize the power of creativity mixed with craziness.

Finally, take a moment to celebrate Tom Lehrer's birthday week by listening to some of his classic tunes. As a math professor / musician / parodist, nobody expresses the spirit of Fridaygrams better than Tom Lehrer.

Fridaygram posts are just for fun. They're designed for your Friday and weekend enjoyment. Each Fridaygram item must pass only one test: it has to be interesting to us nerds. Disclaimer: we do not advocating poisoning pigeons, whether in the park or elsewhere.

Thursday, April 12, 2012

[Gd] New Seller Countries in Google Play

| More

Android Developers Blog: New Seller Countries in Google Play

Over the past year we’ve been working to expand the list of countries and currencies from which Android developers can sell their products. Starting today, developers in Czech Republic, Israel, Poland, and Mexico can sell priced applications and in-app products on Google Play, using their local bank accounts for payments. Welcome developers!

If you develop Android apps in one of the new countries and want to get started selling them, visit and set up a new Google Play developer account. Once you’ve uploaded your apps, you can price them in any available buyer currencies, publish, and then receive payouts and financial data in your local currency.

If you are based in Israel or Mexico and are currently selling apps through an AdSense merchant account, you will need to migrate your apps to a new Google Play developer account in your local currency. Watch for an email that provides complete information on the migration process and timeline.

Additionally, we encourage developers everywhere to visit the Developer Console as soon as possible to set prices for their products in the currencies of these new countries. Stay tuned for more announcements soon as we continue to roll out our new billing infrastructure to buyers and sellers throughout the world.

Join the discussion on

+Android Developers


[Gd] Beta Channel Update for Chromebooks

| More

Chrome Releases: Beta Channel Update for Chromebooks

The Beta channel has been updated to 19.0.1084.23 (Platform version: 2046.30.0) for Chromebooks (Acer AC700 and Samsung Series 5).  This release contains stability improvements. If you find new issues, please let us know by visiting our help site or filing a bug. Interested in switching channels? Find out how. You can submit feedback using ‘Report an issue’ under the wrench menu.Orit Mazor
Google Chrome


[Gd] Stable Channel Update

| More

Chrome Releases: Stable Channel Update

The Chrome Stable channel has been updated to 18.0.1025.162 on on Windows, Mac, Linux and Chrome Frame.  This release fixes issues including:

  • Facebook page hangs after a while (Issue: 121141)
  • black screen on Hybrid Graphics system with GPU accelerated compositing enabled (Issue: 117371)

  • HTML5 audio doesn't work on some Mac computers (Issue: 109441)

Full details about what changes are in this release are available in the SVN revision log. Interested in hopping on the stable channel?  Find out how.  If you find a new issue, please let us know by filing a bug.

Karen Grunberg
Google Chrome

[Gd] Join Hack4Kids, the second edition of the EUHackathon in Brussels

| More

Google Developers Blog: Join Hack4Kids, the second edition of the EUHackathon in Brussels

Author Photo
By Marco Pancini, Senior Policy Counsel

This year, the second edition of the EUhackathon is taking place on 20 and 21 June, and the theme is Hack4Kids. The event is organised again in conjunction with the European Institutions in Brussels.

The EUhackathon concept aims to build a bridge between the "old" (the European Institutions and lawmakers) and the "new" world (the Internet and coders). The 2012 edition adds the dimension of putting children at the center of the event as end-users and as members of the jury.

The Hack4Kids EUhackathon revolves around two tracks: 1) child safety and 2) child creativity.

The first track offers developers a chance to create or improve tools that enhance the Internet experience of children and parents. Ideas include providing simple and robust reporting tools for harmful online content or behaviour, crowdsourcing content classification, creating easier parental control tools, and education and awareness raising.

The second track invites developers to explore how industry can support and improve children's creativity online and offline. For example, this could include enabling children to easily create new online content, from building their own 3D game environment to producing their own hit single.

Selected applicants will have their travel and accommodation costs covered and the winner or winning team in each track will be awarded €5,000. Not to forget, there will also be free food and WiFi.

Interested candidates can submit an online application until Monday the 30th of April 2012 at noon CET.

More information is available at

No time to join the fun and excitement with us, but full of great ideas? Don’t hesitate to share your ideas on useful tools for kids, parents and teachers with us, or just go vote on other people’s suggestions at .

Marco Pancini was part of the start-up project iBazar, the first online auction web site in Europe, and after that he joined eBay from 2002 to 2007. In July 2007 he joined the Google team as policy counsel in charge of government relationship for the Italian market. Since February 2011 he has been a member of the Google policy team in Brussels.

Posted by Scott Knaster, Editor

[Gd] Dev Channel Update

| More

Chrome Releases: Dev Channel Update

The Dev channel has been updated to 20.0.1096.1 for Windows, Mac, Linux and Chrome Frame.  This build contains following updates:

  • Updated V8 -
  • file: downloads allowed again.
  • Enable the Chrome To Mobile page action for users with compatible registered devices [r130312]
  • Fixed issues 120430, 118960, 120978, 118715

Full details about what changes are in this build are available in the SVN revision log. Interested in switching release channels? Find out how. If you find a new issue, please let us know by filing a bug.

Dharani Govindan
Google Chrome

[Gd] Beta Channel Update for Chromebooks

| More

Chrome Releases: Beta Channel Update for Chromebooks

The Beta channel has been updated to 19.0.1084.17 (Platform versions: 2046.20.0) for Chromebooks (Acer AC700 and Samsung Series 5).  See more info in the Dev post.If you find new issues, please let us know by visiting our help site or filing a bug. Interested in switching channels? Find out how. You can submit feedback using ‘Report an issue’ under the wrench menu.

Orit Mazor
Google Chrome

[Gd] Beta Channel Update

| More

Chrome Releases: Beta Channel Update

The Beta channel has been updated to 19.0.1084.15 for Windows, Mac, Linux, and Chrome Frame. 

For an overview of key features in this release check out the Google Chrome Blog.  Interested in switching to the Beta or Stable channels?  You can also take a look at the changelog to see what happened in this release since 18.

If you'd like to get on the Beta channel, you can download it from our Beta download page. If you find a new issue, please let us know by filing a bug.

Anthony Laforge
Google Chrome

Wednesday, April 11, 2012

[Gd] Chrome’s WebRTC roadmap

| More

Chromium Blog: Chrome’s WebRTC roadmap

Last January, Chrome was the first major browser to preview WebRTC, HTML5's new real time audio and video stack. Since then, we've been hard at work keeping up with the evolving specification, fixing bugs and listening to the web community’s feedback.

The main parts of the WebRTC specification are now stable and are coming soon to all 200M+ Chrome users. With this blog post, we want to help developers plan for what will be introduced in this first stable release later this year.

What's in:

JSEP (Javascript Session Establishment Protocol) is an API for signaling that allows for much more powerful apps and flexibility in choice of signaling protocols. To abstract the complexity, we provide and maintain a Javascript lib that makes browser to browser calls a few lines of Javascript.

Our implementation will support multiple independent PeerConnections, each capable of sending and receiving multiple independent media sources.

ICE and STUN are standardized methods for establishing a peer-to-peer connection on the Internet, even if the two end points are behind private network addresses (NAT). Chrome’s current stack deviates from the official current standards. We are working to fix this.

We will also support TURN servers to allow connections through tougher firewalls, where relaying and encapsulation are needed. Exactly what type of TURN will be supported is TBD.

Encryption will be mandatory for all usage of WebRTC in Chrome. For our first stable release, we will implement DTLS-SRTP.

VP8, iSAC, iLBC, G.711
The video codec support by Chrome will be VP8. We've made several major improvements inside and around VP8 to ensure it can deliver a great real time experience. On the audio side, we will initially support iSAC, iLBC, G.711, and DTMF, with iSAC being the default. It is a royalty free wideband codec optimized for speech, open sourced at

What’s next?

More functionality and features will appear in future versions of Chrome. We’ll work on prioritizing them once we get the basics right:
  • Data API. Implementation will start once the network stack is ready. 
  • Screen sharing
  • PeerConnection proxying. The ability to relay a stream to a third party will not make our first version. 
  • Recording. MediaRecorder specification work has not been completed yet.
Comments, questions, kudos or tomatoes? Let us know on our discussion list.

Posted by Serge Lachapelle, Product Manager

Tuesday, April 10, 2012

[Gd] Accessibility: Are You Serving All Your Users?

| More

Android Developers Blog: Accessibility: Are You Serving All Your Users?

[This post is by Joe Fernandez, a technical writer for who cares about accessibility and usability. — Tim Bray.]

We recently published some new resources to help developers make their Android applications more accessible:

“But,” you may be thinking, “What is accessibility, exactly? Why should I make it a priority? How do I do it? And most importantly, how do I spell it?” All good questions. Let’s hit some of the key points.

Accessibility is about making sure that Android users who have limited vision or other physical impairments can use your application just as well as all those folks in line at the supermarket checking email on their phones. It’s also about the Mom over in the produce section whose kids are driving her to distraction, and really needs to see that critical notification your application is trying to deliver. It’s also about you, in the future; Is your eyesight getting better over time? How about that hand-eye coordination?

When it comes down to it, making an application accessible is about having a deep commitment to usability, getting the details right and delighting your users. It also means stepping into new territory and getting a different perspective on your application. Try it out: Open up an application you developed (or your all-time favorite app), then close your eyes and try to complete a task. No peeking! A little challenging, right?

How Android Enables Accessibility

One of main ways that Android enables accessibility is by allowing users to hear spoken feedback that announces the content of user interface components as they interact with applications. This spoken feedback is provided by an accessibility service called TalkBack, which is available for free on Google Play and has become a standard component of recent Android releases.

Now enable TalkBack, and try that eyes-closed experiment again. Being able to hear your application’s interface probably makes this experiment a little easier, but it’s still challenging. This type of interaction is how many folks with limited vision use their Android devices every day. The spoken feedback works because all the user interface components provided by the Android framework are built so they can provide descriptions of themselves to accessibility services like TalkBack.

Another key element of accessibility on Android devices is the ability to use alternative navigation. Many users prefer directional controllers such as D-pads, trackballs or keyboard arrows because it allows them to make discrete, predictable movements through a user interface. You can try out directional control with your apps using the virtual keyboard in the Android emulator or by installing and enabling the Eyes-Free Keyboard on your device. Android enables this type of navigation by default, but you, as a developer, may need to take a few steps to make sure users can effectively navigate your app this way.

How to Make Your Application Accessible

It would be great to be able to give you a standard recipe for accessibility, but the truth of the matter is that the right answer depends on the design and functionality of your application. Here are some key steps for ensuring that your application is accessible:

  1. Task flows: Design well-defined, clear task flows with minimal navigation steps, especially for major user tasks, and make sure those tasks are navigable via focus controls (see item 4).

  2. Action target size: Make sure buttons and selectable areas are of sufficient size for users to easily touch them, especially for critical actions. How big? We recommend that touch targets be 48dp (roughly 9mm) or larger.
  3. Label user interface controls: Label user interface components that do not have visible text, especially ImageButton, ImageView, and EditText components. Use the android:contentDescription XML layout attribute or setContentDescription() to provide this information for accessibility services.

  4. Enable focus-based navigation: Make sure users can navigate your screen layouts using hardware-based or software directional controls (D-pads, trackballs and keyboards). In a few cases, you may need to make UI components focusable or change the focus order to be more logical.

  5. Use framework-provided controls: Use Android's built-in user interface controls whenever possible, as these components provide accessibility support by default.

  6. Custom view controls: If you build custom interface controls for your application, implement accessibility interfaces for your custom views and provide text labels for the controls.

  7. Test: Checking off the items on this list doesn’t guarantee your app is accessible. Test accessibility by attempting to navigate your application using directional controls, and also try eyes free navigation with the TalkBack service enabled.

Here’s an example of implementing some basic accessibility features for an ImageButton inside an XML layout:


Notice that we’ve added a content description that accessibility services can use to provide an audible explanation of the button. Users can navigate to this button and activate it with directional controls, because ImageButton objects are focusable by default (so you don’t have to include the android:focusable="true" attribute).

The good news is that, in most cases, implementing accessibility isn’t about radically restructuring your application, but rather working through the subtle details of accessibility. Making sure your application is accessible is an opportunity to look at your app from a different perspective, improve the overall quality of your app and ensure that all your users have a great experience.


[Gd] Stable Channel Update

| More

Chrome Releases: Stable Channel Update

The Chrome Stable channel has been updated to 18.0.1025.152 on Windows.  

This release fixes issues with SSL (Issue: 118706). Please note this might reintroduce Issue: 117371 and we are actively working on a fix for it.

Interested in hopping on the stable channel?  Find out how.  If you find a new issue, please let us know by filing a bug.

Karen Grunberg
Google Chrome


[Gd] Dev Channel Update for Chromebooks

| More

Chrome Releases: Dev Channel Update for Chromebooks

The Dev channel has been updated to 19.0.1048.17 (Platform versions: 2046.20.0) for Chromebooks (Acer AC700 and Samsung Series 5).

This build contains a number of new features, as well as security & stability improvements. Some highlights of these changes are:

  • New modes for multiple monitor handling: mirrored (highest common resolution only), show only on primary, show only on secondary (Switch with Ctrl + F5)
  • Updated Scratchpad app
  • New file types supported - tar, gz, bzip2
  • Updates to local audio and video player
  • Functional and visual refresh of the Chrome OS Settings
  • Recovery tool supports re-formatting recovery media (use a previous recovery image USB)
  • Introduced new Japanese fonts (Motoya G04 Gothic/Mincho).
  • Redesigned UI and updated Window Manager
Known issues:
  • Issue 29012: Spoken feedback stops after increasing or reducing the machine volume
  • Issue 28932: [ZGB] Device does not respond to light sensor
  • Issue 28689: Offline help center is displayed when connected to Network
  • Issue 28564: [ZGB] Audio fails with HDMi-to-HDMi connection
  • Issue 27956: Suppress user/password dialog when re-enabling sync
  • Issue 27360: Media hangs on the machine
  • Issue 25619: Power button is unresponsive
  • Issue 23880: Sign in / Sync: Change of account password results in a sub-optimal experience depending on a number of factors
  • Issue 29050: Ethernet disappears when we configure static IP

If you find new issues, please let us know by visiting our help site or filing a bug. Interested in switching channels? Find out how. You can submit feedback using ‘Report an issue’ under the wrench menu.

Orit Mazor
Google Chrome

[Gd] A Faster Emulator with Better Hardware Support

| More

Android Developers Blog: A Faster Emulator with Better Hardware Support

[This post is by Xavier Ducrohet and Reto Meier of the Android engineering team. — Tim Bray.]

The Android emulator is a key tool for Android developers in building and testing their apps. As the power and diversity of Android devices has grown quickly, it’s been hard for the emulator keep pace.

Today we’re thrilled to announce several significant improvements to the emulator, including a dramatic performance upgrade and support for a broader range of hardware features, notably sensors and multi-finger input.

Added GPU Support

The system image we’re shipping today has built-in GPU support (Android 4.0.3 r2). With Android’s growing reliance on using the GPU to improve performance, the difference is significant. In the video below, the emulator is still interpreting ARM instructions; the performance boost is the effect of putting the GPU to work.

As a bonus, since we’re now supporting OpenGL ES 2.0, your OpenGL games can now run inside the emulator.

Please note that there are a lot of GPUs out there, and we haven’t tested all of them for this beta release, so let us know if you have feedback or encounter issues.

More Hardware Feature Emulation

The hardware features of mobile devices are a significant part of what makes them a unique platform for development, so we’re also pleased to announce that in addition to the camera support we added last year, it’s now possible to use a tethered Android device to supply inputs for sensors and multi-touch input.

We’re working on providing emulator support for more hardware features including Bluetooth and NFC.

Improved CPU Performance

We’ve also improved the CPU performance of the Android emulator. Hardware floating point operation has been available for system images since Ice Cream Sandwich (Android 4.0), allowing CPU operations to be emulated roughly twice as quickly.

Last week’s r17 developer tools release included x86 system images and host drivers (available through the SDK Manager), allowing the emulator to access the host CPU natively and offer significantly faster execution.

This video shows a CPU-bound application on two emulators running the same system image, one with virtualization, one without.

Building a modern emulator

Because the Android platform allows deep interaction between applications, and with system components, we need to provide an emulator with a complete system image. Our emulator virtualizes a complete device: hardware, kernel, low-level system libraries, and app framework.

Of course, the system being emulated typically has an ARM CPU; historically, we’d been emulating those instructions in software, and that worked OK until the advent of tablet support with additional animations and complexity in Android 3.0.

The missing pieces were the completion of Android x86 support, and the GPU support in last week’s release of SDK Tools r17. This works by funneling the OpenGL ES 2.0 instructions from the emulator to the host OS, converted to standard OpenGL 2.0, and running natively on the host GPU.


The Android ecosystem has a lot of devices in many different form factors. Developers need a good way of testing these apps without having to own everything out there and a fast, rich Android emulator is immensely helpful.

We hope that these new improvements will make the emulator a more useful tool in your development and testing, and look forward to improving it further for you.