Android端末をLinuxのタッチパッド替わりにしたい(Bluetooth利用のBlink)

最近またポインティングデバイスにApple Wireless Trackpadを利用するようになりましたが持ち運びには少し嵩張ります.マウスを持ち運ぶのもかさばります.
Ubuntu TouchでHDMI接続時にタッチデバイスになるというのを見てAndroid端末をタッチデバイスにすることが出来るのでは?それなら荷物増え無いしいいかもと思って少し調べてみました.

BlinkはBluetooth接続かつPC側でデーモンを動かす必要があります.
先ずBluetoothペアリングをしておき,PC側でデーモンを導入します.

  • 必要パッケージの導入

$ sudo apt install bluez python-bluez xdotoolsudo apt-get install bluez python-bluez xdotool
  • デーモンの導入

$ git clone https://github.com/drpain/blink-server.git ~/.blink

以下のようにしてデーモンを起動するのですが,この記事を書いている時点でのDebian stretch testing amd64では以下のようなエラーとなります.

$ sudo ~/.blink/bluetooth_server.py
Traceback (most recent call last):
  File "/home/mk/.blink/bluetooth_server.py", line 25, in <module>
    profiles         = [ SERIAL_PORT_PROFILE ]
  File "/usr/lib/python2.7/dist-packages/bluetooth/bluez.py", line 176, in advertise_service
    raise BluetoothError (str (e))
bluetooth.btcommon.BluetoothError: (2, 'No such file or directory')

GuihubのHELPを参考に*/etc/bluetooth/main.conf*を以下のように修正します.

diff --git a/bluetooth/main.conf b/bluetooth/main.conf
index 372fd8c..2f7cc4a 100644
--- a/bluetooth/main.conf
+++ b/bluetooth/main.conf
@@ -64,6 +64,9 @@
 # 'false'.
 #FastConnectable = false

+# "drpain/blink-server: This is the server you would need to be able to run the Blink Android Application." https://github.com/drpain/blink-server
+DisablePlugins = pnat
+
 #[Policy]
 #
 # The ReconnectUUIDs defines the set of remote services that should try

設定を反映するためにbluetoothdを再起動してサーバを再起動します.

$ sudo service bluetooth restart

サーバは要rootのようです.
この状態でAndroid側からクライアントPCを選択して接続すればok.

$ sudo ~/.blink/bluetooth_server.py
READY FOR CONNECTIONS, RFCOMM channel 1
('INBOUND CONNECTION ', ('68:76:4F:3B:D1:E0', 1))
COMMAND RECEIVED [{"action":"mouse-move","x":null,"y":null}]
['xdotool', 'mousemove_relative', '--', 'None', 'None']
COMMAND RECEIVED [{"action":"mouse-move","x":-1,"y":0}]
['xdotool', 'mousemove_relative', '--', '-1', '0']
COMMAND RECEIVED [{"action":"mouse-move","x":0,"y":0}]
['xdotool', 'mousemove_relative', '0', '0']
COMMAND RECEIVED [{"action":"mouse-move","x":-1,"y":0}]
['xdotool', 'mousemove_relative', '--', '-1', '0']

上の方のモード切替スイッチをタップして規定の「Swipe Area」から「Mouse」にします.「Mouse Area」で操作するとxdotoolのログが大量に出つつ操作できます.

27629912281 e0ba729509 n
27094267013 3fb8577a76 n

操作は少し解りづらくてこんな感じです.

  • タップ→左クリック

  • タップ, ホールド, リリース → 右クリック

中クリックやドラッグは多分未実装で使えません.
カーソル移動はちらつきますがとりあえず使える感じです.

でも導入に要設定変更&要rootなのが面倒ですね.

PulseAudioでライン入力を使う

PCの熱が辛い

最近暖かくなってきました.NotePCにあまり仕事をさせていなくてもCPU温度は65~75度くらい.

$ acpi -ti
Thermal 0: ok, 71.0 degrees C
Thermal 0: trip point 0 switches to mode critical at temperature 99.0 degrees C

Flash動画をブラウザ経由で再生すると初めのうちはそうでもないけどすぐに130%くらいCPUを使ってPCの動作重く&CPU熱くなります(特にニコ生TS).そして最近は100度を超えてシャットダウンしてしまうように.

  • 再生初め

$ top -bn1 | grep -A 3 PID
  PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND
