Barcelona: Mobile First

Last week at Mobile World Congress, where more than 55,000 people gathered in Barcelona to see what the coming year holds for mobile phones and computers, Eric Schmidt had the unique opportunity to reflect on achievements in the mobile space, and to discuss what lies ahead - both for the industry and for Google. With the continued growth of smartphone usage -- increasing by more than 30% year over year, with mobile web adoption proceeding at a rate that is eight times faster than the equivalent point ten years ago for the desktop, with more than half of the new Internet connections coming from mobile devices -- it's clear that we're experiencing a fundamental shift in how we access information.



So how did we get here and what's in store?

Back in December, I pointed to the convergence of three trends: computing, connectivity, and cloud computing. Eric described these in more detail last week. Basically, devices are getting smaller, faster, cheaper, and more powerful; the same is true of processors. Today, roughly 700 million public servers are connected by the Internet, and this pervasive connectivity is being driven further into our daily lives, as evidenced by individuals, companies, and even the US Embassy in Beijing increasingly relying on services like Twitter to constantly share information. Finally, cloud computing not only is essential for storage of sophisticated amounts of data, which can be accessed by multiple devices, but also is paving the way for a new generation of applications and powerful, interlinked systems. These three waves are not new, nor is their intersection. What is new, however, is that the point of intersection is now a phone - a phone that's blazingly fast, is connected to the Internet, and leverages the power of the cloud. Comparing today's possibilities with what was possible 25 years ago, and then thinking ahead 25 years from now, it's incredibly exciting to imagine what we might be able to do.

Clearly, the mobile phone is the iconic device of the moment, and we're encouraging a new rule: Mobile First. When we announce new services for desktop computers, such as real-time search, we will debut an equally powerful mobile version. We will take advantage of this new class of smartphone, which is more sensory, acts as an extension of you, is aware of location, and can hear you, speak to you, take pictures and return information in a matter of seconds. We opened the year with a new model for purchasing a mobile phone, and since then, we've also made it possible to see a list of nearby businesses from google.com, developed a web app for Google Voice, made ads more useful by including a clickable local phone number, let you attach location to your Buzz posts, and we're just getting started. You can look forward to seeing support for more languages in Google Search by voice - German is coming soon. We're working to make it possible to take a picture of text and translate it to any of the 52 languages supported in Google Translate, and we have lots of other ideas up our sleeves.

We're proud to be part of this shift and excited to broaden expectations for what's possible on a mobile device.

Update, 5:16PM 3/1/10 - This video has been updated to include an introductory video that played before Eric's speech.

Google Earth now available for Android

(Cross-posted from Google LatLong)
As we hinted at last month, we knew Nexus One was going to be a great platform to showcase the rich (and technically demanding!) features of Google Earth. With a 1GHz processor, advanced 3D graphics, and Android 2.1, Nexus One packs a lot of performance in a thin package. Ever since we got our hands on one, we have been putting it through its paces, drawing complex scenes of 3D imagery, terrain, roads, and other layers, and Nexus One never misses a beat. Now that we have put the final touches on the app, we are happy to announce that the latest member of our family is ready for the world -- Google Earth for Android. This is our fastest mobile version of Google Earth yet, with a smooth framerate and a beautiful 800 x 480 screen.

With the release of Google Earth for Android, we are also introducing the Roads layer, a very popular feature of the desktop version of Google Earth. Now you can get a better sense of where you are with road labels drawn on top of the satellite imagery.


In addition, we have taken advantage of the integrated voice recognition capabilities of the Android platform to provide the best Google Earth experience yet -- a pocket globe that responds to your every command. Try speaking "Eiffel tower" or "best burrito Mission district of San Francisco." Maybe you're trying to find some nice lodging for an upcoming getaway to Lake Tahoe. Just say "romantic getaway Lake Tahoe." With Google Earth for Android, we have brought together the convenience of Google Search by voice with the power of Google Local Search to make it easier than ever to navigate the globe and find whatever you are looking for.



As with other versions of Google Earth, you can also browse photos, places, and local businesses, whether it is in your local community or on the far side of the globe. Click on an icon to see photos, videos, and read about prominent places in the world. You can easily customize your version of Google Earth to display the layers that most interest you.

