2012年12月13日木曜日

KyoroText で使用されている技術 その1の次

続き...

[共有メモリから取得]
 Dalvikは、アプリごとに使用しているJavaヒープをカウントしており、一定量以上のヒープを取得できないようになっています。しかし、Nativeヒープにはその制限は適用されていません。
 そこで、Androidで大きめのヒープが必要な場合は、Nativeヒープを取得することが考えられます。
 一つは、native側で mallocしてあげる。一つは、android.os.MemoryFileを使用すると良いです。

[KyoroTextの対処]
 ここまで、説明しておいて何ですが、KyoroTextでは、Nativeヒープを使用する方法は取りませんでした。Javaヒープだけで、済ませていまいます。

その2に続きます。

KyoroText で使用されている技術 その1



 数十回に渡って、KyoroText で使用されている技術について、紹介していきたいと思います。
※ androidとj2seで、自作Editorを作成する方法を紹介します。
    以下ような内容を含んでいます。
      - androidにて、InputConnectionより確定文字、未確定文字、キーイベントを取得する方法
      - j2seにて、未確定文字、確定文字を取得する方法。
  


[はじめに]
  私は今「Kyoro Text」というアプリを作成しています。その際に、「試行錯誤したこと」や、「得たノウハウ」をまとめていきたいと考えています。
  当初、Text Editorという、文字の表示と編集するだけのアプリに、悪戦苦闘するとは、考えていませんでした。
  皆さんも、たかだかEditor程度と思いでしょう。 たかだかEditorと言う認識で正しいのかも知れません。 間違いなのかもしれません。この判断をくだすための材料を提供したいと思います。


[進め方] 
  この文章を読んで頂いている皆様は、多分、androidやJ2SEでEditorを作るのに必要なAPIだとか、その使い方だとかを知りたくてこの文章を読んでいるのではないでしょうか?
残念ながら, あなたのご期待に沿う事は出来ないかも知れません。
  モチロン、apiの使い方にもついて、触れる事は多々あると思います。しかし、apiの使い方をメインに説明しようとは考えてません。
  Editorを作成するにあたり、どのような課題があって、それをどのように克服したのかを説明します。
  残念ながら、優れた対処方法はほとんどありませんが、試行錯誤の結果を物語として楽しんでいただけたらと思います。


[課題一覧]
  - Androidで、PC等で編集したテキストを表示するには、ヒープが足りない。
  - ..
  - ..
  - ..



[課題] Androidで、PC等で編集したテキストを表示するには、ヒープが足りない。

  KyoroTextが対象としていた端末はLowSepcなものが有り。 使用可能なJavaヒープが少ないため、Javaヒープ上にデータをすべて読み込んでから表示する事が困難でした。

  また、Fileから、データを読み込む速度も重要な要素です。 Fileからデータを読み込む速度は高機能を歌っている端末だからといって早いわけではなく。古い型のものの方が早かったりしました。
このため、 最新の端末なのにタカダカ数千キロバイト程度のテキストを読み込むのにカナリ待たされたりする事があるわけです。

  これらの状況をふまえて、ユーザーにストレスを与えないように、即座に画面に表示して上げるようにする必要がありました


[androidのメモリ]

  本当に使えるメモリはそんなに少ないのか?という疑問から解決していきましょう。
 端末には、数メガのヒープを確保してもありあまる程のようりょうがあります。
  これを特別な方法で取得できないのでしょうか?
  結論から言うとデキます。なので、この特殊な方法を使用するという手もあります。

簡単に紹介しましょう。
  - malloc
  - MemoryFile
  - ByteBuffer.alllocateDirect

続く.. 中途半端なところで、ごめんなさい!!


[PS]

来年初頭に、KyoroTextの安定版をだす予定です。
そこで、「KyoroTextを紹介するページをつらないとなぁ~」と考えました。
機能の紹介だけだと、平凡な感じがしました。
そこで、KyoroTextを作成するにあたり悪戦苦闘した事を、記事にすることにしまた。

この記事が第一回目となります。
たぶん何度も書き直します。



2012年12月4日火曜日

ショート問題解決 IMEなんかに処理を渡したくない。CTLが押されたら自前で処理したい

KyoroText (自作 Android Editor)ネタです。
来年まとめる予定ですが、こまめに、Android IMEについて情報だししていきます。

* IMEなんかに処理を渡したくない。CTLが押されたら自前で処理したい
 ※ EmacsライクなEditorにしたい場合、IMEがジャマですよね!!

そんな時は、dispatchKeyEventPreIme() で trueを 返すとよい。

2012年11月25日日曜日

ショート問題解決 eclipseでndkアプリをデバック


たぷん、うまくいっていない。メモだけ
※ android-ndk-r8c windows7 
 *  Breakしたところでとまらない
 * ヘッダーとか、いったんEclipseを終了しないと反映されない?

「ショート問題解決 eclipseでndkアプリをデバック」時は、以下をする。

1. Preferences > Android > NDK でパスを設定
2. Android Tools -> Add Native Support
3. AndroidManifest.xmlのDebuggable をtrue
3. 「ndk-build NDK_DEBUG=1」でビルド
4. Debug As--> Native Android Application


[PS]
 そんなにガンバンなくても、Eclipse上で作業が簡潔できるようになった?のかな..。
 良い感じだ。

2012年11月24日土曜日

ショート問題解決 Androidアプリをビルドしている時、「Conversion to Dalvik format failed with error」

ショート問題解決 Androidアプリをビルドしている時、「Conversion to Dalvik format failed with error」と出力されてビルドに失敗する。

そんな時は、
*  「ライブラリとアプリ」のターゲットバージョンをあわせる。
*  eclise -clean とかしてみる。


ショート問題解決 Androidで「node.js」を使ってみたいな


ショート問題解決 Androidで「node.js」を使ってみたいな
と思ったら。

以下のサイトをのぞいてみよう!!

https://github.com/paddybyers/anode/wiki

※ ROOT化不要です!!
※ ちょっと説明不測ですね..。 KyoroPocketNodeJSとして、単体アプリとして、パッケージしたものをGithubにアップする予定です。注意点だとかは、その機会に説明する予定です。

ショート問題解決 「Cannot load library」が表示される


Androidアプリをビルド中に、「Cannot load library」が表示された。
以下のようなエラーがでました。
java.lang.UnsatisfiedLinkError: Cannot load library: reloc_library[1306]:    37 cannot locate '__gnu_thumb1_case_uqi'...

そんな時は、Application.mkに以下を追加する。
APP_ABI          := armeabi armeabi-v7a

mbedtls dart の 開発を始めた web wasm ffi io flutter

C言語 で開発した機能を、Dart をターゲットとして、Web でも サーバーでも、そして Flutter  でも使えるようにしたい。 そこで、mbedtls の 暗号化の部分を Dart 向けのPackageを作りながら、 実現方法を試行錯誤する事にした。 dart...