スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

[Android]android-scripting

最近android-scriptingを使って
Android端末上でPerlを動かしたりしていたのですが、
昨日アプリ自体がアップデートされたみたいだったので
再度インストールしてみました。

sl4a_r0.apk」というのをインストールすれば良いみたいです。

アプリ名が「ase」だったのが「sl4a」に変わり
それに伴いスクリプトが保存されている場所も
「/mnt/sdcard/sl4a/scripts」に移動したりしていました。

また、Perlの場合だと「utf8.pm」あたりが最初から入っている状態になったので
JSONを利用する場合等でも落ちなくなりました。
自分でモジュールをつっこんで回避していたので、これはありがたいです。

インタープリタのインストール方法も変更されたみたい。
例えば「perl_for_android_r0.apk」などのインタープリタをインストールするための
専用アプリが用意されていました。少し面倒くさなった感じです。
自分の環境ではJRubyとかのインストールでこけていたので
それが解消されたのは良かったです。
スポンサーサイト

[Android]GoSenを使ってみる

Androidで形態素解析するためにGoSenを使用してみました。

http://stbr.no-ip.org/daizu/2009/10/javasenjava.html

上記のサイトを参考に、Jarファイルと辞書ファイルを作成。

Jarファイル(gosen-1.0beta.jar)はAndroidプロジェクトに外部Jarとして読み込み
辞書ファイル(connectionCost.sen, partOfSpeech.sen, token.sen, trie.sen, dictionary.xml)は、とりあえずSDカードに転送。

NexusOneで動かしてみたところ、dictionary.xmlの読み込み時にこけてしまいました。

http://blog.livedoor.jp/sylc/archives/1475050.html

上記のサイトを参考に、InputSourceをFileInputStreamへ変更。
それでもXMLのデータを取り出せないので、もう一箇所変更して再ビルド。

最終的に以下のように変更したら動きました。
(動けば良いやという感じなので適当です。。)

net.java.sen.SenFactoryの143行目付近

//↓ Document document = builder.parse(new InputSource(configurationFile.toURI().toURL().toString()));
Document document = builder.parse(new FileInputStream(configurationFile));

//↓ NodeList nodeList = document.getFirstChild().getChildNodes();
NodeList nodeList = document.getChildNodes().item(1).getChildNodes();



Androidの方はGoSenのサンプルを参考に以下のような感じ。

StringTagger tagger = SenFactory.getStringTagger(Environment.getExternalStorageDirectory() + "/dictionary/dictionary.xml");
List tokens = tagger.analyze("我輩は猫である。");

String res = "";
for (Token token : tokens) {
res += "\n-------------------\n" +
// 文字
token.toString() + "\n(" +
// 文字の基本形
token.getMorpheme().getBasicForm() + ")" + "\n" +
// 品詞-文字位置、長さ
token.getMorpheme().getPartOfSpeech() + "(" + token.getStart() + "," + token.end() + "," + token.getLength() + ")\n" +
// 読み仮名?
token.getMorpheme().getReadings().get(0) + "\n" +
// 発音?
token.getMorpheme().getPronunciations().get(0);
}

((TextView) findViewById(R.id.TextView01)).setText(res);


出力結果。

GoSen


[追記:2010/07/06]

NexusOneのシステムアップデートをしたら以下の修正部分で落ちるようになりました。
元どおりにすると動きました。

NodeList nodeList = document.getChildNodes().item(1).getChildNodes();


[Android]ギャラリーアプリを起動して写真を選択する

メモ。

Intent intent = new Intent();
intent.setType("image/*");
intent.setAction(Intent.ACTION_GET_CONTENT);
// 第二引数は戻ってきたときの判別用の適当なint
startActivityForResult(intent, REQUEST_GALLERY);

onActivityResultで結果を処理。

protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (resultCode == RESULT_OK && requestCode == REQUEST_GALLERY) {
try{
InputStream is = getContentResolver().openInputStream(data.getData());
Bitmap bm = BitmapFactory.decodeStream(is);
is.close();
}catch(Exception e){

}
}
}

[Android]カメラアプリを起動して指定ファイルに書かせる

メモ。

Intent intent = new Intent();
intent.setAction(MediaStore.ACTION_IMAGE_CAPTURE);
mTmpFile = new File(Environment.getExternalStorageDirectory(), "tmp_" + String.valueOf(System.currentTimeMillis()) + ".jpg");
intent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(mTmpFile));
// 第二引数は戻ってきたときの判別用の適当なint
startActivityForResult(intent, REQUEST_CAMERA);


EXTRA_OUTPUTを指定しない場合はBitmapを戻してくれますが、
縮小されて質の悪い画像になってしまいます。


結果はonActivityResultの中で処理。

protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (resultCode == RESULT_OK && requestCode == REQUEST_CAMERA) {

}
}



カメラアプリによりSDカード内に作られたファイルを消すには
Manifestにuses-permissionを追記。

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />



参考:
http://groups.google.co.jp/group/android-developers/msg/dccbcae06bf2136a
http://developer.android.com/reference/android/provider/MediaStore.html#ACTION_IMAGE_CAPTURE

[Android]マルチタッチを使えるかどうか

マルチタッチに対応している端末かどうかで、利用するクラスを分岐する必要があったので
リフレクションを使って分岐してみました。

try{
Class cls = Class.forName(MotionEvent.class.getName());
Field f = cls.getField("ACTION_POINTER_1_DOWN");

// マルチタッチ対応端末用クラス

}catch(Exception e){

// マルチタッチ非対応端末用クラス

}

上手くはいきましたが、こんな方法で良いのかな・・
真っ当なやり方ってあるんでしょうか。
プロフィール

jou4

Author:jou4
FC2ブログへようこそ!

最新記事
最新コメント
最新トラックバック
月別アーカイブ
カテゴリ
検索フォーム
RSSリンクの表示
リンク
ブロとも申請フォーム

この人とブロともになる

QRコード
QRコード
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。