Why a Google antitrust investigation is a mistake

After years of suspicion and finger-pointing by competitors and would-be competitors, Google is finally coming under the scrutiny of federal antitrust regulators, with a Senate committee hearing scheduled to begin on Wednesday in Washington . Its critics say that the web giant has a monopoly in both search and search-related advertising, and that Google uses this market power — and the billions in cash it generates — to harm its competitors and to finance the company’s moves into new markets and services , giving it an unfair advantage. But the fact is that just like a similar federal investigation into Microsoft over a decade ago, subjecting Google to an antitrust inquisition is likely to be a massive waste of time and effort . The hearing before the Senate Judiciary Committee on Antitrust, which is entitled “ The Power of Google: Serving Consumers or Threatening Competition? ,” is separate from the inquiry launched by the Federal Trade Commission earlier this year , but the issues that are being investigated are fundamentally the same — namely, is Google simply a strong (and possibly even dominant) web player that is competing fairly, or is it using its market position to tip the balance in its favor and crush its competitors? After initially saying it wouldn’t testify before the committee, Google has sent chairman and former CEO Eric Schmidt to give evidence, and others who have been asked to appear include Yelp co-founder and CEO Jeremy Stoppelman and lawyer Thomas O. Barnett, a former federal Assistant Attorney General for Antitrust. Is Google playing favorites in search? The testimony from Stoppelman in particular could be interesting, since Google has had a somewhat tumultuous relationship with the restaurant-review site over the past year or so: after trying and failing to acquire the company in 2009, Google started including Yelp reviews in its Google Places service, but was slammed for doing this by Stoppelman. The search giant then removed Yelp reviews, and agreed to buy review-aggregation service Zagat . Google has been through something similar with group-buying service Groupon — it failed to acquire the company for $6 billion , and has been buying up other group-buying services to bulk up its own Google Offers business. One thing that Yelp’s CEO said about Google’s behavior could lead to some fairly pointed questions from the Senate committee. In an interview with The Telegraph , Stoppelman said that when he complained about Google scraping Yelp’s reviews, the company told him that if he didn’t like it, he could have his service’s results removed from Google’s entire search index altogether. To some, this might sound like an ultimatum — if you don’t play ball with Google and let your reviews be scraped, we’ll make sure you disappear from search. That sums up one of the core complaints about Google and its dominance. Because it controls an estimated 65 percent of the online search business, and because search is still one of the central ways in which people experience the web, the company has a huge amount of influence over the traffic that goes to websites and services like Yelp. And because the company doesn’t talk about how it ranks results — and tends instead to offer platitudes about its desire to help users find the best content and make the world a better place — there are all kinds of suspicions and conspiracy theories about how Google promotes certain companies and demotes others. Does Google use its monopoly power to enter new markets? To compound the problem, Google now plays in a lot more markets than just pure search, and some of those moves have effectively made it a competitor to companies like Yelp and Expedia, and to companies like Apple as well , thanks to its growing Android platform and operating system. In addition to companies like Zagat, Google has also acquired travel-information site ITA — which provides the data that services like Expedia rely on — and has agreed to acquire Motorola , which will give it control of thousands of mobile-technology related patents that it can use to bolster Android. So the charges are two-fold: one is that Google uses its dominance in search to steer users toward its own properties and services, and away from those of its competitors — instead of engaging in what some call “search neutrality,” by providing completely objective search results. The second is that Google uses the cash generated by its monopoly position in search and search-related advertising to fund money-losing businesses that compete with others, such as its Android business. Just as Microsoft used its monopoly on operating systems to promote its own products and services such as Internet Explorer, so Google tips the scales in its own favor, its critics say. This comparison to Microsoft is where the case gets the weakest, however — and the lessons learned from the software giant’s antitrust case (if any lessons were learned at all) suggest that a full-fledged investigation of Google would likely be a waste of both time and money. When it comes to abusing market power, being able to theoretically force computer vendors to put copies of your OS and links to all your related services on their PCs is significantly different from what Google is able to do: as the company often points out , no one is forced to use Google to do a search of the web if they don’t want to. Is Google disrupting others, or being disrupted? Not only that, but as Google has come to realize, the search business itself is changing rapidly. Now, social activity that occurs on networks like Facebook and Twitter drives huge amounts of traffic and influences behavior far more than a raw search arguably does — which is why Google has made repeated efforts to get into the social-web game, with Google+ its most recent attempt . It needs to be able to figure out the social signals that are occurring on these networks, which make both Facebook and Twitter competitors of sorts — or potential competitors. But despite its growth, Google+ is still far from being a dominant player, just as Android is far from being a dominant force in mobile. Supporters of the Microsoft antitrust trial might like to argue that it was a success, but what did it really accomplish? At most, it made Microsoft a little less aggressive, and tied it up in red tape and hearings for several years, which made it less able to adapt to the changes going on around it — and that was the real penalty. As one prominent study of the Microsoft case and other similar antitrust cases has argued, dominant players in the world of technology like Microsoft and AT&T are rarely unseated by governments or antitrust moves — in most cases, they are overtaken by the rapid changes in their industry, which disrupt them far faster and more completely than any government could. In every other market apart from search, Google is either an also-ran or a relatively minor player, despite its billions of dollars in ad money. And in search, its dominance arose from providing a service that was quantitatively better than others — one that neither companies nor individuals are forced to use — and it exists in a market with virtually no barriers to entry and a large and well-funded competitor. As even a former antitrust expert involved in the Microsoft case has argued, it’s going to be awfully tough to construct a compelling antitrust argument on that kind of shaky foundation. Post and thumbnail photos courtesy of Flickr user Mark Strozier Related research and analysis from GigaOM Pro: Subscriber content. Sign up for a free trial . Flash analysis: Steve Jobs Flash analysis: the tech startup investment environment, Q3 2011 Flash analysis: Collaborative consumption – a first look at the new web-sharing economy