21114 mk        20   0 1114852 214732 103616 S  43.8  1.3   0:13.54 plugin-containe
22343 mk         9 -11  588044  12992   9416 S  12.5  0.1   1:30.03 pulseaudio
 3816 mk        20   0  561012 172172 147924 S   6.2  1.1   1:51.02 Xorg
  • 暫く経ったら

$ top -bn1 | grep -A 3 PID
  PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND
21114 mk        20   0 1168452 241256 125892 S 147.1  1.5   2:12.09 plugin-containe
25291 mk        20   0   43820   3936   3176 R  17.6  0.0   0:00.03 top
 3816 mk        20   0  574540 171532 146696 S  11.8  1.1   2:08.95 Xorg

※plugin-containeがpepperflashのプロセス.

pepperflashをAdobe Flash Playerに変更するとましになったような気もしましたがよくクラッシュする&スクリーンセーバ自動抑制機能などもないようなのでちょっと使いづらいです.

$ sudo update-alternatives --config flash-mozilla.so
alternative flash-mozilla.so (/usr/lib/mozilla/plugins/flash-mozilla.so を提供) には 2 個の選択肢があります。

  選択肢    パス                                                                          優先度  状態
------------------------------------------------------------
* 0            /usr/lib/browser-plugin-freshplayer-pepperflash/libfreshwrapper-flashplayer.so   70        自動モード
  1            /usr/lib/browser-plugin-freshplayer-pepperflash/libfreshwrapper-flashplayer.so   70        手動モード
  2            /usr/lib/flashplugin-nonfree/libflashplayer.so                                   50        手動モード

現在の選択 [*] を保持するには <Enter>、さもなければ選択肢の番号のキーを押してください:

スマホやChromeCastで動画再生を試みる&PC経由でBluetoothヘッドセットで音声を聞きたい

スマホやChromeCastで再生して外部ディスプレイに映すようにしたらどうだろうと試してみるとニコニコ動画/生放送は画質が悪くなってしまうけど他のサービスでは良さそうです.しかし音声をBluetoothヘッドセットで聞きたいです.それもPCと一緒に.
ということで,以下のような接続を試してみました.PC(Debian)でのBluetoothはblueman-appletを,音声デバイスの切り替えなどはpavucontrolを,Bluetooth音声のプロファイルはA2DPを利用しています.

  • ○ Android → Bluetooth → PC(Debian) → Bluetooth HeadSet

  • ○ iOS → Bluetooth → PC(Debian) → Bluetooth HeadSet

  • ✘ Android → 3.5mmライン → PC(Debian) → Bluetooth HeadSet

  • ✘ iOS → 3.5mmライン → PC(Debian) → Bluetooth HeadSet

  • ✘ ChromeCast → HDMI → HDMIモニタ → 3.5mmライン → PC(Debian) → Bluetooth HeadSet

Bluetooth ではうまく行くのですが,3.5mmライン入力がうまく行きません.ChromeCastはBluetoothが使えないのでちょっと困ります.
ライン入力の波形は出ているしレコーダアプリでラインからの音の録音は出来るのでPCに音は流れてきているようです.

以下のFAQページによると`module-loopback`モジュールを読み込むと良いようです.

以下のようにすると反映されてライン入力からの音が出るようになりました.

$ pactl load-module module-loopback

ログアウトすると設定は消えるので以下の辺りの設定ファイルに書いておくと良さそうです.

$ man default.pa|grep -A5 'SYNOPSIS'
SYNOPSIS
       ~/.config/pulse/default.pa

       /etc/pulse/default.pa

       /etc/pulse/system.pa

/etc/pulse/default.pa~/.config/pulse/default.pa にコピーして編集してPulseAudioを再起動して反映出来ました.

$ mkdir -p ~/.config/pulse
$ cp /etc/pulse/default.pa ~/.config/pulse/default.pa
$ vi ~/.config/pulse/default.pa
$ diff /etc/pulse/default.pa ~/.config/pulse/default.pa
167a168,170
>
> # 3.5mm Juck In
> load-module module-loopback
$ /usr/bin/pulseaudio -k
$ /usr/bin/pulseaudio --start --log-target=syslog

再起動しても問題無さそうです.
とりあえずこの状態でライン入力からの音声とPCの音声が同時にBluetoothヘッドセットで聞ける状態になりました.

しかし問題点がひとつ.ライン入力とBluetooth(A2DP)入力を同時に行おうとするとライン入力の音が聞こえなくなってしまいます.これは要調査ですね…….

<追記>

~/.config/pulse/default.pa の以下をコメントアウトで行けてるよう.これ出力側だけかと思ってたんですが入力も効くんですかね.

