これは、
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.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に書いておきました。