View original post here:
Why a Google antitrust investigation is a mistake

Top 5 Busiest Airports of 2011

Spend any time browsing Google Maps or Earth and you’ll soon spot an airport – they’re usually easy to spot thanks to their massive size. To save you some browsing time, we’ve put together a brand new list of 2011′s busiest airports, all measured by the number of passengers running through the terminals. 1 5. Los Angeles International Airport (LAX) Starting out at number 5, we find ourselves in the never-ending sun of Los Angeles, California. Between January and May 2011, the Los Angeles International Airport served an astonishing 24,230,832 passengers , all while competing with four other airports in the Los Angeles area. LAX is designed so that each terminal’s arrival gate feeds directly to the exit, and its eastbound approach over the Pacific Ocean is known for terrifying new flyers! 4. O’Hare International Airport (ORD) Nestled west of downtown Chicago we find the fourth busiest airport in the world, O’Hare International Airport. ORD is perhaps the most intriguing airport on our list to look at from above, due to its centralised design being surrounded by six intersecting runways. From January to May of 2011, O’Hare handled 25,986,415 passengers in its busy and sometimes frantic terminals . The weather around Chicago has been known to leave its mark on O’Hare as well – in 2010 1 out of every 5 flights (21.5%) into O’Hare was delayed by more than 15 minutes. 2 Like most busy airports around the world, O’Hare is expanding through its own modernisation plan. Evidence can be seen from above in the form of a new east-west runway being built at the south end of the airport. 3. London Heathrow Airport (LHR) Ranking number three in our list, we find the busiest airport in the EU and the airport that handles more international passengers than anywhere else, London’s Heathrow Airport. In the first half of 2011, Heathrow saw 26,733,585 passengers , which is logistically impressive when you consider LHR only has 2 runways, and it’s also competing with London’s four other airports! In what is becoming a common theme, the airport’s terminals are centrally located in this mess between the runways, with the exception of an international terminal on the south end of the airfield. What would the world’s largest international airport be without the world’s largest passenger airplane? Here’s one of the massive Airbus A380 s, which we found heading out towards the runway. This plane can be configured to hold up to an amazing 853 people , but sources indicate this particular bird has somewhere between 550-650 seats onboard. 2. Beijing Capital International Airport (PEK) The Asian market is well represented on our countdown in the form of China’s Beijing Capital International Airport, ranking number two in passenger traffic with 31,080,482 flyers in the first 5 months of this year. That’s nearly 5 million more than Heathrow in the same time period! It looks like the day this satellite photo was taken however things are kind of slow, as there isn’t much traffic sitting at the gate. We did however happen to spot this Boeing 777 mid-takeoff! Or is landing? Hmm… 1. Hartsfield–Jackson Atlanta International Airport (ATL) Surprised? Well you shouldn’t be! Year after year, the Hartsfield–Jackson Atlanta International Airport in Atlanta continues to dominate the various statistical categories and easily claim the title of “The World’s Busiest Airport”. It’s had the highest number of annual passengers every year since 1998, the most air traffic in 1999, 2000 and from 2005 through to today, and it even set a world record in 2007 when the airport had a mind boggling 994,346 takeoffs and landings in one year! That’s an average of nearly one takeoff and one landing every minute of every day for a solid year! In an effort to handle this unbelievable amount of traffic, the airport expanded and added a fifth runway in 2006 that literally crosses over Interstate 85. ATL has 195 gates spread across six terminals, all accessible by an underground train system. Some of these gates are squeezed extremely tightly together . Delta Airlines (which appropriately happens to be the world’s largest airline) uses Hartsfield–Jackson as its main hub airport, flying over 59% of all flights here. To avoid radio confusion the FAA officially renamed taxiway D (normally pronounced Delta everywhere else) to Taxiway Dixie. Atlanta had 36,548,629 passengers between January and May of 2011, which is 5.5 million more than Beijing, and they’re still expanding! Google imagery shows us construction of the new terminal F , due to be opened in Spring 2012, and also the airport’s control tower, which happens to be the tallest in the United States as well! Honourable Mentions Amongst aviation geeks you will hear the grumblings that an airport isn’t the busiest unless it has the most planes, or the most cargo, or the most international passengers, or whatever! So to be well-rounded in our not so scientific list, here are a few honourable mentions that don’t quite have the passenger counts to make the top 5, but make up for it in other areas. Dallas/Fort Worth International Airport (DFW) – Ranks number 4 in traffic movement. Denver International Airport (DEN) – Ranks number 5 in traffic movement. Hong Kong International Airport (HKG) – Ranks number 1 in cargo traffic. Memphis International Airport (MEM) – Ranks number 2 in cargo traffic. Statistics based on information provided by ACI in this report .  ↩ According to the statistics available on this webpage.  ↩ Locations: Arkansas , California , China , Colorado , Georgia , Hong Kong , Illinois , Texas , United Kingdom / Categories: Aircraft , Buildings , Structures View in Google Earth You’re reading an entry from Google Sightseeing , which is copyright © 2011 Alex Turnbull & James Turnbull and must not be reproduced without permission.

