AndroidアプリをAndroidを使って作る
材料
Androidタブレットにconnectbotをインストール
ちなみに私は下記端末+
8インチタブレット用キーボード付きケースで試しました
- Androidマーケットからconnectbotで検索
- インストール
しかし、、、ctrlやtab,escが効かないので vimで編集とかとてもしにくい状態
UbuntuにCLI Android Development環境をつくる
sun-java6-binをインストール
$ sudo vi /etc/apt/sources.list #下記を追加 deb http://archive.canonical.com/ lucid partner $ sudo aptitude sun-java6-jdk ant apache vim git
android sdk linux x86をインストール
Download Android Studio and SDK tools
から android-sdk_r09-linux_x86.tgzをクリック
$ tar xvzf android-sdk_r09-linux_x86.tgz $ sudo mv android-sdk-linux_x86/ /usr/share/android-sdk/
android sdk セットアップ
$ export PATH=$PATH:/usr/share/android-sdk/tools/ $ android update sdk -u
Installed Google APIs by Google Inc., Android API 8, revision 2
Downloading GALAXY Tab by Samsung Electronics., Android API 8, revision 1
GALAXY Tab用のSDK?もダウンロードしてる..
プロジェクトを作成してみる
$ android create project -t 4 -p $PWD/KeyTest -k "la.zeg.android.keytest" -a KeyTest $ export PATH=$PATH:/usr/share/android-sdk/platform-tools/ $ cd KeyTest/ $ ant debug /usr/share/android-sdk/tools/ant/main_rules.xml:306: Execute failed: java.io.IOException: Cannot run program "/usr/share/android-sdk/platform-tools/aapt": java.io.IOException: error=2, No such file or directory
ん? No such file or directory
$ cd /usr/share/android-sdk/platform-tools $ ./aapt -bash: ./aapt: No such file or directory
んー調べたら 下記をインストールしたらなおるみたい
64bit環境だからかな
$ sudo aptitude install lib32z1-dev lib32stdc++6 $ ./aapt 動くようになった
キーコードを調査するためのでもアプリつくる
$ cd KeyTest $ vim $ vim src/la/zeg/android/keytest/KeyTest.java package la.zeg.android.keytest;
import android.app.Activity; import android.os.Bundle; import android.view.KeyEvent; import android.widget.TextView; public class KeyTest extends Activity implements KeyEvent.Callback { /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); } @Override public boolean onKeyDown(int keyCode, KeyEvent event) { TextView t = (TextView)findViewById(R.id.textview); t.setText(""+keyCode); return super.onKeyDown(keyCode, event); } }
こんな感じのでもアプリをつくって
apkを公開
$ cp bin/KeyTest-debug.apk /var/www/
Tabletでアクセスしてダウンロード,インストール
調査すると
- ALT:57
- F2:82
- Tab:61
- Ctrl,ESC,F1:0
Ctrl,ESC,F1が同じコードが割り当てられているようだ
そこで
- ALT->Ctrl
- F2->ESC
として Tabのキーコードを変えてconnectbotを使いやすくする
connectbotの改造
android is01+ConnectBotでCTRLとESCが入力出来るようになりました - mk18のプログラミング日記を参考にさせていただいて
改造
$ git clone https://github.com/kruton/connectbot.git
こんな感じに改造
$ diff -c connectbot/src/org/connectbot/service/TerminalKeyListener.java connectbot_fr-809/src/org/connectbot/service/TerminalKeyListener.java *** connectbot/src/org/connectbot/service/TerminalKeyListener.java 2011-01-29 23:10:06.000000000 +0900 --- connectbot_fr-809/src/org/connectbot/service/TerminalKeyListener.java 2011-01-29 21:03:47.000000000 +0900 *************** *** 49,55 **** public final static int META_SHIFT_ON = 0x10; public final static int META_SHIFT_LOCK = 0x20; public final static int META_SLASH = 0x40;! public final static int META_TAB = 0x80; // The bit mask of momentary and lock states for each public final static int META_CTRL_MASK = META_CTRL_ON | META_CTRL_LOCK; --- 49,57 ---- public final static int META_SHIFT_ON = 0x10; public final static int META_SHIFT_LOCK = 0x20; public final static int META_SLASH = 0x40; ! //public final static int META_TAB = 0x80; ! //zegenvs change TAB 128 -> 61 ! public final static int META_TAB = 0x3D; // The bit mask of momentary and lock states for each public final static int META_CTRL_MASK = META_CTRL_ON | META_CTRL_LOCK; *************** *** 403,408 **** --- 405,420 ---- bridge.redraw(); return true; + case 57: //ALT->CTL + metaPress(META_CTRL_ON); + bridge.redraw(); + return true; + + case 82: //F1->ESC + sendEscape(); + bridge.redraw(); + return true; + } } catch (IOException e)
コンパイル
その前に
ProGuard | Official website
から ダウンロードしてproguard.jar を
connectbot/tools/proguard.jar
に配置
android target を変えないとコンパイルできなかったので7に変更
$ android update project --target 7 --path $PWD $ ant proguard debug #またapacheで公開 $ cp bin/ConnectBot-debug.apk /var/www
Tabletでアクセスしてダウンロード,インストール.
なんとか 出来ました
以上