> #load-module module-switch-on-connect

てことでライン入力とBluetooth入力とPCの音声が全部同時に出力できるようになりました :)

</追記>

環境

Linux環境でAndroidアプリを利用できるShashlikを試す

Linuxデスクトップ環境でAndroidアプリを利用できるShashlikを試してみました.
Shashlikを導入してAndroidパッケージの.apkを導入すると通常のLinuxアプリケーションのように呼び出せるというものです.
ただし,.apkはx86サポートのものでないといけないようです.
現在は0.9.1が最新で,Kubuntu(KDE Plasma 5)向けとなっています.

以下はShashlikを使ってFlappy Birdが動いている動画です.

Shashlikの導入

今は.debが配布されているのでこれをダウンロードして導入します.入手場所は以下のページから.140MBと結構大きいです.

$ wget http://static.davidedmundson.co.uk/shashlik/shashlik_0.9.1.deb
$ sudo dpkg -i shashlik_0.9.1.deb

/opt/shashlik以下に導入されます.qemuで動くみたいですね.

$ dpkg -L shashlik
/.
/opt
/opt/shashlik
/opt/shashlik/android
/opt/shashlik/android/emulator-user.ini
/opt/shashlik/android/system
/opt/shashlik/android/system/build.prop
/opt/shashlik/android/config.ini
/opt/shashlik/android/kernel-qemu
/opt/shashlik/android/system.img
/opt/shashlik/android/ramdisk.img
/opt/shashlik/android/userdata.img
/opt/shashlik/bin
/opt/shashlik/bin/aapt
/opt/shashlik/bin/ddms
/opt/shashlik/bin/shashlik-install
/opt/shashlik/bin/bios.bin
/opt/shashlik/bin/constants.py
/opt/shashlik/bin/shashlik-run
/opt/shashlik/bin/adb
/opt/shashlik/bin/vgabios-cirrus.bin
/opt/shashlik/bin/emulator64-x86
/opt/shashlik/data
/opt/shashlik/data/shashlik-apps.directory
/opt/shashlik/data/shashlik.png
/opt/shashlik/lib
/opt/shashlik/lib/libc++.so
/opt/shashlik/lib64
/opt/shashlik/lib64/lib64GLES_V2_translator.so
/opt/shashlik/lib64/lib64EGL_translator.so
/opt/shashlik/lib64/lib64OpenglRender.so
/opt/shashlik/lib64/libGLES_V2_translator.so
/opt/shashlik/lib64/lib64GLES_CM_translator.so
/opt/shashlik/lib64/libGLES_CM_translator.so
/opt/shashlik/lib64/libEGL_translator.so
/opt/shashlik/lib64/libut_rendercontrol_dec.so
/opt/shashlik/lib64/libOpenglRender.so

Androidアプリのパッケージを入手

Shashlikの上で動かすAndroidアプリのパッケージを入手します.

Once installed grab any Android application package (APK) from the net.
For example our favourite app, Flappy Bird, can be found here: http://beste-apps.chip.de/android/app/flappy-bird-apk-android-app,cxo.66885070/

ということでここからFlappy Birdを入手しました.

Androidアプリの導入

shashlik-installコマンドを使ってAndroidアプリを導入します.

$ /opt/shashlik/bin/shashlik-install ~/Downloads/com.dotgears.flappybird.apk
Successfully installed Flappy Bird
Connecting to deprecated signal QDBusConnectionInterface::serviceOwnerChanged(QString,QString,QString)
QDBusConnection: session D-Bus connection created before QCoreApplication. Application may misbehave.
QDBusConnection: session D-Bus connection created before QCoreApplication. Application may misbehave.
kbuildsycoca4 running...
kbuildsycoca4(19354) VFolderMenu::loadDoc: Parse error in  "/home/mk/.config/menus/applications-merged/xdg-desktop-menu-dummy.menu" , line  1 , col  1 :  "unexpected end of file"
QDBusConnection: session D-Bus connection created before QCoreApplication. Application may misbehave.
QDBusConnection: session D-Bus connection created before QCoreApplication. Application may misbehave.
Successfully installed Flappy Bird

20160222_17:02:57-19417
これでKDE Plasma 5環境ならスタートメニューに登録されるはずです.

ちなみに,x86じゃない.apkを導入しようとするとこんな感じで怒られました.
20160222_18:02:13-5944

Androidアプリの起動