Here is the original post:
Top 5 Busiest Airports of 2011

Google and Oracle Attempting Settlement Ahead of Trial

After spending more than one year of battling back and forth, Google and Oracle are in court, attempting to smooth things out. A quick primer – Oracle has accused Google of infringing on some of their Java software patents.  The CEO’s for both companies were in front of a magistrate yesterday, although much of the day was spent behind closed doors.  The two (Larry Page, Larry Ellison) were ordered to meet in court this week and, according to Magistrate Judge Paul Grewal, should prepare to meet up until September 30. “It could be that they are truly making progress and need time to go back and look at the numbers,” Chris Renk, a patent attorney at Banner & Witcoff who isn’t involved in the case, said in a phone interview. “They may also be trying to show the judge presiding over the case, hey, we made a good faith effort at settlement talks.” A trial is scheduled to begin October 30th. Google and Oracle Attempting Settlement Ahead of Trial originally appeared on AndroidGuys . Follow us on Facebook and Twitter ! You May Also Enjoy… Oracle Trying to get 50% of Android’s ad Revenues The Latest Speculation on Oracle’s Suit Against Google Google’s Response to Oracle’s Suit

See more here:
Google and Oracle Attempting Settlement Ahead of Trial

Python, Django, Git, Virtualization and more at Fedora Activity Day 1 – Sept 24

A Fedora Activity Day (FAD) is scheduled for Saturday, September 24, 2011, 1000 IST onwards at Red Hat office in Pune. The objective of this FAD is to get any beginner, particularly students, introduced to Open Source and Linux in general, and involved in Fedora in particular, in preparation of FUDCon, Pune . Agenda Since this is an unconference, the final agenda will not be known until the day of the event, but you can see the agenda for the list of talks already registered. These include: Introduction to Python Introduction to Django Communication Guidelines (on how to use IRC, wiki, mailing lists, etc) Introduction to virtualization in Fedora Introduction to Git – How to manage your love letters using Git and a bunch of other talks. Other details Entry is to this free, but, there is limited seating capacity (maximum 70 people). If you are interested in giving a talk, please include your name and talk details to the agenda . It is highly recommended that you bring your laptops (with Fedora) to the event. In addition to the sessions listed in the wiki, if you would like any specific topic to be addressed, please contact Shakthi Kannan or Rahul Sundaram. The second FAD will be held in COEP on Saturday October 8, 2011. Fees and Registration The event will be on Saturday, 24 September, from 10am onwards at Red Hat Software, Tower X, Level-1, Cybercity, Magarpatta City, Hadapsar. This event is free and open for anybody to attend. Please register by adding your name to the wiki here . You will be required to bring atleast one photo ID (driving license/voter ID/PAN card) to enter the premises.

