構造研 | 後藤班 | 野田班 | 過去ログ |

Androidメモ - *Xperia z4用

目次

Xperia z4用

ubuntu phoneが出るまで機種変更は待とうと思っているうちに、 BQMeizからubuntu phoneは出てくれて購入可能にはなったものの、 技適マークのない機種を日本で日本人が使うことに対してはまだ 規制緩和されていないので、それまで待とうかと思っているうちに、 is05が頻繁にシャットダウンして、一旦シャットダウンすると、リセットを押そうが、 バッテリーやsimカードを抜こうが、しばらく再起動できなくなってしまい、 通常業務に支障を来すようになってしまったので、急遽、 Xperia z4に機種変更することにした。 Xperia z4のAndroid 5.0.2は、is05のAndroid 2.3.4と比べて、格段に使いにくいし、わかりにくい。画面がでかくなって、スペックが高くなったのはいいものの、使いやすくするまで、相当に苦労しそうだ。 要は、is05のAndroid 2.3.4よりも更にブラックボックス化というか、 ユーザーには中身を見せない(わからせない)で使わせる、マックとかiphoneとかの方向性に近づいたというか...

私(後藤)としては、早くスマホがパソコン代わりになってくれないかなあと長い間 思い続けているが、ubuntu phoneがubuntuをそのまま小さくしたような、キーボードをつなげばubuntuパソコンになるようなスマホならと、期待していたのだ。 それはともかく、スマートフォンというのは、電話としては確かにスマートなのかもしれないが、パソコンとしてはまだまだダメダメじゃないだろうか。 まあ、スマホだのタブレットは、当初の設計思想からしてパソコンとは正反対なのだろうけど、普通に、ディレクトリーごとに自分の保存したいファイルを整理して管理したいだけなのに、デフォルトでは、ユーザーはディレクトリーなんか見れないようにされていて(大体においてパソコンでは基本ツールであるファイラーがない)、使うアプリによって、あるいは、ダウンロードだの、ファイル転送だの、ファイルの移動方法によって、ファイルがあちこちのディレクトリーにばら撒かれて、どこにあるのかまるで探せない状態になっていて、それをコンテンツマネージャーみたいなアプリ(決してファイラーではない)で探そうとすると、例えばmovieというところを選択すると、あちこちのディレクトリにばら撒かれている動画ファイルを一覧にして表示したり、documentsというところを選択するとあちこちのディレクトリにばら撒かれているテキストファイルだのpdfだのワードファイルだのを一覧にして表示したり、しかもその一つ一つのファイルが具体的にどこに置かれているのかまるでわからないようになっている。 そう言えば、以前、電気屋でipadをいじっていたら、自分の顔写真をとってしまい、あわてて自分の顔写真のファイルを消そうとipadの中を探しまわったけど、まったく発見できなかった。 まあ、スマートデバイスが人間と普通に対話できるぐらいに賢くなって、人間の質問に普通に答えて、人間の要求に普通に応じるぐらいのレベルに達したなら、確かにブラックボックスで中身が見えなくなってもいいかもしれない。 しかし、現状のスマホやタブレットは全然その域には達していない。 せっかく、一昔前のパソコンよりスペック的には高性能なのだから、 普通に中身の見れるいじれるパソコンそのものにしてもらえたら、 どんなにか利用価値が倍増するだろうに。

ここの分類で言うなら、消費端末ではなく、生産端末としても使えるようにしてほしいということ。

android6.0へのアップグレード

android6.0にしてもandorid5と大して変わらないということだったので、 恐る恐るアップグレードしたら、 ファイルやディレクトリへアクセスするパーミッションが、 アプリごとにしか許可されない設定で、 sdkでPCとつないで、adb pushとかでPCとファイルのやりとりすることが、 できなくなってしまった。 adbでもrun-asというコマンドを使って、 ディレクトリへのアクセスが許されているアプリ(パッケージ)の権限で アクセスできるらしいのだが、やってみたがアクセスできない。 困り果ててしまったが、いろいろ試しているうちに、 mtpfsコマンドでxperiaの内蔵メモリとsdcardをubuntu PC側にマウントできるようになり、 PC側から、androidのsdcardとかにファイルをコピーしたりもできるようになったので、 ひとまずは、ほっとした。が、転送速度が遅く、大きいファイルはコピーできないかも? まだ、しばらく苦労が続きそう。