In addition to Nexus One, Google Earth will be available in Android Market on most devices that have Android 2.1 or later versions. So as devices such as Droid get updated to Android 2.1, others will also be able to fly to the far reaches of the globe with a swipe of their finger.

Download Google Earth for Nexus One today by searching for Google Earth in the Android Market.


Shopping smarter with Google Shopper

We're happy to announce a new Android application called Google Shopper. Shopper lets you find product information quickly by using your phone's camera. It can recognize cover art of books, CDs, DVDs, and video games, along with most barcodes. You can also speak the name of the product you're looking for. Use Shopper to make smart decisions about what to buy, what price to pay, and where to buy it. You can star items for later and share them with friends. Shopper also saves your history so you'll always have product and price information at your fingertips, even when you don't have a signal.

Here's an example search based on the Effective Java: Programming Language Guide.

To see Google Shopper in action, watch this video:


To download Google Shopper to your Android-powered phone, scan the QR Code below, or search for "Shopper" on Android Market. You'll see a green icon for Shopper by Google. Click install and happy shopping!


For more information about Google Shopper, take a look at our Google Labs page. We hope you send us your feedback.

Integrating translation into Google Goggles

(cross-posted with Google Translate Blog)

Yesterday, at the Mobile World Congress in Barcelona, Eric Schmidt and I demonstrated a prototype version of Google Goggles that showcases the potential of integrating Google's machine translation and image recognition technologies. In the video below, you'll see how we use Goggles to take a picture of a German menu and instantly translate the text into English:


You may wonder what's happening in the background. On the simplest level, this prototype connects the phone's camera to an optical character recognition (OCR) engine, recognizes the image as text and then translates that text into English with Google Translate.

Right now this technology only works for German-to-English translations and it's not yet ready for prime time. However, it shows a lot of promise for what the future might hold. Soon your phone will be able to translate signs, posters and other foreign text instantly into your language. Eventually, we're hoping to build a version of Google Goggles that can translate between all of the 52 languages currently supported by Google Translate — bringing even more information to you on the go.

Free Download Qur'an MP3 | Complete Quran MP3 Files

Informasi tentang Free Download Qur'an MP3 - Complete Quran MP3 Files bagi Anda yang ingin men-download gratis ayat-ayat Al-Qur'an dalam bentuk mp3 sehingga dapat dengan mudah Anda dengarkan ketika sambil bekerja, ngeblog, momong bayi Anda dan lain sebagainya.Anda bisa mendapatkan Free Download Qur'an MP3 disini. Saya akan memberikan link download Al-Qur’an lengkap dalam bentuk MP3 dimana saya

Let the games begin!

The festivities begin this Friday in Vancouver, and we're all holding our breath to see who brings home the gold. Perhaps you're rooting for Lindsey Vonn or Shaun White or Sven Kramer. No matter who your favorite athlete is, you can keep up with the latest news on your phone.

