facebook twitter hatena line email

Android/HttpRequest通信/DefaultHttpClient/Google画像APIサンプル

提供: 初心者エンジニアの簡易メモ
2019年5月15日 (水) 19:02時点におけるAdmin (トーク | 投稿記録)による版 (Google画像APIサンプル)

(差分) ←前の版 | 最新版 (差分) | 次の版→ (差分)
移動: 案内検索

Google画像APIサンプル

HttpRequest通信のライブラリにandroid/HttpRequest通信/DefaultHttpClient/サンプルを使用

サンプルコード

package info.nonip.android.lib.entity;
import android.util.Log;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import java.util.ArrayList;
import java.net.URLEncoder;
/**
 * Google画像APIクラス
 *
 * @link https://developers.google.com/image-search/v1/jsondevguide
 * GoogleImageApi api = new GoogleImageApi();
 * api.setImgsz("xlarge|xxlarge|huga");
 * api.exec("初音ミク 壁紙");
 * ArrayList<String> urls = api.getUrls();
 * for (String url : urls) {}
 */
public class GoogleImageApi {
    // 画像サイズ定数
    public static String IMGSZ_ICON = "icon";
    public static String IMGSZ_SMALL = "small";
    public static String IMGSZ_MEDIUM = "medium";
    public static String IMGSZ_LARGE = "large";
    public static String IMGSZ_XLARGE = "xlarge";
    public static String IMGSZ_XXLARGE = "xxlarge";
    public static String IMGSZ_HUGE = "huge";
    public static String IMGSZ_WALLPAPER = "xlarge|xxlarge|huga";
    // セーフモード定数
    public static String SAFE_ACTIVE = "active";
    public static String SAFE_OFF = "off";
    public static String SAFE_MODERATE = "moderate";
    // ファイルタイプ
    public static String FILETYPE_JPG = "jpg";
    public static String FILETYPE_PNG = "png";
    public static String FILETYPE_GIF = "gif";
    public static String FILETYPE_BMP = "bmp";
    // 画像タイプ
    public static String IMGTYPE_FACE = "face";
    public static String IMGTYPE_PHOTO = "photo";    // 写真
    public static String IMGTYPE_CLIPART = "clipart";    // イラスト
    public static String IMGTYPE_LINEART = "lineart";    // 線画
    public static String IMGTYPE_NEWS = "news";    // ニュース
    // ページ
    private int mPage = 0;
    // 画像サイズ
    private String mImgsz;
    // ファイルタイプ
    private String mFiletype;
    // 画像タイプ
    private String mImgtype;
    // セーフモード
    private String mSafe = SAFE_MODERATE;
    // 結果
    private JSONArray mResults;
    // ページ指定(0~15
    public void setPage(int page) {
        mPage = page;
    }
    // 画像サイズ設定
    public void setImgsz(String imgsz) {
        mImgsz = imgsz;
    }
    // ファイルタイプ設定
    public void setFiletype(String filetype) {
        mFiletype = filetype;
    }
    // 画像タイプ設定
    public void setImgtype(String imgtype) {
        mImgtype = imgtype;
    }
    // セーフモード
    public void setSafe(String safe) {
        mSafe = safe;
    }
    // API実行
    public void exec(String keyword) {
        // キーワードのURLエンコード
        keyword = URLEncoder.encode(keyword);
        // ページ
        int start = mPage * 4;
        // URL生成
        String url = "http://ajax.googleapis.com/ajax/services/search/images?v=1.0"
                + "&q=" + keyword + "&start=" + start
                + "&safe=" + URLEncoder.encode(mSafe);
        // 画像サイズをURLに追加
        if (mImgsz != null) {
            url += "&imgsz=" + URLEncoder.encode(mImgsz);
        }
        // 画像タイプをURLに追加
        if (mImgtype != null) {
            url += "&imgtype=" + URLEncoder.encode(mImgtype);
        }
        // ファイルタイプをURLに追加
        if (mFiletype != null) {
            url += "&filetype=" + URLEncoder.encode(mFiletype);
        }
        // SpHttp通信ロード
        SpHttpRequest http = new SpHttpRequest(url);
        // 実行
        String json = http.exec();
        Log.d("GoogleImageApi", "json=" + json);
        try {
            JSONObject rootObject = new JSONObject(json);
            JSONObject responseData = rootObject.getJSONObject("responseData");
            mResults = responseData.getJSONArray("results");
        } catch (JSONException e) {
        }
    }
    // 結果リスト取得
    public JSONArray getResults() {
        return mResults;
    }
    // urlリスト取得
    public ArrayList<String> getUrls() {
        ArrayList<String> ret = new ArrayList<String>();
        if (mResults == null) return ret;
        try {
            for (int i = 0; i < mResults.length(); i++) {
                JSONObject jsonObject = mResults.getJSONObject(i);
                String url = jsonObject.getString("unescapedUrl");
Log.d("GoogleImageApi", "url=" + url);
                ret.add(url);
            }
        } catch (JSONException e) {
        }
        return ret;
    }
    // サムネurlリスト取得
    public ArrayList<String> getTbUrls() {
        ArrayList<String> ret = new ArrayList<String>();
        if (mResults == null) return ret;
        try {
            for (int i = 0; i < mResults.length(); i++) {
                JSONObject jsonObject = mResults.getJSONObject(i);
                ret.add(jsonObject.getString("tbUrl"));
            }
        } catch (JSONException e) {
        }
        return ret;
    }
    // url取得(番号指定
    public String getUrl(int i) {
        try {
            JSONObject jsonObject = mResults.getJSONObject(i);
            return jsonObject.getString("unescapedUrl");
        } catch (JSONException e) {
            return "";
        }
    }
    // 解放
    public void release() {
        mResults = null;
    }
}