KDE Plasma 5環境ならスタートメニューに登録されているはずですが,今の環境はawesomeなのでメニューに出てきません.
コマンドラインから起動します.

$ /opt/shashlik/bin/shashlik-run com.dotgears.flappybird FlappyBirds

起動にはそこそこ時間がかかります.

20160222_18:02:35-30707
20160222_18:02:52-31990
20160222_18:02:15-344

起動した後はもたつきなどもなく普通に動く感じです.
ただ,真っ黒な画面のままで起動に失敗することがあります.起動が速くなって安定して動くようになるととても便利そうです.

しかし問題は.apkの入手先ですね.PlayStoreが使えないと苦労しそうです.


Android の Google Authenticator のデータをダンプしてバックアップする

Android の Google Authenticator 色々な認証に使えて便利ですが,以前 Nexus5 を紛失した時や LGL22 でデータが飛んでしまった後復旧が面倒でした.どうにかバックアップが取れないかなと調べてみました.

Android からデータを取得

/data/data/com.google.android.apps.authenticator2/databases/databases がデータが格納されているファイルらしいです.
adb pull で持ってきたいけど権限がないので一旦 /storage/sdcard0/ に cp する

% adb shell
shell@g2:/ $ su
root@g2:/ # cp /data/data/com.google.android.apps.authenticator2/databases/databases /storage/sdcard0/

ローカルPC に退避

% adb pull /storage/sdcard0/databases .

/storage/sdcard0/ に cp したデータを消す.暗号化領域の下のはずだけど一応上書きしてから削除

% adb shell
shell@g2:/ $ su
root@g2:/ # ls -l /storage/sdcard0/databases
-rw-rw---- root     sdcard_r    16384 2015-10-09 22:51 databases
root@g2:/ # head -c 16384 /dev/random > /storage/sdcard0/databases
root@g2:/ # head -c 16384 /dev/random > /storage/sdcard0/databases
root@g2:/ # head -c 16384 /dev/random > /storage/sdcard0/databases
root@g2:/ # head -c 16384 /dev/random > /storage/sdcard0/databases
root@g2:/ # head -c 16384 /dev/random > /storage/sdcard0/databases
root@g2:/ # head -c 16384 /dev/random > /storage/sdcard0/databases
root@g2:/ # rm /storage/sdcard0/databases
root@g2:/ # ^D
shell@g2:/ $ ^D

データ形式を確認してdump

該当ファイルは file コマンドによると SQLite3 のようなので dump してみる

% file ./databases
./databases: SQLite 3.x database
% sqlite3 ./databases
SQLite version 3.8.11.1 2015-07-29 20:00:57
Enter ".help" for usage hints.
sqlite> .dump
PRAGMA foreign_keys=OFF;
BEGIN TRANSACTION;
CREATE TABLE android_metadata (locale TEXT);
INSERT INTO "android_metadata" VALUES('ja_JP');
CREATE TABLE accounts (_id INTEGER PRIMARY KEY, email TEXT NOT NULL, secret TEXT NOT NULL, counter INTEGER DEFAULT 0, type INTEGER, provider INTEGER DEFAULT 0, issuer TEXT DEFAULT NULL, original_name TEXT DEFAULT NULL);
 :

ここで取得した PRIMARY KEY を HOTP TOKEN を割り出す script の "google-authenticator.py に食わせると Android App と同じコードが帰ってくるのを確認しました.勿論普通に認証も可能.

IMG_20151010_012917

ということで要root ですが, /data/data/com.google.android.apps.authenticator2/databases/databases を退避して他の端末に持って行っても動作するかも.少なくとも PRIMARY KEY は入手できるので手動で入力すれば OK ですね.
とはいえ端末紛失時には作りなおしたほうが良いでしょうが.

root が取れない場合は登録時に PRIMARY KEY をメモしておくくらいですかね.QR Code だけしか見えない場合は Google Authenticator に食わせる前に別のリーダーを利用したりすれば可能です
例えば以下のような読み取り内容の場合 6QHI5WW6H3FMJ2ZI が PRIMARY KEY です.

otpauth://t│·········· otp/mk@micro?secret=6QHI5WW6H3FMJ2ZI

Android の所謂Stagefright 問題対応を試す

てことで暫く運用して問題なさそう&思ってたより対応遅そうなのでこちらにもメモ.
所謂Stagefright 問題.

