AndroidでFlickr

chephesさんのところでlocalhostにつなげるという記事を見て早速試してみた。
普段なら
http://localhost/...
と書くところを、
http://(プライベートIPアドレス)/...
と変えるだけでlocalhostにつなげられる。
localhostに接続できればPHPとか動かせるのですごい便利。


IPアドレスMacならターミナルでifconfig、Windowsならコマンドプロンプトからipconfigをすれば調べられます。


今回のサンプルはFlickrから画像を持ってくるもの。
PHPのソースも載せました。$keyの値はFlickrで取得したAPI Keyの値を入れてください。


にしても便利だなー。

以下動作画面とソース。
http://screencast.com/t/GrYvweV1

ソース

PHPTest.java

package net.swelt.android.phptest;

import android.app.Activity;
import android.os.Bundle;
import android.content.Context;
import android.view.View;
import android.view.ViewGroup;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.widget.Button;

import java.net.*;
import java.io.*;

public class PHPTest extends Activity {
	Button mGetButton;
	
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle icicle) {
        super.onCreate(icicle);
        
        mGetButton = new Button(this);
        mGetButton.setText("Get Image");
        
        setContentView(new SampleView(this));
        addContentView(mGetButton	, new ViewGroup.LayoutParams(-2, -2));
    }
    
    public class SampleView extends View {
    	private Bitmap mBitmap = null;
    	
    	public SampleView(Context context) {
    		super(context);
    		
    		mGetButton.setOnClickListener(new View.OnClickListener() {
    			public void onClick(View v) {
    				load("http://(プライベートIPアドレス)/mydir/loadimage.php");
    			}
    		});
    	}
    	
    	public void load(String str) {
    		try {
    			URL url = new URL(str);
    			HttpURLConnection http = (HttpURLConnection)url.openConnection();
    			http.setRequestMethod("GET");
    			http.connect();
    			InputStream in = http.getInputStream();    	
    			mBitmap = BitmapFactory.decodeStream(in);
    			in.close();
    		} catch(Exception e) {
    			
    		}
    		invalidate();
    	}
    	
    	@Override
    	protected void onDraw(Canvas canvas) {
    		if( mBitmap != null ) {
    			int w = mBitmap.width();
    			int h = mBitmap.height();
    			canvas.drawBitmap(mBitmap, (320 - w) >> 1, (200 - h) >> 1, null);
    		}
    	}
    }
}

loadimage.php

<?php
	include('xml.php');
	$key = "*****";
	$page = 1;
	$per_page = 100;
	$tags = "dog";
	
	$url = "http://www.flickr.com/services/rest?";
	$url .= "method=flickr.photos.search";
	$url .= "&api_key=".$key;
	$url .= "&page=".$page;
	$url .= "&per_page=".$per_page;
	$url .= "&tags=".$tags;
	
	$xml = file_get_contents($url);
	$data = XML_unserialize($xml);
	$photo = $data['rsp']['photos']['photo'];
	
	$index = rand(0, $per_page);
	$id = $photo[$index.' attr']['id'];
	$server = $photo[$index.' attr']['server'];
	$secret = $photo[$index.' attr']['secret'];
	$imgURL = "http://static.flickr.com/".$server."/".$id."_".$secret."_s.jpg";
	
	header("Content-Type: image/jepg");
	$image = imagecreatefromjpeg($imgURL);
	imagejpeg($image);
	imagedestroy($image);
?>