Read more:
Python, Django, Git, Virtualization and more at Fedora Activity Day 1 – Sept 24

Introducing Google Wallet

What did we tell you , Google Wallet is here today. In fact the Wallet app is pushing out right now to Sprint Nexus S owners through an OTA update. Currently Wallet is only available on the Nexus S, but expect more NFC enabled phones, and Google’s NFC sticker solution in the future; hopefully before the end of this year since Google is adding a $10 free bonus to the Google Prepaid Card if you set it up in Google Wallet before the end of the year. Video after the break. Read More… Visit TalkAndroid for android news , android guides , and much more! Introducing Google Wallet

Read more:
Introducing Google Wallet

Google gearing up developers for Ice Cream Sandwich

The official Android Developers Blog is getting ready for the Ice Cream Sandwich, ICS for short. SDK by providing helpful tips for developers. While the SDK isn’t yet available, various ways for developers to modify their honeycomb apps for ICS are detailed. Ice Cream Sandwich is coming, and with it, handsets will be able to install apps built on Honeycomb. We haven’t released the ICS SDK just yet, but you can start preparing your Honeycomb apps by thinking about how they should work on smaller screens. Stay tuned to the blog for more information about ICS as it nears release. ICS has got to be here any day now! In the meantime don’t forget to check out the unofficial ICS launcher . Hopefully that will help ease the anxiety. Visit TalkAndroid for android news , android guides , and much more! Google gearing up developers for Ice Cream Sandwich

Read more:
Google gearing up developers for Ice Cream Sandwich

Pictarine: pictures in the cloud