メディアプレイヤーフレームワーク Stagefright に欠陥があり,メディアファイルにより任意のコードが実行可能.対象はAndroid 2.2(Froyo) 以降全てと幅広い.(なお,95%のAndroid が対象らしい.逆に2.1以前が 5% もあるのに驚いたり)
MMS 経由で攻略メディアファイルを送信してユーザの操作なしに乗っ取り可能.日本ではMMS が利用できる環境は少ないけれどこのパターンは気づかないうちに乗っ取られるのがとても怖い.

脆弱性の確認は以下のアプリでも可能.

対策はAndroid 5.1.1_r5 にする,Google が各端末メーカに提供したパッチを配布したのでそれがリリースされるのを待って適用する.
しかし,Nexus でさえやっと8/5 にリリースなので,日本の端末は何時になるだろう……という感じ.

ちなみにCynamonMod は即日対応完了している.

先ずはMMS で勝手にメディアファイルが展開されるのを防げないかと幾つかのアプリを確認してみたがメディアを自動読み込みしないというような設定のあるものは見当たらなかった.

検索したりしていると以下のフォーラムを発見.build.drop でStagefright を無効にしてしまうというもの.

media.stagefright.enable-aac=false
media.stagefright.enable-fma2dp=false
media.stagefright.enable-http=false
media.stagefright.enable-player=false
media.stagefright.enable-qcp=false
media.stagefright.enable-scan=false

build.drop の書き換えは権限さえあれば以下のアプリでお手軽に出来る.

root が無くても書き換えが可能な場合もあるらしいが,AU で契約している端末(KYOCERA URBANO PROGRESSO)はダメだった.

% ./adb pull /system/build.prop
% vim build.prop
% ./adb push ./build.prop /system/build.prop 
failed to copy './build.prop' to '/system/build.prop': Read-only file system
% ./adb shell
shell@android:/$ ls -l /system/build.prop
rw-r--r- root     root         4977 2014-07-29 21:20 build.prop
/dev/block/mmcblk0p12 /system ext4 ro,relatime,user_xattr,barrier=1,nodelalloc,data=journal 0 0

手持ちのAU と契約している端末は2012年5月のものらしい.セキュリティ修正は何時やってくるのか,そもそもやってくるのか…….

可能なら CynamonMod にしてしまいたいところですが,国内端末とかはなかなかですね…….

TeamViewer Linux版 を少し試す & 文字化け対応

