Mega Code Archive

 
Categories / Android / Development
 

Flickr JSON Location

package app.test; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.net.HttpURLConnection; import java.net.MalformedURLException; import java.net.URL; import org.apache.http.HttpEntity; import org.apache.http.HttpResponse; import org.apache.http.client.HttpClient; import org.apache.http.client.methods.HttpGet; import org.apache.http.impl.client.DefaultHttpClient; import org.json.JSONArray; import org.json.JSONObject; import android.app.Activity; import android.content.Context; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.location.Location; import android.location.LocationListener; import android.location.LocationManager; import android.os.Bundle; import android.util.Log; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.BaseAdapter; import android.widget.ImageView; import android.widget.ListView; import android.widget.TextView; public class Test extends Activity implements LocationListener {   public static final String API_KEY = "YOUR_API_KEY";   FlickrPhoto[] photos;   TextView tv;   LocationManager lm;   @Override   public void onCreate(Bundle savedInstanceState) {     super.onCreate(savedInstanceState);     setContentView(R.layout.main);     tv = (TextView) findViewById(R.id.TextView);     tv.setText("Looking Up Location");     lm = (LocationManager) getSystemService(Context.LOCATION_SERVICE);     lm.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 60000l,         500.0f, this);   }   public void onPause() {     super.onPause();     lm.removeUpdates(this);   }   public void onLocationChanged(Location location) {     tv.setText(location.getLatitude() + " " + location.getLongitude());     Log.v("LOCATION", "onLocationChanged: lat=" + location.getLatitude()         + ", lon=" + location.getLongitude());     HttpClient httpclient = new DefaultHttpClient();     String url = "http://api.flickr.com/services/rest/?method=flickr.photos.search&tags= dog,halloween&format=json&api_key="         + API_KEY         + "&per_page=5&nojsoncallback=1&accuracy=6&lat="         + location.getLatitude() + "&lon=" + location.getLongitude();     HttpGet httpget = new HttpGet(url);     HttpResponse response;     try {       response = httpclient.execute(httpget);       HttpEntity entity = response.getEntity();       if (entity != null) {         InputStream inputstream = entity.getContent();         BufferedReader bufferedreader = new BufferedReader(             new InputStreamReader(inputstream));         StringBuilder stringbuilder = new StringBuilder();         String currentline = null;         try {           while ((currentline = bufferedreader.readLine()) != null) {             stringbuilder.append(currentline + "\n");           }         } catch (IOException e) {           e.printStackTrace();         }         String result = stringbuilder.toString();         JSONObject thedata = new JSONObject(result);         JSONObject thephotosdata = thedata.getJSONObject("photos");         JSONArray thephotodata = thephotosdata.getJSONArray("photo");         photos = new FlickrPhoto[thephotodata.length()];         for (int i = 0; i < thephotodata.length(); i++) {           JSONObject photodata = thephotodata.getJSONObject(i);           photos[i] = new FlickrPhoto(photodata.getString("id"),               photodata.getString("owner"), photodata                   .getString("secret"), photodata                   .getString("server"), photodata                   .getString("title"), photodata                   .getString("farm"));           Log.v("URL", photos[i].makeURL());         }         inputstream.close();       }     } catch (Exception e) {       e.printStackTrace();     }     ListView listView = (ListView) this.findViewById(R.id.ListView);     listView.setAdapter(new FlickrGalleryAdapter(this, photos));   }   public void onProviderDisabled(String provider) {   }   public void onProviderEnabled(String provider) {   }   public void onStatusChanged(String provider, int status, Bundle extras) {   } } class FlickrGalleryAdapter extends BaseAdapter {   private Context context;   private FlickrPhoto[] photos;   LayoutInflater inflater;   public FlickrGalleryAdapter(Context _context, FlickrPhoto[] _items) {     context = _context;     photos = _items;     inflater = (LayoutInflater) context         .getSystemService(Context.LAYOUT_INFLATER_SERVICE);   }   public int getCount() {     return photos.length;   }   public Object getItem(int position) {     return photos[position];   }   public long getItemId(int position) {     return position;   }   public View getView(int position, View convertView, ViewGroup parent) {     View videoRow = inflater.inflate(R.layout.row, null);     ImageView image = (ImageView) videoRow.findViewById(R.id.ImageView);     image.setImageBitmap(imageFromUrl(photos[position].makeURL()));     TextView videoTitle = (TextView) videoRow         .findViewById(R.id.TextView);     videoTitle.setText(photos[position].title);     return videoRow;   }   public Bitmap imageFromUrl(String url) {     Bitmap bitmapImage;     URL imageUrl = null;     try {       imageUrl = new URL(url);     } catch (MalformedURLException e) {       e.printStackTrace();     }     try {       HttpURLConnection httpConnection = (HttpURLConnection) imageUrl           .openConnection();       httpConnection.setDoInput(true);       httpConnection.connect();       int length = httpConnection.getContentLength();       InputStream is = httpConnection.getInputStream();       bitmapImage = BitmapFactory.decodeStream(is);     } catch (IOException e) {       e.printStackTrace();       bitmapImage = Bitmap.createBitmap(10, 10,           Bitmap.Config.ARGB_8888);     }     return bitmapImage;   } } class FlickrPhoto {   String id;   String owner;   String secret;   String server;   String title;   String farm;   public FlickrPhoto(String _id, String _owner, String _secret,       String _server, String _title, String _farm) {     id = _id;     owner = _owner;     secret = _secret;     server = _server;     title = _title;     farm = _farm;   }   public String makeURL() {     return "http://farm" + farm + ".static.flickr.com/" + server + "/"         + id + "_" + secret + "_m.jpg";     // http://farm{farm-id}.static.flickr.com/{server-id}/{id}_{secret}_[mstzb].jpg   } } //main.xml <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"     android:orientation="vertical"     android:layout_width="fill_parent"     android:layout_height="fill_parent"     > <ListView android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/ListView"></ListView> </LinearLayout> //row.xml <?xml version="1.0" encoding="utf-8"?> <LinearLayout   xmlns:android="http://schemas.android.com/apk/res/android"   android:layout_width="wrap_content"   android:layout_height="wrap_content">     <ImageView android:id="@+id/ImageView" android:layout_width="wrap_content" android:layout_height="wrap_content"></ImageView>     <TextView android:text="@+id/TextView01" android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/TextView"></TextView> </LinearLayout>