Friday, May 31, 2013

New Google Calendar Controls for Android

Google Calendar's app for Android has been updated with new controls for selecting time, date, timezones, colors and editing repeating events. I wonder if the next Android version will use these controls instead of the existing pickers.

Selecting the time is a 2-part process: you first select the hour and then the number of minutes. The time picker is based on a real 24-hour clock.



Selecting the date is straightforward: Google uses a scrolling calendar that's great for picking a date from the current month or next month. If you want to pick a date from a different year, tap the year and you can quickly switch to 2014, 2015 or any other year.


Here are the standard time/date Android pickers that were previously used by the Google Calendar app. "Each picker provides controls for selecting each part of the time (hour, minute, AM/PM) or date (month, day, year). Using these pickers helps ensure that users can pick a time or date that is valid, formatted correctly, and adjusted to the user's locale."


And here are the original pre-Honeycomb pickers:


The control for repeating events looks much better. "You can now set events to repeat every Tuesday and Thursday, every month, or every 7 weeks, it's completely up to you," informs the Android blog.


Now you can pick different colors for events and calendars:


There's also a different way to select time zones: instead of showing a long list of time zones, countries and regions, Google Calendar lets you enter the country name and it displays the relevant time zones.


I've found it easy to compare the old and new controls because my phone has both the stock Calendar app and the Google Calendar app from Google Play. It's a good idea to disable the notifications for one of the apps if you don't want to get multiple notifications for the same event.

Google's Unified Storage Plans

As previously anticipated, Google's 25GB plan will no longer be available for new users. It was the most affordable storage plan: $2.49/month. Now the cheapest plan offers 100GB for $4.99/month, but it's shared storage that can be used in Google Drive, Gmail, and Google+ Photos.

OLD:


NEW:


"Store up to 15GB in Google Drive, Gmail, and Google+ Photos, and then pay for additional storage as your account grows," informs Google. Paid storage no longer increases Gmail's storage limit to 25GB, but now the entire storage is shared between Google Drive, Gmail, and Google+ Photos.

You can still find the old plans here, so I suggest to choose the 25GB plan if you need more storage because it will be removed soon. You'll also get some additional Gmail storage.

Existing users will keep the old plans. "If your account lapses, your credit card is declined, or you choose to change your storage plan in any way (upgrade or downgrade), you'll be asked to choose from among the new Google Drive storage plans. Once you choose a new plan, you'll no longer be able to switch back to the old one." I still have the plan that offered 20GB of storage for only $5/year.


{ Thanks, Florian K. }

Thursday, May 30, 2013

HTC One, Nexus Edition

After Samsung Galaxy S4, it's time for HTC One to get a Nexus Edition. It will be available on June 26 from Google Play US for $599, $50 less than Samsung's flagship.

"The unlocked device will run on both AT&T and T-Mobile in the United States with support for high-speed LTE data on both networks. This 'Nexus user experience' version will contain 32GB of built-in storage. Much like the special edition Samsung Galaxy S4 unveiled during I/O, Google will be directly handling future software updates," reports The Verge.



The Google Play version of HTC One will run stock Android, but it will have the same hardware like a regular HTC One. For example, it will have an infrared blaster that can't be used by Google's software because the stock Android 4.2 doesn't support IR. It's likely that a future Android update will add native support for infrared sensors.

I've mentioned in the post about Galaxy S4 that the Nexus Edition is great for Google, phone manufacturers, developers and users. Even if you don't buy this phone, you'll be able to install Google's software or a custom ROM that uses it.

Why use the stock Android instead of HTC's Android flavour or Samsung's Android flavour? It doesn't include so much bloatware, it's faster and easier to update. You'll miss features like HTC's Zoe or Samsung's Smart Pause, but you'll get a phone that's more responsive, has a modern interface and can take advantage of the latest software updates. Still, Nexus Edition phones aren't Nexus phones, so don't expect the same experience. The software wasn't designed with this hardware in mind.

Maybe the 'Nexus user experience' project has a different goal: show the difference between the pure Android and custom Android, running on the same devices. Maybe this will convince users that the stock Android is better and phone manufacturers will have to use it or at least provide an option to switch to it. As the stock Android improves, it's time to use it and build upon it, instead of hiding it behind useless features.