Cross posted from the Google App Engine blog . Pictarine is a photo management web application, launched in 2010, that allows people to easily manage and share all of their photos from Flickr, Picasa, Facebook, Twitter and other sites. Pictarine developers Guillaume Martin and Maxime Rafalimanana have contributed the following post discussing their experiences using Google App Engine and Google Web Toolkit. From the start, we used Google technologies in developing Pictarine and we wanted to share our experience with them so far. In this post, we will shed some light on the weaknesses and strengths we found in Google Web Toolkit (GWT) and Google App Engine. We will also discuss how we leveraged GWT to build a new technology that allows Pictarine to seamlessly display photos from the computer directly into the browser. The following diagram is an overview of how our application works. Building a mashup in the cloud with Google App Engine The Pictarine team is made of a web designer and two developers who previously worked mainly with Java based enterprise technologies and had a little experience with web technologies. When we started the project in early 2009, we were quite open on learning new languages like Python or Ruby, but when App Engine announced that Java would be supported, we were really excited to give Google App Engine a try. The first few months, learning about the App Engine environment was quite easy and dare I say fun. Testing our code on Google’s servers from Eclipse IDE was only one click away. So we built our first prototype fast and we quickly decided to adopt App Engine. Then we started to build the core of our application: the engine that uses the API from Flickr, Picasa, Facebook to fetch the users’ photos. This is where we hit the first limitations of App Engine. Most users have a lot of photos on these services and retrieving them can take some time. But App Engine has strict limits on how long a request should last: an outgoing HTTP request cannot last more than 10 seconds and cannot process a request for more than 30 seconds. So while building our architecture we found ourselves writing approximately one third of our code dealing with these limitations: paginating our requests, creating background tasks to store data in small batches, etc. In early 2010, when we launched our alpha version, everything went smoothly. We had some good press coverage and App Engine met our expectations in handling our first users. During 2010, we worked on implementing new features requested by our users, and during this period of time we were really impressed by the way App Engine evolved. Many of the limitations were lifted and great new features were added. We are now able to use Task Queues for requests that last up to 10 minutes, which we fully use to sync our users’ photos and albums. One of the features we like the most is the Channel API, a push notification system that allows us to instantly show a photo in every connected browser as soon as it is uploaded. App Engine is still not perfect but has greatly improved and when we see its roadmap, we are quite confident it will continue to improve. Building a fresh photo experience with Google Web Toolkit  When we started Pictarine, we wanted a fast, distraction free interface that would allow our users to focus on their photos. We wanted the interface to adapt to the screen resolution, displaying a lot of photos on large screens and fewer on small ones. We wanted it to be automatically updated when new comments or new photos are added. We wanted a web application. As we eliminated Flash quite quickly (based on our user experience…) we started to look at tools to build HTML/CSS/Javascript applications. We settled quickly on GWT: while coding in Java, with all the tools we are used to (even the debugger), we could produce optimized Javacript that would run in every browser! When we started with GWT, it was already 3 years old, so we had few complaints about it. The main issue was that we had to always keep in mind that the Java code we produced was ultimately translated to Javascript. So some Java methods, such as the Reflection API, are not allowed. Another thing that was not obvious to us when we started with GWT was that a java developer needs an intimate knowledge of HTML/CSS if he/she wants to go beyond the basic user interface provided by the GWT widgets. What we really like about GWT in our architecture is the ability to share code between client and server: we can use the same Photo or Album class on the client and the server and the GWT RPC system allows us to automatically share the same Java object on both side. We can also have the same data validation code on both sides: we can alert the user immediately on errors and still validate the data on the server just in case. Another great feature we like about GWT is its handling of internationalisation. From the beginning we wanted to build a website available for all Internet users, so supporting English as well as our native language (French) was almost obligatory. Fortunately, GWT makes it really easy to generate centralized localization files so that we just have to translate. Finally, to illustrate how great Javascript generation is, when IE9 came out, we waited a few weeks for GWT to support it and our application was compatible after a recompile! Of course, the IE9 team also did a good job with their HTML5/CSS3 engine. Building an universal uploader  After the launch of our alpha in 2010, our users were able to see and share their photos from Flickr, Picasa, Facebook. But they still had to put their photos on these websites first before coming to Pictarine. This limitation quickly became the first request on our feedback system. We needed to let our users do everything from Pictarine, including uploading photos. Uploading many photos from a website is still not a trivial process. Most websites choose Flash to allow users to upload multiple files at once, but our experience with it was that it often crashed after a while. Some use Java applets, but they are never well integrated and always look odd. At Pictarine we decided to tackle this problem by using Java Applet for their stability across all platforms but without using it to render photos or folders. We have built a technology that uses the GWT RPC mechanism to talk to a Java Applet: photos, upload progression are rendered in HTML/CSS and the applet takes care of photos resizing and uploading. Sharing a photo from a camera is now a one-step process. This technology also allows users to browse their local files directly in their browser and it is fully integrated in our design. We believe that this new use of Java applets can help blur the line between the Desktop and the Cloud by seamlessly integrating desktop files in any web application. In conclusion, we can say that we are really happy with the choices we made with App Engine and GWT. App Engine is a great service that perfectly handled the spike in traffic we saw right after articles on Mashable and Lifehacker were published. So we recommend it to every lean startup out there who loves developing in Java, Python or Go.

Follow this link:
Pictarine: pictures in the cloud

Preparing for Handsets