Android6.0は、Android側のアプリからの内部メモリやSDカードへのアクセスも自由ではないし、usb接続したPC(特にUbuntu)からのアクセスはましてや不自由で不便極まりない。 mtpfsを使うと、ubuntu PCにAndroid内部メモリとSDカードをマウントできなくはないが、動作は遅く不安定で、ubuntu PC側のmp3ファイルとか大きいファイルをAndroid側にアップロードすると、指定したのとは違う変なディレクトリにアップロードされたりする。 Android側からubuntu PC側にダウンロードする方が動作は安定している。 なので、Androidで撮った動画とかをPCにダウンロードするには、このmtpfsのマウントを使えないことはないだろう。 ubuntu PCでCDからリップングしたmp3ファイルをAndroidにアップロードするには、不本意ながらgoogleドライブとかのクラウドサービスを使うのが一番 無難かも知れない。 ただ、こうしたクラウドサービスを使って、クラウドからAndroidにファイルをダウンロードすると、内部メモリのdownloadディレクトリにダウンロードされてしまうので、 それをSDカードの指定のディレクトリに移動するには、Android側でX-ploreとかのファイラーを使って操作できなくはない。 その辺が落としどころか。つくづく、Android5.0.2のままにしておくべきだった。

後藤がインストールしたアプリ類

ディレクトリ構成

テキストエディタ(メモ帳)

なんと、Xperia z4にはメモ帳がないので、何かをインストールして使わなければならない。 gEditorが機能的には程良いと思っていたのだが、何かダウンロードできないので、いくつか試してみた。

TermVim?

USBデバッグモード

Xperiaがパソコンに認識されない

PC側をUbuntu16.04にアップグレードしたらか、スマホ側をAndroid7.0にアップグレードしたら、マウントされるようになっていた。Ubuntu12.04のマシンにはAndroid7.0はマウントされないので、Ubuntu16.04にアップグレードしたことによる改善だろう。

以下はUbuntu12.04+Android6.0以前の症状。

USBケーブルでパソコンとつないでも、パソコン側にマウントされない。

$ sudo add-apt-repository ppa:langdalepl/gvfs-mtp
$ sudo apt-get update
$ sudo apt-get upgrade
gvfsをインストールしてもだめ。

Bus 003 Device 002: ID 0fce:51c9 Sony Ericsson Mobile Communications AB
ATTR{idVendor}=="0fce", ATTR{idProduct}=="51c9", SYMLINK+="libmtp-%k", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
と書き込んで再起動したらどうか。 更に/etc/udev/rules.dの中の70-android.rulesに
SUBSYSTEM=="usb", SYSFS{idVendor}=="0fce", MODE="0666", GROUP="plugdev"
と書いて再起動してみる。 だめ。/lib/udev/rules.dの中に、69-libmtp.rulesというファイルがあるので、この中に上記を書きこんでみる。 これをしたら、自動マウントはされないけど、SDKでadbを実行すると、認識されるようになった。synapticからMTP関係のライブラリ類をいくつかインストールしたことも効いているかも。 ubuntu側のSDKのandroid-sdk-linux_x86/platform-toolsにterm-vim-release.apkをダウンロードして
./adb install term-vim-release.apk
を実行したら、TermVim?がインストールされた。おお。

ubuntu PCにxperiaをマウントする

準備

# Allow non-root users to specify the 'allow_other' or 'allow_root'
# mount options.
#
user_allow_other
mtpfs        /media/xperia        fuse.mtpfs    allow_other,rw,user,noauto    0    0
を追加。

使い方

sudo mtpfs -o allow_other /media/xperia
でマウント。
sudo umount /media/xperia
でアンマウント。 ファイルブラウザーのGUI操作で PCからandroid側への書き込みはできるようだが、転送速度は非常に遅く、大きいファイルはコピーできない? 調査中。

adb

以下はAndroid6.0では、パーミッションが認めらないのでできなくなってしまった。 run-asをやってもうまくいかない。

ubuntu側のadbのあるディレクトリで、

sudo ./adb kill-server
sudo ./adb start-server
sudo ./adb devices
までを実行。これをスクリプトとかにしておけばいい。 そうすると、adb pushでubuntu側のファイルやディレクトリをandroid側にコピーしたり、 adb pullでandroid側のファイルやディレクトリをubuntu側にコピーしたりできるようになる。

ubuntu側からandoroid側へのコピー

ubuntu側のディレクトリ(~/dir1)を(ディレクトリごと)android側のsdカード(/sdcard1/)にアップロードするには、 ubuntu側のadbのあるディレクトリに入って、
./adb push ~/dir1 /sdcard1/dir1/
みたいに。アップロード先に送りたいディレクトリ名(dir1/)までを書く必要がある。書かないと、ディレクトリ(dir1)の中身だけが/sdcard1/の階層に送られてしまう。

android側からubuntu側へのコピー

同様に、andoroid側の内蔵ストレージ内のMemoというディレクトリをディレクトリごと、 ubuntu側の今いるディレクトリ内にコピーしたければ、
./adb pull /storage/sdcard0/Memo ./Memo/

android内をubuntu側から操作するには、