[TeamViewer Linux版 あるのか.しらなかった

“Linux版TeamViewerの無料ダウンロード” https://www.teamviewer.com/ja/download/linux.aspx

https://plus.google.com/u/0/+KenichiroMATOHARA/posts/MtcA41kdpD9
(元投稿消えている)

ということでTeamViewer にLinux版があるのを知り試してみました.

導入自体はパッケージがあるのでこんな感じで(hash は見つからなかった……)
amd64版もあるようですがteamviewerd.service が起動しなかったりしたのでMultiarch なi386 を利用しています.arm版もあると嬉しい.

% wget http://download.teamviewer.com/download/teamviewer_i386.deb
% sha1sum teamviewer_10.0.41499_i386.deb 
438a1b27531faf8a89148b011e5214aa3f95ab1e  teamviewer_10.0.41499_i386.deb
% sha256sum teamviewer_10.0.41499_i386.deb 
0694c756b8cb5f2b09c8d6db960ced3e899d4ce43060e77ef4f1c36254dc31c4  teamviewer_10.0.41499_i386.deb
% sudo dpkg -i teamviewer_10.0.41499_i386.deb

このとき日本語Linux環境で利用した場合所々文字化けが起こります.
Screenshot from 2015-08-02 08-03-25

TeamViewer はWine経由で動作しているよう&Wineでよく見かける感じの文字化けだったのでWineの設定を探し設定変更したところ文字化けしなくなりました.

  • 修正内容
    /opt/teamviewer/tv_bin/wine/share/wine/wine.inf[Fonts] セクションに以下の設定を追加
HKLM,%FontSubStr%,"MS Gothic",,"Ume Gothic"
HKLM,%FontSubStr%,"MS PGothic",,"Ume Gothic"
HKLM,%FontSubStr%,"MS UI Gothic",,"Ume Gothic"
HKLM,%FontSubStr%,"MS Mincho",,"Ume Gothic"
HKLM,%FontSubStr%,"MS PMincho",,"Ume Gothic"

デーモンの再起動

% teamviewer daemon stop
% teamviewer daemon start

次バージョン以降で修正されることを期待してサポートにも投げてみました.(窓口合ってたかな?)

いつもはssh over (X/RDP/VNC)な感じで事足りてたしTeamViewer はプロプラ&個人用途以外は有償なのであまり興味はなかったのですが,今回使ってみてAndorid のの画面も引っ張ってこれるのはいいなと思いました.丁度ちょっと前に幾つかのAndroid版VNC Server software を試してうまく動かなかったので特に.

TeamViewer Linux版 を少し試す & 文字化け対応

[TeamViewer Linux版 あるのか.しらなかった

“Linux版TeamViewerの無料ダウンロード” https://www.teamviewer.com/ja/download/linux.aspx

https://plus.google.com/u/0/+KenichiroMATOHARA/posts/MtcA41kdpD9
(元投稿消えている)

ということでTeamViewer にLinux版があるのを知り試してみました.

導入自体はパッケージがあるのでこんな感じで(hash は見つからなかった……)
amd64版もあるようですがteamviewerd.service が起動しなかったりしたのでMultiarch なi386 を利用しています.arm版もあると嬉しい.

% wget http://download.teamviewer.com/download/teamviewer_i386.deb
% sha1sum teamviewer_10.0.41499_i386.deb 
438a1b27531faf8a89148b011e5214aa3f95ab1e  teamviewer_10.0.41499_i386.deb
% sha256sum teamviewer_10.0.41499_i386.deb 
0694c756b8cb5f2b09c8d6db960ced3e899d4ce43060e77ef4f1c36254dc31c4  teamviewer_10.0.41499_i386.deb
% sudo dpkg -i teamviewer_10.0.41499_i386.deb

このとき日本語Linux環境で利用した場合所々文字化けが起こります.
Screenshot from 2015-08-02 08-03-25

TeamViewer はWine経由で動作しているよう&Wineでよく見かける感じの文字化けだったのでWineの設定を探し設定変更したところ文字化けしなくなりました.

  • 修正内容
    /opt/teamviewer/tv_bin/wine/share/wine/wine.inf[Fonts] セクションに以下の設定を追加
HKLM,%FontSubStr%,"MS Gothic",,"Ume Gothic"
HKLM,%FontSubStr%,"MS PGothic",,"Ume Gothic"
HKLM,%FontSubStr%,"MS UI Gothic",,"Ume Gothic"
HKLM,%FontSubStr%,"MS Mincho",,"Ume Gothic"
HKLM,%FontSubStr%,"MS PMincho",,"Ume Gothic"

デーモンの再起動

% teamviewer daemon stop
% teamviewer daemon start

次バージョン以降で修正されることを期待してサポートにも投げてみました.(窓口合ってたかな?)

いつもはssh over (X/RDP/VNC)な感じで事足りてたしTeamViewer はプロプラ&個人用途以外は有償なのであまり興味はなかったのですが,今回使ってみてAndorid のの画面も引っ張ってこれるのはいいなと思いました.丁度ちょっと前に幾つかのAndroid版VNC Server software を試してうまく動かなかったので特に.

Android のTTS でハングアウトメッセージを流す

Ingressで複数人で移動することがあったのですが,連絡は基本的にGoogle ハングアウト.motercycle では基本的に確認できません.Android には標準でTTS(Text To Speak) が利用出来ます.ハングアウトメッセージをTTS に繋げることが出来たら大雑把に状況確認が出来るのではと試してみました.

N2 TTS の導入

TTS にはKDDI研究所のN2 TTS を利用しました.導入手順は以下のページにあります.

追加音声も4×4種類あります.

今回はfa001 を利用しました.

Screenshot_2015-06-23-07-19-04Screenshot_2015-06-23-07-18-50Screenshot_2015-06-23-07-18-30

Voice Notify の設定

ハングアウトアプリからTTS に流し込めれば良いのですが,出来ないようです.Google Play Store で使えそうなアプリを探したところ通知を読み上げてくれるVoice Notify というアプリを見つけました.

このアプリを導入し,音声通知をOn に
Screenshot_2015-06-23-07-19-33

通知対象のアプリにハングアウトだけ登録します.アプリケーションが多い場合はメニューから Igoner All で一旦全部解除してから filter で検索すると便利です.
Screenshot_2015-06-23-07-20-29Screenshot_2015-06-23-07-20-16

ここで通知対象のアプリを増やすとそのアプリの通知も読み上げられます.メッセージの内容が読み上げられるかはそのアプリの通知内容次第になります.例えばGoogle+ では内容により省略されたりします.

ハングアウトの設定

通知をしたいハングアウトの通知をOn にします.これでハングアウトから通知があればその内容が読み上げられます.

Screenshot from 2015-06-23 07-35-06


これで実際に試してみましたが,思っていたより内容は把握出来ました.長文だと辛いですが短文なら十分.ボリュームは6割位でイヤホンマイク片耳(ダイソーで購入した@100のもの)で聞いていましたが低速なら問題なし,50km/h以上だと聞き取りづらくなってきました.恐らく高速道路だとダメでしょうね.この辺はスピーカーやイヤホン次第で変わると思います.

mineoを刺したLGL22のA-GPSサーバを変更してみる

Screenshot_2015-04-21-20-55-30
LGL22 にmineo のSIM を挿して運用していますが,どうもGPS の動作がおかしい.IngressGPS Status & Toolbox を起動して1時間とかずっと置いといても測位できなかったりする.
以下のページを見るとキャリアが用意したA-GPS 情報を配布しているサーバは外からアクセスできなくてMVNO だと使えない,Google提供のA-GPS サーバがあってこれは外から使えるらしいということが分かりました.A-PGS 使えなかった時はタイムアウトして欲しい気もしますが….

  • トークセッション. MVNOとGPSについて (大内)

    趣旨:「MVNOではGPSは使えない」という誤解がありますが、正しくありません。しかし、一部のスマホでGPSの位置情報がうまく利用できないように見えるのも事実です。Androidを例に位置情報取得の仕組みとその原因についてご紹介します。

ということで,/etc/gps.conf のSUPL 部分を以下のように書き換えてみました.

SUPL_HOST=supl.google.com と SUPL_PORT=7275 or SUPL_PORT=7276 部分.書き換えた後再起動しても症状は変わらないよう.

Cinnamon Mod だと元々Google のサーバを向いているとのことなので CM12 をそのまま真似してみる.

これで数日使ってみているけど今のところ問題無さそう.
ただ,この方法は /system 領域の編集が必要なので通常は要root
もうすぐキャリア端末のSIM Free がやりやすくなるようですが,この辺りも解決して欲しいですね.APN みたいに設定画面から書き換えできるようにするとか.

以下は書き換え時のメモです.

$ ./adb shell
$ su
# mount -o rw,remount /system
# cp -p /etc/gps.conf /etc/gps.conf.org
# vi /etc/gps.conf
# cat /etc/gps.conf
XTRA_SERVER_1=http://xtra1.gpsonextra.net/xtra.bin
XTRA_SERVER_2=http://xtra2.gpsonextra.net/xtra.bin
XTRA_SERVER_3=http://xtra3.gpsonextra.net/xtra.bin
SUPL_HOST=supl.google.com
SUPL_PORT=7276
# mount -o ro,remount /system
# exit
$ exit

Xperia Pro(MK16a)に入れたCM12を使ってみる

Xperia Pro(MK16a)にCM12を入れました.ちょこちょこ設定をしてみます.

Bluetoothテザリングを試す

先ずはやりたかったBluetoothテザリングの設定などをしてみます.
といってもメニューから辿ってOnにするだけです.この設定は再起動してもそのままのようです.
Screenshot_2015-03-27-13-54-20Screenshot_2015-03-27-13-54-36Screenshot_2015-03-27-13-54-52

後は適当な機器とペアリングをすれば接続できます.同時接続も可能で3台までは確認しました.同時にRazikoをBluetoothヘッドホンで聞いても大丈夫.
Screenshot_2015-03-27-13-59-43

このテザリング機能はなかなか良く出来ていて,XperiaProが3Gに接続されている場合はもちろん,Wi-Fiに接続されている場合はそちらにルーティングを行います.これはなかなか便利.
公衆Wi-Fiサービスなどで1台しか接続できない場合もありますがそういう時も大丈夫ですね.

暫く使ってみていますが,途中で切れてしまうこともなく安定しています.
#手持ちのAUの国内端末すぐ通信できなくなるので見習って欲しい….

root権を使えるようにする

adb shellからsuでrootになれず.SuperSUも使えなくてあれ?と思ったのですがCM12ではちょっと方法が変わっているようです.開発者向けオプションの中に以下のような設定ができていました.とりあえずADB shellで使いたいので「ADBのみ」の設定に
Screenshot_2015-03-23-02-15-40 (2)

カメラのシャッター音を消してみる

ADBでrootが使えるように設定した後,シャッター音を消すためにadb shellでXperiaProの中に入ります.

% ./adb shell
shell@MK16i:/ $

suコマンドでrootになります.

shell@MK16i:/ $ su
root@MK16i:/ #

シャッター音らしきファイルをfindコマンドで探します.それらしいものがありました.

root@MK16i:/ # find /system -name "*.ogg"|grep -i camera
/system/media/audio/ui/camera_focus.ogg
/system/media/audio/ui/camera_click.ogg

該当のファイルシステムを書き込みできるようにremountします.

root@MK16i:/ # df
Filesystem               Size     Used     Free   Blksize
/dev                   219.4M    36.0K   219.4M   4096
/sys/fs/cgroup         219.4M     0.0K   219.4M   4096
/mnt/asec              219.4M     0.0K   219.4M   4096
/mnt/obb               219.4M     0.0K   219.4M   4096
/system                919.5M   568.7M   350.8M   4096
/cache                   4.0M   804.0K     3.2M   4096
/data                    2.0G   505.2M     1.5G   4096
/mnt/media_rw/sdcard0     5.4G   302.5M     5.1G   32768
/mnt/secure/asec         5.4G   302.5M     5.1G   32768
/storage/sdcard0         5.4G   302.5M     5.1G   32768
root@MK16i:/ # mount -o remount,rw /system
root@MK16i:/ # mount |grep /system
/dev/block/mtd/by-name/system /system yaffs2 rw,seclabel,relatime 0 0

該当ファイルをリネームします.

root@MK16i:/ # cd /system/media/audio/ui/
root@MK16i:/system/media/audio/ui # ls
Dock.ogg
Effect_Tick.ogg
KeypressDelete.ogg
KeypressInvalid.ogg
KeypressReturn.ogg
KeypressSpacebar.ogg
KeypressStandard.ogg
Lock.ogg
LowBattery.ogg
Trusted.ogg
Undock.ogg
Unlock.ogg
VideoRecord.ogg
WirelessChargingStarted.ogg
camera_click.ogg
camera_focus.ogg
root@MK16i:/system/media/audio/ui # mv camera_click.ogg camera_click.ogg-
root@MK16i:/system/media/audio/ui # mv camera_focus.ogg camera_focus.ogg-
root@MK16i:/system/media/audio/ui # mv VideoRecord.ogg VideoRecord.ogg-

元のようにファイルシステムを読み込み専用に戻します.

root@MK16i:/ # mount -o remount,ro /system
root@MK16i:/ # mount |grep /system
/dev/block/mtd/by-name/system /system yaffs2 ro,seclabel,relatime 0 0

カメラアプリを試すとシャッター音がしなくなっていました.成功のようです.

アプリを導入してみる

CM12にしてストレージは結構空きが出来たしSDへの導入も出来るようになりましたが,重いアプリは辛いのであまり入れていません.とりあえずキーボードを活かすためにエディタのJota+,日本語入力のためにFlickWnn,GPSログを取るためにOSMTracker,データやり取りのためにownCloud/Picasa Tool,サイマルラジオのRaziko(radiko.jp,らじる),念の為?Ingressといったところです.
Screenshot_2015-03-27-14-08-40

FlickWnn利用時はShift+Spaceで入力切替,右端の地球マークのキーで大文字小文字切り替えです.起動しは遅いけど起動してしまえば普通に入力できます.

最近メインで使っているSNSのGoogle+も入れてみたのですが,重くて使い物にならないので諦めました.投稿機能だけでいいので軽いものとかがあると良いのですけど….標準ブラウザでの閲覧も重いです.モバイル版だとそこそこ軽いですが,投稿時に写真添付するのに画面遷移が必要だったりと結構ストレスです.この端末では諦めたほうが良さそう.

しかし,重いとはいえOSが最新になったのは嬉しいです.重いと言っても2.3の頃と同じくらいの重さな感じなので戻す気はしません.今はいろいろと穴が多くてAndroid 4.3以前は使いたくないですしね….
国内の大抵の端末は2年縛りがあってもそれ以前にサポートやめちゃって穴の開いたまま使うか新しいのに乗り換えるしか無いので辛いです.ずっとサポートされるのが理想ですが,サポートしないならこの端末のように公式でロック解除方法を提供してくれるのが普通になるといいのにと思います(Nexusシリーズなどは公式で初めからロック解除可能).そうしたら今回のようにOSを入れ替えて使い続けることが出来るかもしれません.そうならないとCMの開発対象になる国際端末やその国内版じゃないとなかなか手を出す気にならないです….
#でも保証が無くなるのを理解しないでサポートに文句言うような人が要ると難しいのかもですね.