Tips for Gmail's Tabs and Categories

Some of you have already seen this screen in Gmail, which shows that the new inbox tabs have been enabled for your account. If not, click the gears button and see if you can find "Configure inbox". Click this menu item and you can use the new feature. If you can't find "Configure inbox", check back later.


There are 5 tabs:

- social messages from sites like Facebook, Twitter, YouTube or Google+

- promotions: newsletters, offers and other bulk messages

- updates: confirmations, bills, receipts

- forums: messages from online groups, discussion boards, and mailing lists (hidden by default)

- primary: shows all the other messages


It's important to keep in mind that the tabs only show the messages from your inbox. If you have filters that automatically archive messages, you'll not see them in the new tabs.

If you've used the SmartLabels feature from Gmail Labs, you can delete the associated labels and filters after disabling the feature. Filters look like this: Matches: label:social-updates Do this: Skip Inbox. SmartLabels had the following names: social updates, promotions, notifications, forums. Inbox tabs replace the SmartLabels feature: instead of archiving messages, you can keep them in your inbox, but in separate tabs.

Here are some tips that should help you use the new feature:

Inbox tips

1. Click the "+" button to hide or show tabs. You can hide all the tabs except Primary to go back to the old inbox. This doesn't disable categorization, so you can use all the tips from the Categories section (starting from #6).



2. Starred messages are added to the Primary tab, but you can disable this option by clicking the "+" button and unchecking "include starred in Primary".

3. Drag inbox messages to a different category or right-click and select "move to tab".

4. Tabs show the number of unread messages and a list of senders. The inbox unread count only shows the number of unread messages from the Primary tab.