[This post is by Scott Main, lead tech writer for developer.android.com . — Tim Bray] Early this year, Honeycomb (Android 3.0) launched for tablets. Although Honeycomb remains tablets-only, the upcoming Ice Cream Sandwich (ICS) release will support big screens, small screens, and everything in between. This is the way Android will stay from now on: the same version runs on all screen sizes. Some Honeycomb apps assume that they’ll run only on a large screen, and have baked that into their designs. This assumption is currently true, but will become false with the arrival of ICS, because Android apps are forward-compatible — an app developed for Honeycomb is compatible with a device running ICS, which could be a tablet, a phone, or something else. So, if you’ve developed a tablet app on Honeycomb, it’s important that your app do one of two things: prevent installation on smaller screens or (preferably) support smaller screens with the same APK. Making your Honeycomb app for tablets only If you don’t want your app to be used on handsets (perhaps it truly makes sense only on a large screen) or you need more time to update it, add the following declaration to your manifest: … This describes your app’s screen-size support in two different ways: It declares that the app does not support the screen size buckets “small”, “normal”, and “large”, which are traditionally not tablets It declares that the app requires a screen size with a minimum usable area that is at least 600dp wide The first technique is for devices that are running Android 3.1 or older, because those devices declare their size based on generalized screen size buckets. The requiresSmallestWidthDp attribute is for devices running Android 3.2 and newer, which added the capability for apps to specify their size requirements based on a minimum number of density-independent pixels. In this example, the app declares a minimum width requirement of 600dp, which generally implies a 7”-or-greater screen. Your size choice might be different, of course, based on how well your design works on different screen sizes; for example, if your design works well only on screens that are 9” or larger, you might require a minimum width of 720dp. The catch is that you must compile your application against Android 3.2 or higher in order to use the requiresSmallestWidthDp attribute. Older versions don’t understand this attribute and will raise a compile-time error. The safest thing to do is develop your app against the platform that matches the API level you’ve set for minSdkVersion . When you’re making final preparations to build your release candidate, change the build target to Android 3.2 and add the requiresSmallestWidthDp attribute. Android versions older than 3.2 simply ignore that XML attribute, so there’s no risk of a runtime failure. For more information about why the “smallest width” screen size is important for supporting different screen sizes, read New Tools for Managing Screen Sizes (really; it’s got lots of things you need to know). Making your Honeycomb app work on handsets On the other hand, if you want to distribute your app to devices of all sizes, we recommend that you update your existing Honeycomb app to work on smaller screens as well, rather than publishing multiple APKs. Optimizing for handsets can be tricky if your designs currently use all of a large screen to deliver content. It’s worth the effort, though, because Ice Cream Sandwich brings the Honeycomb APIs to handsets and you’ll significantly increase the user-base for your app. Using a single APK for all devices also simplifies your updating and publishing process and makes it easier for users to identify your app. Here are two guidelines to help make your Honeycomb tablet app work well on handsets: Build your design around Fragments that you can reuse in different combinations, in single-pane layouts on handsets and multi-pane layouts on tablets Be conservative with your Action Bar design so the system can adjust its layout based on the screen size Creating single-pane and multi-pane layouts The most effective way to optimize your app for both handsets and tablets is to combine fragments in different ways to create “single-pane” layouts for handsets and “multi-pane” layouts for tablets. There are two approaches to doing this: For any screen in which your tablet version displays multiple fragments, use the same activity for handsets, but show only one fragment at a time — swapping the fragments within the activity when necessary. Use separate activities to host each fragment on a handset. For example, when the tablet UI uses two fragments in an activity, use the same activity for handsets, but supply an alternative layout that includes just one fragment. When you need to switch fragments (such as when the user selects an item), start another activity that hosts the other fragment. The approach you choose depends on your app design and personal preferences. The first option (single activity) requires that you dynamically add each fragment to the activity at runtime—rather than declare the fragments in your activity’s layout file — because you cannot remove a fragment from an activity if it’s been declared in the XML layout. You might also need to update the action bar each time the fragments change, depending on what actions or navigation modes are provided for the fragment. In some cases, these factors might not matter to your app, so using one activity and swapping fragments will work well. Other times, however, using just one activity and dynamically swapping fragments can make your code more complicated, because you must manage all the fragment combinations in the activity’s code rather than leveraging alternative layout files. I’m going to talk about the second option in more detail. It might be a little more up-front work, because each fragment must work well across separate activities, but it usually pays off. It means that you can use alternative layout files that define different fragment combinations, keep fragment code modular, simplify action bar management, and let the system handle all the back stack work. The following figure demonstrates how an application with two fragments can be arranged for both handsets and tablets when using separate activities for the handset design: In this app, Activity A is the “main activity” and uses different layouts to display either one or two fragments at a time, depending on the size of the screen. When on a handset-sized screen, the layout contains only Fragment A (the list view); when on a tablet-sized screen, the layout contains both Fragment A and Fragment B. Here’s res/layout/main.xml for handsets: And res/layout-large/main.xml for tablets: How the application responds when a user selects an item from the list depends on whether Fragment B is available in the layout. If Fragment B is there, Activity A notifies Fragment B to update itself. If Fragment B is not in the layout, Activity A starts Activity B (which hosts Fragment B). To implement this pattern for your application, it’s important that you develop your fragments to be highly compartmentalized. Specifically, you should follow two general guidelines: Do not manipulate one fragment directly from another. Keep all code that concerns content in a fragment inside that fragment, rather than putting it in the host activity’s code. To avoid directly calling one fragment from another, declare a callback interface in each fragment class that it can use to deliver events to its host activity, which implements the callback interface. When the activity receives a callback due to an event (such as the user selecting a list item), it acts appropriately based on the current fragment configuration. For example, Activity A from above handles item selections like this: /** This is a callback that the list fragment (Fragment A) calls when a list item is selected */ public void onItemSelected(int position) { DisplayFragment fragB = (DisplayFragment) getFragmentManager() .findFragmentById(R.id.display_frag); if (fragB == null) { // DisplayFragment (Fragment B) is not in the layout, // start DisplayActivity (Activity B) // and pass it the info about the selected item Intent intent = new Intent(this, DisplayActivity.class); intent.putExtra(“position”, position); startActivity(intent); } else { // DisplayFragment (Fragment B) is in the layout, tell it to update fragB.updateContent(position); } } When DisplayActivity (Activity B) starts, it reads the data delivered by the Intent and passes it to the DisplayFragment (Fragment B). If Fragment B needs to deliver a result back to Fragment A, then the process works similarly with a callback interface between Fragment B and Activity B. That is, Activity B implements a callback interface defined by Fragment B. When Activity B gets the callback, it sets the result for the activity and finishes itself. Activity A then receives the result and delivers it to Fragment A. For a complete demonstration of this technique for creating different fragment combinations for different tablets and handsets, look at the code for this updated version of the Honeycomb Gallery sample (ZIP file). Making the Action Bar work on handsets As long as you’ve been using the framework’s implementation of ActionBar for your tablet app (rather than building your own), the conversion from tablets to handsets should be painless. The Android system will do the work for you; all you need to do is ensure that your action bar design is flexible. Here are some important tips: When setting a menu item to be an action item, avoid using the “always” value . Use “ifRoom” for action items you’d like to add to the action bar. Now, you might need “always” when an action view does not have an alternative action for the overflow menu or when a menu item added by a fragment is low in the menu order and it must jump into the action bar at all times. But you should not use “always” more than once or twice. When possible, provide icons for all action items and declare showAsAction=”ifRoom|withText” . This way, if there’s not enough room for the text, but there is enough for the icon, then just the icon may be used. Avoid using custom navigation modes in the action bar . Use the built-in tab and drop-down navigation modes — they’re designed to be flexible and adapt to different screen sizes. For example, when the width is too narrow for both tabs and other action items, the tabs appear below the action bar. If your app requires a custom navigation mode in the action bar, thoroughly test it on smaller screens when Ice Cream Sandwich becomes available and make any adjustments necessary for a narrow action bar. For example, the mock ups below demonstrates how the system might adapt an app’s action bar based on the available screen space. On the handset, only two action items fit, so the remaining menu items appear in the traditional menu and the tabs appear in a separate row. On the tablet, more action items can fit in the action bar and so do the tabs. Some other tips When working with a ListView , consider how you might provide more or less information in each list item based on the available space. That is, you can create alternative layouts to be used by the items in your list adapter such that a large screen might display more detail for each item. Create alternative resource files for values such as integers, dimensions, and even booleans. Using size qualifiers for these resources, you can easily apply different layout sizes, font sizes, or enable/disable features based on the current screen size. Testing your handset support At this point you might be wondering, “How do I test my layout for smaller screens without a handset that runs Honeycomb?” Well, until Ice Cream Sandwich is available for the SDK, you technically can’t. So don’t publish your changes until you’re able to test on a device or emulator running ICS. However, you can begin some early testing of your alternative layouts with a little trick: instead of using the “large” configuration qualifier for the tablet layouts, use the “land” qualifier (that is, instead of res/layout-large/main.xml , use res/layout-land/main.xml ). This way, a Honeycomb tablet (or emulator) in landscape orientation uses your tablet design and the same device in portrait orientation uses your handset design. Just be certain to switch back to using the size qualifiers once you’re able to test on ICS. Conclusion Ice Cream Sandwich is coming, and with it, handsets will be able to install apps built on Honeycomb. We haven’t released the ICS SDK just yet, but you can start preparing your Honeycomb apps by thinking about how they should work on smaller screens. So if you have a Honeycomb tablet app out there (and by that, I mean an app with minSdkVersion=”11″ or higher), you should make sure it’s available only on large screen devices for now. We hope that you’ll then follow our advice here and optimize your tablet app to support smaller screens, using the same APK for both tablets and handsets. If your app supports API levels lower than 11, then there’s probably nothing you need to do right now, because your app is already running on handset devices. When the ICS SDK does arrive, though, it’ll still be important that you verify your app’s performance on the new platform. Stay tuned to the blog for more information about ICS as it nears release.

Visit link:
Preparing for Handsets

Google APIs Client Library for Java: now with OAuth 2.0

By Yaniv Inbar, Google APIs Client Team During Google I/O 2011 , we announced a major milestone by releasing the Beta version of the open source Google APIs Client Library for Java . This release included service-specific libraries and samples for Google APIs , built on our new client library generation infrastructure . Since that version 1.4 launch, we’ve been comfortable enough with the stability and features of the library that we want you to start building real production Java 5, Android , and Google App Engine applications and send us your feedback . Today we are announcing a new milestone for the Java client library. With the version 1.5 release, we’re making available the open source Google OAuth Client Library for Java in Beta, with support for both OAuth 1.0a and OAuth 2.0 . OAuth is an open standard for allowing a client application to securely gain access to a user’s private data stored on Google without ever asking for their password. Most Google APIs support OAuth 2.0, and we want to encourage adoption of OAuth 2.0 more widely on the web. That’s why we built this library to work with any API on the web — not just Google APIs — that comply with the OAuth specifications. Our current implementation of OAuth 2.0 is based on draft 10 , but we will update it soon to the final draft, once it becomes an official standard. We encourage you to try it and send us your feedback . Here is an example of how easy it is to use the OAuth 2.0 library to make a request using the library for the Google+ API (check out more samples ): // Set up the HTTP transport and JSON factory HttpTransport httpTransport = new NetHttpTransport (); JsonFactory jsonFactory = new JacksonFactory (); // Set up OAuth 2.0 access of protected resources // using the refresh and access tokens, automatically // refreshing the access token when it expires GoogleAccessProtectedResource requestInitializer = new GoogleAccessProtectedResource (accessToken, httpTransport, jsonFactory, clientId, clientSecret, refreshToken); // Set up the main Google+ class Plus plus = new Plus (httpTransport, requestInitializer, jsonFactory); // Make a request to access your profile and display it to console Person profile = plus.people(). get ( “me” ).execute(); System . out .println( “ID: ” + profile.getId()); System . out .println( “Name: ” + profile.getDisplayName()); System . out .println( “Image URL: ” + profile.getImage().getUrl()); System . out .println( “Profile URL: ” + profile.getUrl()); Finally, we are making available a Beta version of the open source Google HTTP Client Library for Java . This is the common HTTP client library that the above two libraries are built on, and is built to work with any API on the web. It features a pluggable HTTP transport abstraction that allows it to work seamlessly on any of the supported Java platforms, support for efficient JSON and XML data models for parsing and serialization, and a pluggable JSON and XML parser so you can use whatever works best for you. Please try it and send us your feedback . We are looking forward to finding out what you can build using these libraries on Google APIs. Please let us know how we can make the libraries easier to use and better suited for your needs. As we announced at Google I/O 2010 , we’ve been developing APIs that can provide descriptions of themselves via metadata . This new technique makes it easier to create and maintain client libraries that support more languages, work with more APIs, and are easier to use than ever before. This post announces one of several recent major milestones for our client libraries. Yaniv Inbar is a Senior Software Engineer and Technical Lead of the Google APIs Client Libraries & Tools team. He is the lead developer of the open source Google APIs Client Library for Java. Yaniv has worked at Google for 5 years, and has a total of 12 years industry experience as a software engineer. Posted by Scott Knaster , Editor

More:
Google APIs Client Library for Java: now with OAuth 2.0

Boeing Goes With Android For Their 787 Dreamliner’s Entertainment System

Boeing is going with Android to provide video, music, and airline specific apps in their new 787 Dreamliner. According to Mark Larson, a technical manager at Boeing, all Dreamliners in production are being outfitted with Android servers and touchscreens. Panasonic has built the first 787 Android touchscreen, but Larson adds “a lot of the larger screens (for business and first class) will be non-touch because you can’t reach them, although they’ve also got a prototype of gesturing”. The range of screen sizes go from 7-inches to 17-inches who Panasonic and Thales hold production on in the new 787s. The is some awesome news for Android and certainly to boast some advertising to who’s cool in the multimedia world (take that iPad). Hit up the break to check out some pictures of the hardware. Read More… Visit TalkAndroid for android news , android guides , and much more! Boeing Goes With Android For Their 787 Dreamliner’s Entertainment System

See the article here:
Boeing Goes With Android For Their 787 Dreamliner’s Entertainment System