Just do a search for the name of your favorite sport, and you can see the latest info about game results, schedules, medal count, and more right above the search results. On Android and iPhone devices, our Real Time Search feature will also reveal the latest updates related to the games within the same search results. (We're offering the same info and more for people searching on computers.) Looking for something more in-depth? Follow along using Google News for mobile. You can find quick links by going to google.com/games10/m on your phone.



Service API changes starting with Android 2.0

Service API changes starting with Android 2.0

Watching developers use the Android platform the last year has shown a number of trouble areas in the Service API as well as growing issues in the ways services operate. As a result, Android 2.0 introduced a number of changes and improvements in this area for both developers and users.

The three main changes to be aware of are:

  • Service.setForeground() is now deprecated and in 2.0 does nothing.
  • There were many edge cases in the service lifecycle that made it very easy to accidentally leave a service running; new APIs in 2.0 make this much easier to deal with.
  • Android 2.0 also introduces a new UI for end users to monitor and manage the running services on their device.

Background on services

Before going into the details of 2.0, it may be useful to go over a quick summary of services. The Service API in Android is one of the key mechanisms for applications to do work in the background. Due to the way Android is designed, once an application is no longer visible to the user it is generally considered expendable and a candidate to be killed by the system if it ever needs memory elsewhere. The main way applications get around this is by starting a Service component, which explicitly tells the system that they are doing some valuable work and would prefer that the system not kill their process if it doesn't truly need to.

This is a very powerful facility but along with that power comes some responsibility: an actively running service is taking resources away from other things that can run (including inactive processes in the background that don't need to be initialized the next time the user visits them). It is thus important that developers take care when designing their services that they only run when truly needed and avoid any bugs where they may accidentally leave the service running for long durations.

Redesigning Service.setForeground()

During the final stabilization period of Android 1.6 we started to see more issues due to an increasing number of applications using the Service.setForeground() API when they shouldn't be. This is an API that we haven't advertised much because it should not be used by most applications and can be very hard on the system: it asks that the service's process be treated as in the foreground, essentially making it unkillable and thus more difficult for the system to recover from low memory situations.

At that point in 1.6 it was too late to make any significant changes to the behavior here, but in 2.0 we have done so: Service.setForeground() now does nothing. The API was always intended to be something a service would do in conjunction with putting up an ongoing notification for the user; by saying you are in the foreground, the user should be "aware" that the service is running in some way and know how to stop it. Thus in place of the old API Andriod 2.0 introduces two new APIs that require a notification go along with being in the foreground:


public final void startForeground(int id, Notification notification);
public final void stopForeground(boolean removeNotification);

This also not coincidentally makes it much easier to manage the notification state along with the service, since the system can now guarantee that there is always a notification while the service is in the foreground, and that the notification goes away whenever the service does.

Many developers will want to write a service that works on older platforms as well as 2.0 and later; this can be accomplished by using something like the following code to selectively call the new APIs when they are available.


private static final Class[] mStartForegroundSignature = new Class[] {
int.class, Notification.class};
private static final Class[] mStopForegroundSignature = new Class[] {
boolean.class};

private NotificationManager mNM;
private Method mStartForeground;
private Method mStopForeground;
private Object[] mStartForegroundArgs = new Object[2];
private Object[] mStopForegroundArgs = new Object[1];

@Override
public void onCreate() {
mNM = (NotificationManager)getSystemService(NOTIFICATION_SERVICE);
try {
mStartForeground = getClass().getMethod("startForeground",
mStartForegroundSignature);
mStopForeground = getClass().getMethod("stopForeground",
mStopForegroundSignature);
} catch (NoSuchMethodException e) {
// Running on an older platform.
mStartForeground = mStopForeground = null;
}
}

/**
* This is a wrapper around the new startForeground method, using the older
* APIs if it is not available.
*/
void startForegroundCompat(int id, Notification notification) {
// If we have the new startForeground API, then use it.
if (mStartForeground != null) {
mStartForegroundArgs[0] = Integer.valueOf(id);
mStartForegroundArgs[1] = notification;
try {
mStartForeground.invoke(this, mStartForegroundArgs);
} catch (InvocationTargetException e) {
// Should not happen.
Log.w("MyApp", "Unable to invoke startForeground", e);
} catch (IllegalAccessException e) {
// Should not happen.
Log.w("MyApp", "Unable to invoke startForeground", e);
}
return;
}

// Fall back on the old API.
setForeground(true);
mNM.notify(id, notification);
}

/**
* This is a wrapper around the new stopForeground method, using the older
* APIs if it is not available.
*/
void stopForegroundCompat(int id) {
// If we have the new stopForeground API, then use it.
if (mStopForeground != null) {
mStopForegroundArgs[0] = Boolean.TRUE;
try {
mStopForeground.invoke(this, mStopForegroundArgs);
} catch (InvocationTargetException e) {
// Should not happen.
Log.w("MyApp", "Unable to invoke stopForeground", e);
} catch (IllegalAccessException e) {
// Should not happen.
Log.w("MyApp", "Unable to invoke stopForeground", e);
}
return;
}

// Fall back on the old API. Note to cancel BEFORE changing the
// foreground state, since we could be killed at that point.
mNM.cancel(id);
setForeground(false);
}

Service lifecycle changes

Another situation we were increasingly seeing in 1.6 was that, even ignoring the services that inappropriately make themselves foreground, we had a growing number of devices with a large number of services running in the background all fighting each other over the available memory.

Part of this problem is services that are running more than they should or there simply being too much stuff trying to be done on the device. However, we also found many issues in the interaction between services and the platform that made it easy for an application to leave a service running even when it is trying to do the right thing. Consider this typical scenario:

  1. An application calls startService().
  2. That service gets onCreate(), onStart(), and then spawns a background thread to do some work.
  3. The system is tight on memory, so has to kill the currently running service.
  4. Later when memory is free, the service is restarted, and gets onCreate() called but not onStart() because there has not been another call to startService() with a new Intent command to send it.

Now the service will sit there created, not realizing it used to be doing some work, and so not knowing it should stop itself at some point.

To address this, in Android 2.0 Service.onStart() as been deprecated (though still exists and operates as it used to in previous versions of the platform). It is replaced with a new Service.onStartCommand() callback that allows the service to better control how the system should manage it. The key part here is a new result code returned by the function, telling the system what it should do with the service if its process is killed while it is running:

  • START_STICKY is basically the same as the previous behavior, where the service is left "started" and will later be restarted by the system. The only difference from previous versions of the platform is that it if it gets restarted because its process is killed, onStartCommand() will be called on the next instance of the service with a null Intent instead of not being called at all. Services that use this mode should always check for this case and deal with it appropriately.
  • START_NOT_STICKY says that, after returning from onStartCreated(), if the process is killed with no remaining start commands to deliver, then the service will be stopped instead of restarted. This makes a lot more sense for services that are intended to only run while executing commands sent to them. For example, a service may be started every 15 minutes from an alarm to poll some network state. If it gets killed while doing that work, it would be best to just let it be stopped and get started the next time the alarm fires.
  • START_REDELIVER_INTENT is like START_NOT_STICKY, except if the service's process is killed before it calls stopSelf() for a given intent, that intent will be re-delivered to it until it completes (unless after some number of more tries it still can't complete, at which point the system gives up). This is useful for services that are receiving commands of work to do, and want to make sure they do eventually complete the work for each command sent.

For compatibility with existing applications, the default return code for applications that are targeting an earlier version of the platform is a special START_STICKY_COMPATIBILITY code that provides the old behavior of not calling onStart() with a null intent. Once you start targeting API version 5 or later, the default mode is START_STICKY and you must be prepared to deal with onStart() or onStartCommand() being called with a null Intent.

You can also easily write a Service that uses both the old and new APIs, depending on the platform. All you need to do is compile against the 2.0 SDK with this code:


// This is the old onStart method that will be called on the pre-2.0
// platform. On 2.0 or later we override onStartCommand() so this
// method will not be called.
@Override
public void onStart(Intent intent, int startId) {
handleStart(intent, startId);
}

@Override
public int onStartCommand(Intent intent, int flags, int startId) {
handleStart(intent, startId);
return START_NOT_STICKY;
}

void handleStart(Intent intent, int startId) {
// do work
}

New "running services" user interface

Our final issue to address is the case where there are simply too many service running in the amount of memory available on a device. This may be due to bugs or design flaws in installed applications, or the user simply trying to do too much. Historically users have had no visibility into what is going on at this level in the system, but it has become important to expose this, at least for lower-end devices, as the use of services has had an increasing impact on the user experience.

To help address this, Android 2.0 introduces a new "Running Services" activity available from the Application system settings. When brought up, it looks something like this:

Running Services

The main content is a list of all running services that may be of interest to the user, organized by the processes they run in. In the example here, we see three services:

  • GTalkService is part of the standard Google application suit; it is running in Google's "gapps" process, which currently consumes 6.8MB. It has been started for 3 hours 55 minutes, which on this device is the time from when it was first booted.
  • ActivityService is part of the Phonebook app, and its process consumes 4MB. This also has been running since boot.
  • SoftKeyboard is a third party input method. It has been running since I switched to it, about 4 minutes ago.

The user can tap on any of these services to control it; for normal services that are running because they were explicitly started, this will present a dialog allowing the user to explicitly stop it:

Stop Service

Some other services, like the input method, are running for other reasons. For these, tapping on the service will go to the corresponding UI to manage it (in this case the system's input settings).

Finally, along the bottom of the screen are some obscure numbers. If you know how to interpret them, this gives you a lot of information on the memory status of your device:

  • Avail: 38MB+114MB in 25 says that the device has 38MB of completely free (or likely used for unrequired caches) memory, and has another 114MB of available memory in 25 background processes it can kill at any time.
  • Other: 32MB in 3 says that the device has 32MB of unavailable memory in 3 unkillable processes (that is, processes that are currently considered to be foreground and must be kept running)

For most users, this new user interface should be a much more effective way to manage the background applications on their device than the existing "task killer" applications. In the vast majority of cases the reason for a slow running device is too many services trying to run. This prevents the system from being able to run any background processes (which speed up app switching), and ultimately can result in thrashing through the services when not even they can all be kept running. The Running Services UI is intended to provide very specific information about the services that are running, to help make a good decision about what should be stopped. It also does not use the API to force stop an application, which can unintentionally break applications in numerous ways.

For developers, this is an important tool to ensure your services are well behaved. As you develop your app, be sure to keep an eye on Running Services to ensure that you are not accidentally leaving your services running when they shouldn't be. You should also now keep in mind that users may freely stop any of your services as they wish, without your control, and account for that.

Android's Services are a very powerful tool, but one of the main and subtle ways that application developers can harm the overall experience a user has with their phone.

A new look for Google Search for mobile

We're always looking for ways to improve your user experience with our products. If you use Google Search with a web browser on your Android-powered device or iPhone, you'll see some changes to the look of the buttons and toolbars to a style you may now be familiar with on Mobile Gmail, Latitude, Calendar and Tasks. As with these Google apps, the color contrast of the style now adds more focus to the search results of the page, and the header controls are bigger to make them easier to touch.

The Google logo has been moved up to the top of the search results page, allowing us to increase the width and height of the search box. You can now more easily touch the larger box to enter a new search, the new big bold font makes it easier to see what you have entered, and the wider box helps you see more characters at once.


We have also given our homepage some love. While this got the bigger search box last month, we have created a new search button beside the search box rather than below, so when search suggestions appear, they no longer hide the button.


Just go to www.google.com on your phone to try it out, and let us know what you think.

Introducing Google Buzz for mobile: See buzz around you and tag posts with your location.

Today we announced Google Buzz, a new product that integrates with your Gmail inbox and makes it easy to start rich conversations about the things you find interesting. Google Buzz lets you share web links, photos, videos, and more with those who are important to you. Rather than simply creating a mobile version of Buzz, we decided to take advantage of the unique features of a mobile device - in particular, location. We go through many experiences when we're on the go, and while there are lots of ways to share these experiences with your friends or even the world, there isn't always an easy way to let your audience know where you are when you post. Your location brings valuable context to the information you share. For example, does "Delicious dinner!" mean you're at a great restaurant, or that you had a wonderful home-cooked meal? Your mobile phone, which is with you almost all the time, can help answer these questions.

Google Buzz for mobile allows you to post buzz and keep up with your friends when you're away from your computer. It also uses your location to identify places around you. You can select one of these places and attach it as location tag to your posts, or read what others have posted about the place.

There are several ways to use Google Buzz on your mobile phone:
* Buzz.google.com: This web app provides access to Buzz from your iPhone or Android phone's browser, allowing you to view and create buzz messages. It has two different views: 'Following' view shows buzz from the people you follow, just like Google Buzz in your Gmail; 'Nearby' view shows public buzz that has been tagged with a location near you, and might be from people you don't follow. From Nearby view, you can also select a specific place from the list of nearby places and view posts attached to that place.

* Buzz on Google Maps for mobile: The new Buzz layer allows you to see buzz near you or anywhere on the map. You can post public buzz directly from the layer, and even attach a photo from your phone. Also, try visiting a mobile Place Page to read recent comments or to post buzz about that place. You can access Place Pages from the web app as well, by tapping on the place name in any location-tagged post.

* Buzz Shortcut from Google.com: You will see the buzz icon in the top right corner of the google.com homepage. Just tap on the icon to trigger the posting box.

* Voice Shortcut: The voice shortcut, which is available in the quick search widget on Android and in Google Mobile App on iPhone, allows you to post buzz without typing anything. Just say 'post buzz,' followed by whatever you'd like to post.



When adding location to buzz posts, we focused on places, not just a lat/long location or an address. We wanted to make location information more useful both to your followers and to help others discover information about nearby places. If you don't want to include your location when you post buzz, it's easy to exclude your location and post without it. You also control whether your buzz posts will be public or private - by default or for individual posts. While anyone can access your public posts, private posts are viewable only by the people you choose to share them with.

With Buzz for mobile, we hope you can start interesting conversations about places and be more spontaneous when you are out and about. How many times have you missed a fun event, even though it was nearby? Or a better choice of dessert, just because you didn't know about it? How often have you wondered "Where are you?" when reading a text message from a friend? Now, you can use Buzz to learn that there is going to be a movie night at your favorite park, share with the world that there is an awesome ice cream place right around the corner, or tell your friends about that delicious homemade lasagna.

To start using Buzz for mobile, go to buzz.google.com from your phone's browser. It is currently available for Android and iPhone, but we're working to bring it to other platforms. The Buzz layer on Google Maps for mobile is available on Android, Windows Mobile, Symbian, and iPhone (as web maps). Learn more in our Help Center.

Update @4:40PM : For Android users, buzz.google.com and shortcuts are currently available only for phones with Android 2.0+ and we're working to support other versions soon. Google Maps for mobile with Buzz (Maps 4.0) is available in Android Market for phones with Android 1.6+.

Live wallpapers

With the introduction of live wallpapers in Android 2.1, users can now enjoy richer, animated, interactive backgrounds on their home screen. A live wallpaper is very similar to a normal Android application and has access to all the facilities of the platform: SGL (2D drawing), OpenGL (3D drawing), GPS, accelerometers, network access, etc. The live wallpapers included on Nexus One demonstrate the use of some of these APIs to create fun and interesting user experiences. For instance, the Grass wallpaper uses the phone's location to compute sunrise and sunset times in order to display the appropriate sky.

Creating your own live wallpaper is easy, especially if you have had previous experience with SurfaceView or Canvas. To learn how to create a live wallpaper, you should check out the CubeLiveWallpaper sample provided with the Android 2.1 SDK; you will find it in the directory platforms/android-2.1/samples/CubeLiveWallpaper.

A live wallpaper is very similar to a regular Android service. The only difference is the addition of a new method, onCreateEngine() whose goal is to create a WallpaperService.Engine. The engine is responsible for handling the lifecycle and the drawing of a wallpaper. The system provides you with a surface on which you can draw, just like you would with a SurfaceView. Drawing a wallpaper can be very expensive so you should optimize your code as much as possible to avoid using too much CPU, not only for battery life but also to avoid slowing down the rest of the system. That is also why the most important part of the lifecycle of a wallpaper is when it becomes invisible. When invisible, for instance because the user launched an application that covers the home screen, a wallpaper must stop all activity.

The engine can also implement several methods to interact with the user or the home application. For instance, if you want your wallpaper to scroll along when the user swipes from one home screen to another, you can use onOffsetsChanged(). To react to touch events, simply implement onTouchEvent(MotionEvent). Finally, applications can send arbitrary commands to the live wallpaper. Currently, only the standard home application sends commands to the onCommand() method of the live wallpaper:

  • android.wallpaper.tap: When the user taps an empty space on the workspace. This command is interpreted by the Nexus and Water live wallpapers to make the wallpaper react to user interaction. For instance, if you tap an empty space on the Water live wallpaper, new ripples appear under your finger.
  • android.home.drop: When the user drops an icon or a widget on the workspace. This command is also interpreted by the Nexus and Water live wallpapers.

Please note that live wallpaper is an Android 2.1 feature. To ensure that only users with devices that support this feature can download your live wallpaper, remember to add the following to your manifest before releasing to Android Market:

  • <uses-sdk android:minSdkVersion="7" />, which lets Android Market and the platform know that your application is using the Android 2.1 version.
  • <uses-feature android:name="android.software.live_wallpaper" />, which lets the Android Market and the platform know that your application is a live wallpaper.

Many great live wallpapers are already available on Android Market and we can't wait to see more!

The AdSense for Mobile Apps Team goes to Barcelona

This month is the annual Mobile World Congress in Barcelona, where the mobile industry gathers to present its latest innovations and the coolest new gadgets. As you may know, our CEO Eric Schmidt will be one of the keynote speakers this year, and we recently announced a special Android Developer Lab, as part of App Planet. In addition, I'm excited to let you know that the AdSense for Mobile Applications team will also be on the ground and answering questions. So if you're going too, keep an eye out for us!

AdSense for Mobile Applications
, which launched in beta last summer, allows you to place targeted text and image ads on your apps. The developer toolkit makes it easy to integrate the ads, and you can also filter out ads that you don't want to appear. We'll be hosting two informal sessions - February 16 at 9am and February 17 at 5:30pm - where you'll be able to talk to us face-to-face and ask any questions you may have. Space is limited to 25 people per session, so sign up soon if you'd like to attend.

See you in Barcelona!

posted by: Mike Schipper, AdSense for Mobile Apps team

Bringing more administrative controls to Google Apps for mobile

Last September we announced Google Sync with push Gmail support and 2-way sync for calendar and contacts for iPhone, Nokia E series, and Windows Mobile devices.

Tomorrow we are taking the next step towards access from any location, on any device by launching new administrative controls that give these devices mobile access to Google Apps. Without having to deploy any additional software or manage enterprise mobile services, Google Apps Premier and Education customers will be able to manage their employees' mobile devices right from the Google Apps administration control panel.

These controls will enable new administrative policies for employees using iPhones, Windows Mobile devices, and Nokia E series phones including:
  • Remotely wipe all data from lost or stolen mobile devices
  • Lock idle devices after a period of inactivity
  • Require device passwords on each phone
  • Set minimum lengths for more secure passwords
  • Require passwords to include letters, numbers and punctuation



For more information on how businesses can take advantage of this new functionality, check out our post on the Enterprise blog.

Take your places and searches to go with Google Maps for mobile

If you often use both a computer and a mobile phone in your daily routine, it can seem like a hassle when they don't stay in sync. You might spend time on your computer looking for a great used bookstore, only to forget the name of the place when you are ready to get directions from your phone. Sure, you could print directions in advance, but we believe smartphones are "smart" because they save you time. That's why today we're making your phone a bit smarter with the introduction of personalized suggestions and synchronized starring in Google Maps for mobile on Android.

Personalized suggestions make it easy to find places you've previously searched for. For example, imagine you're on your computer and you come across the Place Page for Mario's Bohemian Cigar Store Cafe. After reading reviews, you decide to stop in for lunch. When you're ready to go and want to get directions, just open Google Maps on your phone, start typing "mar," and you'll quickly see a suggestion - saving you from re-typing a long query and making it easier and faster to be on your way.













In addition, starring is a great way to save places to access them later. So whether you're standing at Amoeba Music with your phone or making plans to go there on your computer, you can star it so it appears on the map next time you're on either device. When viewing place details, just press the star icon next to the place name; these starred places are automatically synchronized between desktop and mobile, and can be accessed from both the "More" menu on your phone and from the My Maps tab on your computer.













Starring and personalized suggestions both require you to be signed in with your Google account, and your Web History must be enabled in order to use personalized suggestions.With synchronized starring and personalized suggestions, we hope to make your life easier when taking places and searches between your computer and phone. Both features are available in Google Maps 3.4. On Nexus One phones, you'll get this version of Maps after you accept the over-the-air update that started today. For other Android devices, starring and personalized suggestions will soon be available by downloading Google Maps 3.4 from Android Market. Lastly, be sure to check out the newly added "night mode" in Navigation, which will automatically turn on for easier Navigation viewing at night.