5. Keyboard shortcuts:
` Go to the next inbox tab
~ Go to previous inbox tab

Categories tips

6. There's a new Categories list in the sidebar that lets you find all your notifications, promotions, social updates, not just the messages from your inbox. The list is still displayed if you hide some inbox tabs, but you can collapse it. Click "Categories" to see the messages from all the categories.


7. Search for category:updates, category:social, category:forums, category:promotions to find these messages.

8. You can create filters that use these categories. For example, create a filter that forwards all forum-related messages to a different address.

9. Create filters that exclude messages from these categories by enabling "Exclude from SmartLabel categorization" in the filter editing dialog.

10. Help Gmail categorize messages by creating filters and selecting "categorize as". For example, send all messages that include "unsubscribe" to the Promotions category.


11. You can also drag messages to the sidebar categories and use feature like "move to" or "labels" to categorize messages. The list of categories is displayed below your labels.

Watch Android @ Google I/O 2013

Posted by Reto Meier, Android Developer Relations Tech Lead



We had a lot to talk about this year at I/O. We launched Google Play services 3.1 with Google Play games services, improved Location APIs, and Google Cloud Messaging enhancements; Android Studio: A new IDE for Android development based on IntelliJ IDEA Community Edition; and Google Play Developer Console improvements such as app translation service, revenue graphs, beta testing & staged rollouts, and optimization tips.



With the excitement of these announcements behind us, it's time to sit back, relax, and watch all the sessions we missed during the event. To make that easier, we've collected all the Android sessions together in the Android @ Google I/O 13 page on the developer site.



We've also created the Google I/O 13 - The Android Sessions playlist (embedded below), as well as playlists for each developer category: design, develop, and distribute.





For those of you who prefer listening to your I/O talks without the distraction of watching speakers and slides, we're also making the sessions available as part of the Android Developers Live Podcast.



Google I/O is always a highlight on the Android Developer Relations team's calendar, so we'll be keeping the magic alive with our Android Developers Live broadcasts.



This week we resumed our regular broadcasts with Android Design in Action offering a review of Android Design sessions at I/O. Next week will see the return of This Week in Android Development and The App Clinic, and stay tuned for more episodes of Table Flip, GDG App Clinics, and more!



We'll also continue to add new DevBytes and BizDevBytes to offer tips and tricks for improving your apps and making them more successful.



As always you can talk to us and keep track of our upcoming broadcasts, Android Studio news, and other Android developer news on the +Android Developers Google+ page.



No More Gmail Sneak Peek

Gmail had a cool Labs feature that allowed you to read messages without opening them. Message Sneak Peek displayed the first sentences from a message when you right-clicked it. You could use keyboard shortcuts to navigate to the previous or to the next message, so this was a great to quickly read messages.


Here's a screenshot from 2010, when this feature was launched:


The Labs experiment is no longer available and now Gmail has a contextual menu that shows features like "move to inbox", "archive", "delete", "mark as read/unread", "move to tab" (for inbox messages). You can select multiple messages, right click and use one of the features that were also included in the Gmail toolbar.


If you're missing Sneak Peek, try Preview Pane, another Labs experiment that lets you read messages in a vertical/horizontal pane like in Outlook or Gmail for tablets.


Don't forget that "Gmail Labs is a testing ground for experimental features that aren't quite ready for primetime. They may change, break or disappear at any time."

{ Thanks, jp (banana). }

New Gmail Favicon

Gmail has a new favicon that looks like the icon used by Gmail's Chrome app. It's also close to the iOS app's icon.

In this screenshot, the first tab shows new the new favicon, while the second one shows the old favicon. There's also a bigger version of the new favicon.


A similar screenshot for Internet Explorer:


Here's the same icon in Chrome's new tab page. The Gmail app for Chrome is installed by default.


If you don't see the new favicon, reload Gmail using F5 or Ctrl+F5. If you don't like the new icon, you can go back the old one by enabling "Unread message icon" in Gmail Labs. This feature only works in Chrome, Firefox and Opera and it lets you see "how many unread messages are in your inbox with a quick glance at the tab's icon".

Chrome for iOS, Not a Fast Browser

Chrome for iOS doesn't have a lot of things in common with the desktop Chrome or Chrome for Android. It doesn't use the latest WebKit rendering engine and can't switch to Blink, it doesn't use the V8 JavaScript engine, it doesn't have a multi-process architecture. These are iOS limitations and all third-party iOS browsers are built using UIWebView, so they use the same rendering engine and the same JavaScript engine, which is slower than Safari's Nitro (Opera Mini is just an OBML reader, not a browser, because pages are rendered using Opera's servers).

I was surprised to see an ad for Chrome when visiting Google's homepage in Safari for iPad: "Browse fast on your iPad. Install Google Chrome." Chrome for iOS is not fast, it's a lot slower than Safari and that's not Google's fault. It's even a little bit slower than other third-party browsers.


Even the Chrome for iOS homepage claims that you can "browse fast and sign in to bring your Chrome experience from your computer, anywhere you go". Sure, Chrome combines the address bar and the search box, preloads web pages and shows the most visited pages, but it's not a faster browser than Safari.

From Tom's Hardware: "In the end, any third-party Web browser on iOS is essentially tantamount to using an older version of Safari with a slightly different user interface and additional features. Due to Apple's App Store mandate that all third-party iOS browsers utilize Safari's stock engines, browser competition on this mobile operating system is practically non-existent. Unless Apple reverses course, allowing other developers to compete using their own unique rending and JavaScript engines."

Wednesday, May 29, 2013

Handling Phone Call Requests the Right Way for Users

Posted by Dirk Dougherty, Android Developer Relations

One of the things users like most about Android is the flexibility to choose which apps should handle common tasks on their devices — from opening a web page or sending an SMS to playing a music file, taking a picture, or making phone calls. This flexibility is provided by Intents.



Intents give you a powerful way to integrate your apps deeply into the system — users can even choose to let your apps replace functionality provided by system apps. In those cases, it’s essential to make sure that anything your app can’t or doesn’t handle can still be handled properly by the default system app.



Proper implementation and testing are especially important for apps that provide telephony services. Make sure that your app doesn't interfere with emergency calling by listening for the wrong intent — CALL_PRIVILEGED. Follow the best practices below to handle outgoing calls the right way, using the NEW_OUTGOING_CALL intent.



Listening for outgoing call requests



Apps that provide phone calling services (such as VOIP or number management) can set up Intent filters to handle outgoing call requests, such as those made from the Dialer or other installed apps. This provides a seamless integration for the user, who can transition directly to the calling service without having to redial or launch another app.



When the user initiates a call, the system notifies interested apps by sending an ordered broadcast of the NEW_OUTGOING_CALL Intent, attaching the original phone number, URI, and other information as extras. This gives apps such as Google Voice and others a chance to modify, reroute, or cancel the call before it’s passed to the system’s default phone app.



If you want your phone calling app to be able to handle outgoing call requests, implement a broadcast receiver that receives the NEW_OUTGOING_CALL Intent, processes the number, and initiates a call as needed. Make sure to declare an intent filter for NEW_OUTGOING_CALL in the receiver, to let the system know that your app is interested in the broadcast. You’ll also need to request the PROCESS_OUTGOING_CALLS permission in order to receive the Intent.



Note that the system broadcasts NEW_OUTGOING_CALL only for numbers that are not associated with core dialing capabilities such as emergency numbers. This means that NEW_OUTGOING_CALL can not interfere with access to emergency services the way your use of CALL_PRIVILEGED might.



Here’s an example broadcast receiver declared in an app’s manifest file:



<manifest>
<uses-permission android:name="android.permission.PROCESS_OUTGOING_CALLS" />
<application>
...
<receiver android:name=MyOutgoingCallHandler">
<intent-filter>
<action android:name="android.intent.action.NEW_OUTGOING_CALL" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</receiver>
...
</application>
</manifest>


The implementation of the corresponding broadcast receiver would look something like this:



public class MyOutgoingCallHandler extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
// Extract phone number reformatted by previous receivers
String phoneNumber = getResultData();
if (phoneNumber == null) {
// No reformatted number, use the original
phoneNumber = intent.getStringExtra(Intent.EXTRA_PHONE_NUMBER);
}
// My app will bring up the call, so cancel the broadcast
setResultData(null);
// Start my app to bring up the call
...
}
}


Because the NEW_OUTGOING_CALL broadcast is ordered, your app can choose whether to consume the call request itself or simply process the number and pass the result data on to other apps that may be interested. In this example, the broadcast receiver brings up a phone call on it’s own service and sets the result data to null. This prevents the call request from reaching the default phone app.



An anti-pattern



Rather than listening for NEW_OUTGOING_CALL Intents, some apps have mistakenly set up intent filters for CALL_PRIVILEGED Intents as a way to handle outgoing calls. This is not a recommended approach, because the system may send a CALL_PRIVILEGED Intent for any number, including emergency numbers. Since non-system apps can’t reformat emergency numbers or place emergency calls, attempting to handle CALL_PRIVILEGED could inadvertently interfere with access to emergency numbers.



CALL_PRIVILEGED should only be used by apps that have the necessary signatureOrSystem-level permission — it is not designed for use by any third-party apps.



Check your apps for proper use of NEW_OUTGOING_CALL



If your app provides phone calling services and already uses intent filters to handle outgoing call requests, take a few minutes to make sure it is listening for the proper Intent: NEW_OUTGOING_CALL.



If your app includes intent filters that listen for CALL_PRIVILEGED Intents, make sure to remove those filters and related code from the app (in favor of NEW_OUTGOING_CALL) and publish the updated app as soon as possible.

Google Calendar Update for Android: Custom Colors and More

One of the most requested features we’ve seen so far for Google Calendar on Android is the ability to customize event and calendar colors directly from your device. Today’s update allows you to do just that. Now you can highlight those super-urgent meetings and important birthdays, or just switch up the color of your calendar whenever your heart desires.


Adding events is now easier and more fun with our redesigned date and time pickers, which let you schedule your special dinner date or the start of your well-deserved vacation in a snap.


For all of you world travelers, our redesigned timezone picker makes it simpler to find the region that you’re looking for, whether you’re in San Francisco, Tokyo or Zurich.

Finally, it’s easier to schedule repeating events. You can now set events to repeat every Tuesday and Thursday, every month, or every 7 weeks, it’s completely up to you.

The latest version of Google Calendar is built for devices running Android 4.0.3 and above (Android 4.1 or higher for custom event colors). Get it on Google Play, rolling out over the course of the day, and let us know what you think.

Posted by James Kung, Software Engineer

Google's Bigger App Launcher

I've previously posted about Google's experimental app launcher that replaces the black navigation bar. It's the perfect fit for the Chrome integration with Google search, which also removes the search box from Google SERPs.

Google tests a new version of the app launcher in Chrome: it's huge and you can click "more" to see other Google services. I've managed to get the new interface using this URL in Chrome.



If you think "huge" is an exaggeration, take a look at this screenshot and compare it with the screenshots from this post:



{ Thanks, Silviu. }

Gmail's Inbox Tabs

Gmail has a lot of cool features that let you organize mail, but not many people use them. Creating filters is complicated and manually labelling messages is time consuming. That's why Google added features that automatically classify messages: Priority Inbox finds important messages, Smart Labels categorizes messages and lets you find notifications, bulk messages or automatically archive them. Gmail also has different inbox styles that prioritize important messages, starred or unread messages.

Now Gmail's inbox started to include a few tabs powered by Smart Labels, a feature from Gmail Labs. "On the desktop, the new inbox groups your mail into categories which appear as different tabs. (...) Your inbox is organized in a way that lets you see what's new at a glance and decide which emails you want to read when. You can easily customize the new inbox - select the tabs you want from all five to none, drag-and-drop to move messages between tabs, set certain senders to always appear in a particular tab and star messages so that they also appear in the Primary tab."


There are tabs for social updates from sites like Facebook, Twitter, YouTube or Google+, promotions (newsletters, offers and other bulk messages), notifications/updates (confirmations, bills, receipts), forum messages (online groups, discussion boards, and mailing lists) and a primary tab that shows all the other messages. This way, you can focus on important messages and read everything else later. The Smart Labels feature also has a checkbox that allows you to automatically archive messages, so that notifications, newsletters and social updates skip the inbox.


A similar feature will be added to the mobile Gmail apps for iOS and Android.


The nice thing is that inbox tabs are customizable, so you can hide some of them or even all of them.


The new feature will roll out in the coming weeks, but the updated mobile apps should be available sooner. Until then, try Smart Labels.

{ via Gmail Blog. Thanks, Mike. }

Tuesday, May 28, 2013

YouTube's Feeling Lucky

YouTube has a cool feature that generates a playlist of 10 recommended videos. Make sure you are logged in and visit this page.


There's even an experiment that places a "play" button next to the YouTube logo, so you can quickly generate the "I'm Feeling Lucky" serendipitous playlist. If you don't like the playlist, click "play" again.


Here's how you can enable the experimental button. If you use Chrome, Firefox, Opera, Safari or Internet Explorer 8+:

1. open youtube.com in a new tab and log in

2. load your browser's developer console:

* Chrome - press Ctrl+Shift+J for Windows/Linux/ChromeOS or Command-Option-J for Mac

* Firefox - press Ctrl+Shift+K for Windows/Linux or Command-Option-K for Mac

* Opera - press Ctrl+Shift+I for Windows/Linux or Command-Option-I for Mac, then click "Console"

* Safari - check this article

* Internet Explorer - press F12 and select the "Console" tab.

3. paste the following code which changes a YouTube cookie:

document.cookie="VISITOR_INFO1_LIVE=LVXsOMb_c_g; path=/; domain=.youtube.com";window.location.reload();

4. press Enter and close the console.

To go back to the standard UI, follow the same steps, but use the following code:

document.cookie="VISITOR_INFO1_LIVE=; path=/; domain=.youtube.com";window.location.reload();

{ Thanks, Yu-Hsuan Lin. }

Spam From Gmail Contacts?

Gmail shows this message when you mark as spam a mail from your contacts: "Did your contact actually write this message? You marked this message as spam, but the sender is in your contact list. If this message seems suspicious, let us know then tell your contact that their email account might have been compromised and used to send fraudulent messages."


As you probably know, adding someone to your contacts is the best way to make sure that the messages aren't flagged as spam. When you mark a message as spam, it's likely that the following messages sent from the same address will be flagged as spam by Gmail. So there's a conflict and Google tries to fix it by assuming that the email account has been compromised.

"Normally, we'd expect that you would want to get messages from people on your Gmail contact list. So when you mark one as spam, we'd like to understand why. [When you] click 'Message looks suspicious' within the alert, the message will be marked as 'sent from a compromised account,' and you'll send a report to the Gmail team to help us improve our detection of compromised accounts. Your contact's account will not be penalized and you'll continue to receive messages from this account in the future."

Unfortunately for Gmail, the mail that triggered this alert wasn't sent by one of my contacts, so this feature doesn't work well.

Find Gmail Receipts

Here's a way to find your receipt messages from Gmail: search for label:^smartlabel_receipt. This feature is powered by the Smart Label experiment from Gmail Labs, but you don't need to enable that experiment.


I've found receipts from PayPal, Google Play and Google Checkout, order confirmations from eBay, Amazon and other shopping sites. Gmail automatically detects receipts, just like it finds notifications, social updates, forum messages and other categories of messages.

The Smart Label feature from Gmail Labs creates filters that automatically label messages and convert system labels like ^smartlabel_receipt to user labels like Receipts. You can manually do that for receipts: click the arrow from the search box, type label:^smartlabel_receipt in the "has the words" field, click "create filter with this search", click "OK" and ignore the warning, select "Apply the label" and then "new label", create a label called "Receipts", check "Also apply filter to * matching conversations" and click "Create filter". You'll get a receipts label:

Wednesday, May 22, 2013

Google+ Photo Search With Image Recognition

Last year, Google Drive added an advanced image search feature powered by Goggles that recognizes objects and uses OCR technology to extract text. The same feature is now available in Google+: search for [sunflower], click "More", restrict the results to "Photos" and select "Most recent". You'll find sunflower images from Google+ posts that don't even include "sunflower", not even in the image filename.


This also works for the images you've uploaded to Picasa Web Albums/Google+ Photos or the images uploaded by your circles.



{ via Android Police }

Google Trends Charts

Google Trends has a new section that shows monthly popularity charts for topics like scientists, cars, movies, songs, people, animals, chemical elements and more. Charts are limited to the US for now and they show the most popular things, not the "movers and shakers". Google uses the Knowledge Graph to restrict the charts to real-world things and "measures interest in a broader topic, so it might also count different searches with the same meaning".

"Top Charts are lists of real-world people, places and things ranked by search interest. They show information similar to our Year-End Zeitgeist, but updated monthly and going back to 2004. To check them out, go to Google Trends and click 'Top Charts' on the left-hand side," informs Google.


Google Trends shows information from Wikipedia, links to Google+ or other top search results, the number of months in chart and the previous month's rank.


Google also added a Metro-inspired page that lets you visualize hot searches in full screen. Mouse over the top-left icon to show multiple searches at the same time and click the country name at the bottom of the page to switch to a different country.


{ via Google Blog }

A smoother Drive app for Android

(cross-posted to the Google Drive Blog)

The process of creating and accessing your stuff shouldn’t be, well...a process. Today, the Drive app for Android is getting several improvements to make creating and accessing your stuff on-the-go even easier.
To help you find the content you care about, Drive files will now be displayed in a clean, simple card-style. You can swipe between files to see large previews that let you quickly review and discover the information you’re looking for. And if you want to keep some Drive files on your Android device, you’ll now be able to “download a copy” from the actions menu inside settings.


The updated Drive for Android app also gives you to a way to keep track of important paper documents like receipts, letters, and billing statements. Simply click “Scan” from the Add New menu, snap a photo of your document, and Drive will turn the document into a PDF that’s stored for safekeeping. And because Drive can recognize text in scanned documents using Optical Character Recognition (OCR) technology, a simple search will retrieve the scanned document later. No more frantic scrambling through drawers looking for a receipt or digging through your pockets to find that business card -- just scan, upload and search in Drive.


The editing experience in Google Sheets has also gotten some improvements: now you can adjust font types and sizes for a spreadsheet and tweak the cell text colors and cell alignment right from the app. Plus, the Drive app comes with Cloud Print support so you can print anything from Drive with a Cloud Ready printer -- perfect if you need to, say, print that extra resume right before a job interview.

Get the Google Drive app today on Google Play and circle us on Google+ for continued updates. 

Posted by Denis Teplyashin, Software Engineer