Skip to main content

Dev: How to search google images in java

I'm finishing up the final touches of the next version which will include album art.  One of the features I included was a built in google image search to look for album art.  It was extremely simple to set up so I'd like to share some of the code.  I decided to use JSON as a return type for my queries and there are some simple free classes out there to parse the results here http://json.org/java/

The google image api documentation shows us how to do a simple query, so lets construct one.

String search_string = "nachos";
String query = "https://ajax.googleapis.com/ajax/services/earch/images?v=1.0&q=" + search_string;

Now do a http GET

HttpClient client = new DefaultHttpClient();  
try
{   
   HttpGet request = new HttpGet(query);
          
   HttpResponse http_response = client.execute(request);
   HttpEntity entity = http_response.getEntity();

   if (entity != null)
   {
      InputStream instream = entity.getContent();
      //convertInputStreamToString does exactly what it says.. its trivial so no need to show the code
      String response = convertInputStreamToString(instream);
      //JSONObject is provided at the link above
      JSONObject json = new JSONObject(response);
      parseJson(json);
                              
      instream.close();
   }
}
catch (Exception ex)
{
    client.getConnectionManager().shutdown();
}       


The parseJson function is where you can get the relevant data out of the results.  The list of valid keys are listed in the api documentation I linked above.  Here is the code for parseJson:

JSONObject response_data = JsonObj.getJSONObject("responseData");
JSONArray results = response_data.getJSONArray("results");

for (int i = 0; i < results.length(); i++)
{
    JSONObject result = (JSONObject)results.get(i);
    //now you can grab data from the result using:
    //result.getInt(key);
    //result.getString(key);
    //etc
}

Now you have access to google image search.  The other google apis work pretty much the same way from what I've seen.

Popular posts from this blog

3.4.5 Release / Preview of 3.5

3.4.5 was just uploaded to google play and should be rolling out over the next few days. Changelog: 3.4.5 (2023-08-29): Added Dutch translation Fixed crash editing rules in rule groups Disable IAP donation options if Full Version Unlock has not been purchased to prevent confusion Other changes since 3.4.0: Added Finnish translation and updated other translations Added donation options to the purchase settings area Fixed crash when trying to bookmark / unbookmark currently playing song Fixed Finnish not showing up in the language select Fixed other various crashes Fixed issue where rating or editing tags could potentially split the album Fixed some of the lists/grids not refreshing after changes 3.5 Preview I've been working on some new UI options planned for 3.5.  So far I've finished a new gradient background option for now playing.  There are 2 different styles (linear / radial) with 2 different color sources for each.  One source will take from the theme colors, the other st

3.4.9

More fixes.  Check out discord for info on the 3.5 alpha. 3.4.9 (2024-02-14): Fixed tab navigation returning to the wrong view on screen orientation change Fixed queue not being focused on the playing track sometimes while using tab navigation 3.4.8 (2023-12-21): Fixed backup/restore intent receiver not working with IAP unlock Fixed crash sorting playlist contents

3.4.0

Plans for 3.4 changed a bit when google announced they will be hiding apps on newer versions of android if they dont target the newer sdks.  GMMP always tries to target one of the more recent versions of android, but the unlocker has no need for that since its essentially just a license key.  As of May 1st the unlocker will be hidden on newer versions of android to those who have not already purchased.  Because of this, the focus of 3.4 was to get in app purchases working to allow users to buy the full version after May 1st.  There is a new 'Purchase' section in the settings where the unlocker can now be purchased. One other change in 3.4 is the support for the Android 13+ media controls.  They changed around how to customize them, so that is reflected in a new 'Media Controls' section of the settings. The language can also be changed for just GMMP via the system settings The changelog itself is fairly small but I did a large update of all the libraries / dependencies t