./adb shell

google日本語(godanローマ字入力)

google日本語のgodan入力をするには、まず、google日本語をplay ストアからインストールし、言語設定でgoogle日本語を選択、google日本語のアイコンをクリックして、入力キーボードを左右にフリックして、godan入力に切換。 濁点と半濁点が左右逆なのはまだ修正されていない。

SDK(ubuntu側)

Package 'Android Wear ARM EAVI v7a System Image, Android APIN, revision 1' depends on SDK Platform Android N Preview, revision 3'
と出てインストールできない。OptionのForce httpsとかいろいろ変えてみてもだめ。

android-sdk_r1.0-linux.tgzとかの古いバージョンのadbは途中まで実行できて、

sudo ./adb kill-server


sudo ./adb start-server
を実行すると、

* daemon not running. starting it now on port 5037 *
* daemon started successfully *

sudo ./adb devices
を実行すると
List of devices attached 
BH900JM542	offline

sudo ./adb shell
を実行すると、

error: device offline

/lib/udev/rules.dの中に、69-libmtp.rulesというファイルがあるので、

ATTR{idVendor}=="0fce", ATTR{idProduct}=="51c9", SYMLINK+="libmtp-%k", ENV{ID_MTP_DEVICE}="1", ENV{ID_MEDIA_PLAYER}="1"
と書き込んで再起動したら、adb shellでandroid内が見れるようになった。 MTP関係のライブラリいくつかをsynapticからインストールしたことも効いてるかも。

USB有線キーボード

有線キーボードをつないでから、 設定→Xperia接続設定→USB接続設定→USB機器を検出、で使えるようになる。 この状態で、Jota+とかのテキストエディタを使うと非常に快適。 これだけでもだいぶ満足ではあるが、 ということは、SDKが使えるようになって、TermVim?が使えるようにできれば、 日本語をviで打てるという理想の環境が実現するので、そのうち、 がんばってみる。

無線テザリング

設定→その他の設定→テザリング→「Wi-Fiテザリング」を起動→Wi-Fiテザリング設定→「Wi-Fiテザリング設定」を押すと、SSIDとパスワードが表示されるので、パソコン(ubuntuでもWindowsでも)から普通に無線でつなげる。セキュリティはWPA2 PSK


以下はis05の話題

is05

Android Terminalのインストール(IS05側)

Andoroid用のフリーの端末エミュレータはいくつかあるが、 Androidマーケットから手軽にインストールできるAndroid Terminalを取りあえず インストールしてみる。 メニューキー(ディスプレイ下の左端の「三」)→設定→初期コマンドで、
export PATH=/data/local/:$PATH
とかにしておけば、以下のbusybox(やvim)を/data/local/にインストールした場合、 busyboxコマンドを実行する際に、いちいち/data/local/busybox hogeみたいに パスを書かなくてもよくなる。

Android SDKのインストール(Linuxパソコン側)

LinuxパソコンとIS05をつなぎ、パソコン側から、IS05(Android)側を操作できるようにする手順。

./adb kill-server
./adb start-server
./adb devices
./adb shell

で、$\$$プロンプトが表示され、IS05内をいじれるようになる。

busyboxのインストール(パソコンからIS05へ)

Android用の端末にはない多くのLinuxコマンドが使えるようにする手順。

./adb push ~/******/data_local /data/local/
./adb shell chmod 755 /data/local/rageagainstthecage.bin
./adb shell chmod 755 /data/local/autoexec.sh
./adb shell chmod 755 /data/local/busybox

Linux localhost 2.6.32.9-perf #1 PREEMPT Fri Feb 25 16:49:03 JST 2011 armv7l GNU/Linux

rootを取る手順(IS05側)

結局、失敗したのでやらない方がいい。 上記のrootkit_is03.zipのreadme.txtに書いてあることを引き続きやってみる。 パソコン側のadbのあるディレクトリ(platform-tools)で、
./adb install ~/****/jackpal.androidterm.apk
を実行。但し****は、rootkit_is03.zipを展開したディレクトリ。 IS05側の端末上でのコマンド打ち込みがしんどいので、あとはIS05用キーボードが届いてから。 ということで、上記のrootkit_is03.zipのreadme.txtに書いてあることを引き続きやってみると、IS05側でrageagainstthecage.binを実行して端末(Android Terminal)がエラー終了後、再起動させようとしているうちに画面が真っ黒になってハングアップ。 色々いじっているうちに今度は画面が真っ白になってハングアップ。 あきらめて電源を落として再起動したら正常化。 怖いのでIS05関係の情報が出てくるまで保留。

Bluetoothキーボード

