Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> Android開發實例 >> 手寫輸入法實現過程中的問題

手寫輸入法實現過程中的問題

編輯:Android開發實例

入法。 見圖

整個過程涉及到了一系列自己不熟悉的東西,為此走了些彎路,其中:

Android編譯系統

手寫引擎用的是漢王, 漢王整個是用匯編實現, 這裡采用的編譯方法是先將漢王編程靜態庫,再編成動態庫。

Android平台簡化了Makefile的編寫,寫編譯的腳本比較容易, 其中也碰到一些問題可以看看

http://blog.csdn.net/linux_lyb/archive/2009/05/07/4156572.aspx

JNI(JAVA本地接口)

由於引擎非java實現, 引擎的使用只能是通過調用本地接口來完成。 JNI不復雜, 只是一開始沒有接觸過, 在對象的路徑、名稱、函數定義等基礎上出現人為失誤,導致調用不成功。

java數據類型

返回識別的結果, 我定義了2種接口, 返回jstring和jbyteArray, 其中jbyteArray的賦值一直理所當然的以為用memcpy, 結果是必須使用java提供的接口, 類似(*env).SetByteArrayRegion(result, 0, byteSize, (jbyte*)&retbuf[0]);

編譯知識

有一個問題說出來比較丟臉, 最初在編譯的過程中,一直找不到漢王引擎函數的定義,鏈接不成功。起初一直以為問題出在編譯參數、編譯器版本、匯編語法上, 忘了留意到一個細節, JNI由c++實現, 最後頭文件裡加上extern "C"解決。

下一步: 全屏手寫輸入的實現, 主要是:

1、Touch事件的獲取

直接從窗口管理器獲取或者從底層的事件服務裡獲取。

為了讓在全屏手寫的時候, 其它窗口的控件也能收到Touch事件, 必須將非手寫需要的事件回送。

2、筆跡的繪制

直接寫屏或者使用android平台已有的接口。

涉及到屏幕的更新, 筆跡的繪制和清除。

創建一個透明窗口來簡化處理這些, 不知可行否, 都需要驗證。

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved