2011年6月29日水曜日

Google CGI API for Japanese Input

/*
これは、
Google CGI API for Japanese Input(日本語変換をインターネット上で実現するための、CGI サービス)
をandroid上で学習・実験するプログラムです。
参考となるサイトは次のとおりです。
http://code.google.com/intl/ja/appengine/docs/java/urlfetch/usingjavanet.html

以下のsourceは、開発者がAPIを学習・実験するためのプログラムであり、デバッグを行いながら、内容を様々に書き換えて、各変数の内容を確認することを前提としている。
ユーザーインターフェイスは無い。 最終利用者が使うものでは無い。
学習・実験目的であるため、簡潔には書いていない。
Eclipseでandroidプロジェクトを新規生成した時に作成されるjavaファイルの内容を下記のとおり書き変えれば良い。

事前に、AndroidManifest.xmlファイルに次の一行を追記する必要がある。
<uses-permission android:name="android.permission.INTERNET" />
*/
package jp.Test.HTTPGet;

import java.io.IOException;
import java.io.InputStream;
import java.net.MalformedURLException;
import java.net.URL;

import org.json.JSONArray;
import org.json.JSONException;

import android.app.Activity;
import android.net.Uri;
import android.os.Bundle;
import android.util.Log;
import android.widget.Toast;

public class HTTPGet extends Activity {
    private final String sLogMes = "HTTPGet";

    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        URL url = null;
        String sLines = "";
        String s = "http://www.google.com/transliterate?langpair=ja-Hira|ja&text=";

        //変換したい文字列を書き込む。UTF-8 でエンコードする。
        s = s + Uri.encode("へんかん");
        //s = s + Uri.encode("ここではきものをぬぐ");

      try {//URL型に整形する。
            url = new URL(s);
      }
      catch(MalformedURLException e){
      Log.e(sLogMes, "URL Exception");
      finish();
      return;
      }

try{//GETを発行し、データを受け取る。
           InputStream is;

           //GETを発行し、変換後のデータを受け取る。JSON 形式の配列が返されます。
is = url.openStream();

//後続のJSON処理のため、受け取ったデータをString型に変換する。
            byte[] Buffer = new byte[1000];
is.read(Buffer, 0, 1000);
sLines = new String(Buffer);
}
        catch(IOException e){
      Log.e(sLogMes, "IO Exception");
      finish();
      return;
        }

        try{//JSON型で扱う。
        int i, iArrays;
            JSONArray aJSONMain, aJ1, aJ2;
       
        aJSONMain = new JSONArray(sLines);//JSON型に変換する。
       
            iArrays = aJSONMain.length();
            for(i=0; i<iArrays; i++){
                int i2, iA2;

                //デバッガーで値を確認することが目的なので、何もしない。
                aJ1 = aJSONMain.getJSONArray(i);
                s = aJ1.getString(0);//第一要素 元の文字列
                aJ2 = aJ1.getJSONArray(1);
                iA2 = aJ2.length();
            for(i2=0; i2<iA2; i2++){
                  s = aJ2.getString(i2);//第二要素 変換候補
            }
            }
        }
        catch(JSONException e){
      Log.e(sLogMes, "JSON Exception");
      finish();
      return;
        }

        Toast.makeText(this, s, Toast.LENGTH_SHORT).show();
    }
}

後日談を、Google API Japanese Inputに書いておきました。

0 件のコメント:

コメントを投稿