エレコムのTK-FBP017BKは使える。但し、Elecom BT Assistantと (日本語入力には)EleWnn?をインストールする必要あり。 ところで、ESCキーと漢字/半角切り替えキーが同じっていうのは非常によろしくない。 将来的にviで日本語入力とか考えているのだが、雲行きが怪しい。

Vim for Android

ここここのやり方を 参考にする。 Linuxパソコン側で、 アップローダから、 vimの最新版、vimruntime.zip, terminfo.zipをダウンロードする。 SDK用のパスを切ってなければ、adbのあるディレクトリ(platform-tools)に ダウンロードしておく。 そこで、vimruntime.zipとterminfo.zipを展開してしまう (IS05側に持っていってからbusybox unzipしようとしたら、うまくいかなかったので)。 vimruntime/とterminfo/のディレクトリが1個ずつできるだけである。 vimの最新版(vim20110227とか)をvimにmvする。 適当なディレクトリvimvim/を作って、 vimruntime/, terminfo/, vimをその中に移動。 IS05をパソコンとUSBデバッグモードでつないで、 パソコン側のadbのあるディレクトリ(platform-tools)でrootになり、 以下を実行。
./adb push ./vimvim /data/local/
次に、パソコン側で、
./adb shell
をやって、IS05にアクセスできるようにする。 初回は、以下の手順でvimを起動してみる。

cd /data/local
export PATH=$PATH:/data/local
export VIMRUNTIME=/data/local/vimruntime
export TERMINFO=/data/local/terminfo
./vim

vimが起動できることがわかったら、exみたいな名前で、

export PATH=$PATH:/data/local
export VIMRUNTIME=/data/local/vimruntime
export TERMINFO=/data/local/terminfo
と書かれたファイルをvimで編集して保存。
chmod 755 ex
として実行属性を与えておく。 そうすれば、まず、/data/local/exをやってから、/dala/local/vimで vimを起動できるかなと思ったら、
E483: Can't get temp file name
のエラー。 エンターを数回押せば、一応、起動する。 エレコムのTK-FBP017BKキーボードは、ESCキーと漢字/半角切り替えキーが同じなので、 編集モード、入力モード切り替えがESCキーではできないが、 どうも、↑PgUp?キーがESCキーの代りになるようだ。 適当に入力してから、↑PgUp?キーで編集モードに戻って、 hjklキーをたたいてみたら、hjklキーで移動ができる。 ただ、ESCキーで漢字モードにして漢字を入力してみると、 数文字ぐらいは入力できそうな感じだが、入力しているうちにエラー終了になる。 ちなみに、Androidキーボードからvimを起動した場合、←キーがESCキーの代わりに なるようだ。

テザリング(Ubuntu編)

ubuntuの場合(割と簡単)

ubuntuではうまくいかないという話もあったが、結果的にはeasy tether liteで特に問題なくつなげた。

使い方

$ easytether connect&
と打ち込むと、接続される。 Auto easytether0に接続されました」みたいな接続成功コメントが出た後、 ネットに繋がらないときは、IS05側で電波OFFモードになってしまっている場合がある。 そのときは、アンテナアイコンをタップして電波OFFモードを解除する。

簡単につなげてしまったので、拍子抜けである。 USBケーブル用のドライバをPC側にインストールする必要もなかった。 Windowsはまだ試してないが、必要に迫られたら、またそのうち。 無料版のeasy tether liteはhttpsは使えない。 つまり、ウェブメール類は使えなくなるが、メーラーを使うぶんには問題ない。

これでプロジェクタを使った授業やプレゼンの際に普段のUbuntu環境でどこでもネットが使えるようになった。

windows8の場合(ちょっと難しい)

PC側

IS05側

ubuntuの際のLinux用インストールのまま

使い方

easytetherのショートカットをクリックすると、下部タスクバーにアイコンが表示され、 「connected to easytether」みたいな表示が出れば、接続成功。

テザリング料金

IS05など、auの通信方式がwinの場合、ISフラットであれば無料らしい
スマートフォン単独利用時・
+WiMAX搭載スマートフォンでの
Wi-Fi/USBテザリング・
EZweb・Eメール
無料

LTEだと、月額525円か。

Firefox

is05のデフォルトのブラウザーは、file:///mnt/sscard/でsdcard内に置いたhtmlファイルを参照しても、表示させてくれない。コンテンツマネージャーから開くと、htmlビューワーとかいうツールで開いてくれるが、画像は読み込んでくれないし、そこから他のhtmlファイルや音声ファイルのリンク先に飛べない。 Firefox36とかのapkをインストールしてみたら、ちゃんとfile:///mnt/sdcard/でsdcard内のhtmlファイルが参照でき、普通に同じディレクトリ内に置いた各種ファイルにリンクで飛べる。

BASIC

TABasic

X11-Basic

Mobile BASIC Language

fkmBASIC