Code Example‎ > ‎

JSON


外部のWebAPIとの通信は、JSONフォーマットを用いておこないます。FlickrからJSONフォーマットで画像一覧を取得し表示する方法を解説します。


新規プロジェクトの作成

Eclipseのメニューから[New]-[Project]を選択し、[New Project]ダイアログボックスで、"Droidget Wizards"-"project"を選択する。

config.xmlの編集

config.xmlを編集し、flickr.comにアクセスできるようにします。

<?xml version="1.0" encoding="UTF-8"?>
<widget id="JSONSample_1279501117368" version="1.0" width="600" height="300">
    <content src="index.html" type="text/html"/>
    <name>JSONSample</name>
    <description>The sample of JSON</description>
    <author url="http://www.gclue.jp">GClue</author>
    <icon src="icon.png"/>
    <license></license>
    <access uri="http://flickr.com" subdomains="true" />
</widget>

Droidgetでは、config.xmlに記載するaccessタグで外部サーバへのアクセス許可を定義しています。

例) example.comにドメイン単位で許可をおろす場合

<access uri="http://example.com" subdomains="true" />

と記載すると、http://www.example.com, http://www1.example.com など、example.comドメインのすべてのサーバにアクセス可能になります。

例) www.example.comのみにアクセス許可をおろす場合

<access uri="http://www.example.com"  subdomains="false" />

と記載する事で、http://www.example.comにのみアクセス許可をおろします。

JavaScriptファイルの作成

src/jsフォルダを作成し、script.jsを新規で作成します。

src/js/script.js
// call JSON
function init(){ 
    var keyword = "android2.2";
    var url = "http://api.flickr.com/services/feeds/photos_public.gne?tags=" + keyword + "&format=json&jsoncallback=%3f";
    json(resultJson, url);

}
 
// callback of JSON
function resultJson(json){

    var resultHtml = "";
    for(var i = 0; i < json.items.length; i++){
        resultHtml += "<img src="+json.items[i].media.m+" height=50>";
    }
    document.getElementById("divMsg").innerHTML = resultHtml;

}
 
// JSON
function json(callback, url){
   
    var http_connect = new XMLHttpRequest();
    http_connect.open("GET", url, true);

    http_connect.onreadystatechange = function() {
        if (http_connect.readyState == 4) {
            if(http_connect.status == 200){
                callback(eval("("+http_connect.responseText+")"));
            }else{
                alert("Can't connect");
            }
        }
    }
    http_connect.send();
} 

index.htmlファイルの編集

Flickrから取得した画像領域を定義します。 

index.html
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <meta http-equiv="Content-Style-Type" content="text/css" />
    <meta http-equiv="Content-Script-Type" content="text/javascript" />
    <title>JSON Sample</title>
    <script type="text/javascript" src="js/script.js"></script>
</head>
<body onload="init()">
    <div id="divMsg"></div>
</body>
</html>

パッケージング

次に、パッケージングをおこないます。Eclipseの[Droidget]-[Packaging]を選択します。

USB経由での転送

USBで開発機と実機を接続し、Eclipseの[Droidget]-[Packaging Install]を選択します

Web経由での転送

完成したJSONSample.wgtをWeb経由で実機に転送するためには、download用のhtmlファイルを作成します。


Download.html
<html>
<head>
    <title>Download</title>
</head>
<body>
    <a href="droidget://www.example.com/JSONSample.wgt">JSONSample</a><br>
</body>
</html>


実行結果



※ 本チュートリアルで使用している画面は、KDDI/auのIS01の待ち受け画面を使用しています。
Comments