ひどい…

GPS Loggerの続きです。
まぁ、前回のテストで分かっていたことですが、ひどいですね。
今回はTRANSYSTEMのロガー結果と比較してみました。
ほぼ同時にON/OFFしました。
GPS Logger Test
TRANSYSTEM TripMate 850
謹製Loggerは、
1.OnLocationChagedイベントで位置情報の変化を記録し、
2.15秒間隔で変化があればログする。
という設定です。
結果を見ると、
待機状態(?)やバックグラウンドでアプリの挙動を明示的に制御する必要がある、
ということですね (笑。
要はアプリのライフサイクルを知らないといけない。
いずれ消化しないといけないですが、
(私的には)優先順位は高くないので、
後回しにして次のアプリにいくかも。

GPS Logger とりあえず?

なんとなく完成?
疑問形ですが、GPS Loggerです。
テスト ログ
昨日と今日の午前中にコーディングしていて、一通りの道筋はつながりました。
Timerで15秒間隔でGPSのログを取ってます。
TRANSYSTEM TripMate 850と併用してログを比較しようと思ってたのですが、
こちらは電池切れていてログ取れませんでした (w
問題は多々ありますが、後は使いながらいじっていきます。
サーバとhttp通信する辺りは、色々と使えそうなので、他のアプリ作って遊んでみる予定。

AndroidからnginxへHttp通信でファイルを送る

■サーバ
次をそのまま使わせてもらいました。
nginx 1.6.2 + lua-nginx-moduleで簡易ファイルアップローダー
http://symfoware.blog68.fc2.com/blog-entry-1562.html
次のhtmlで確認しました。

<html xmlns="http://www.w3.org/1999/xhtml">
<head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
</head>
<body>
<form action="/upload" method="POST" enctype="multipart/form-data">
<input type="file" name="upload1" /><br />
<input type="file" name="upload2" /><br />
<input type="submit" value="Upload Files" />
</form>
</body>
</html>

■クライアント (Android)
次のUpload data to the server using MultipartRequestを参考に、
ANDROID HTTP CLIENT:GET,POST,DOWNLOA,UPLOAD MULTIPART REQUEST
http://www.survivingwithandroid.com/2013/05/android-http-downlod-upload-multipart.html
multipartだけど全体のfilenameをつけるために
メソッドconnectForMultipart()に追加、
public void connectForMultipart(String filename) throws Exception {

con.setRequestProperty(“filename”, filename);

}
後はメソッドdoInBackground()を少しいじっただけ、
とりあえず疎通だけできました!
セキュア関係はまだなので、そこを仕上げてからまとめ直します。

OpenResty第一歩

Web APIを使うためにOpenResty
Androidアプリとの通信のためにServer側でWebAPIを使いたい。
ざっとgoogleってみるとnginx+OpenRestyがよく使われているようなので試してみます。
まずは”Hello World!”までね。
ポリシーとしては、現状のnginxをできるだけそのままに、簡単に試してみます。
以下は、実際に行った記録ですが整理されていないので、過不足あるかもです。
参考:
OpenResty
 http://openresty.org/
The Programming Language Lua
 http://www.lua.org/
Lua – ウィキペディア
 http://ja.wikipedia.org/wiki/Lua
lua-nginx-module を使いこなす
 http://qiita.com/kz_takatsu/items/e94805a8e3cc285f9b33
■環境
Debian 7 Wheezy (64bit)
■nginxの設定
nginxが既に動いているので、新たにport 8000を使います。
public_html/test 以下にドキュメントを(必要があれば)置くことに。
nginxの設定に追記。
> sudo vi /etc/nginx/sites-available/default

server {
listen 8000;
location / {
root /home/(user)/public_html/test;
index index.html index.htm;
}
}

> sudo service nginx restart
(url):8000/でアクセスして確認。
■OpenRestyをインストール
参考:How to install OpenResty
 http://www.nginxtips.com/how-to-install-openresty/
> sudo apt-get install libreadline-dev libncurses5-dev libpcre3-dev libssl-dev perl make
ngx_openresty-1.7.7.2.tar.gzをダウンロードしてインストール
> tar xzvf ngx_openresty-1.7.7.2.tar.gz
> cd ngx_openresty-1.7.7.2/
> sudo ./configure –with-luajit
> sudo make
> sudo make install
■luaをインストール
> sudo apt-get install lua5.2
■luaJITをインストール
参考:Debian 7 + nginx 1.6.2 + lua-nginx-moduleの環境構築
http://symfoware.blog68.fc2.com/blog-entry-1561.html
LuaJIT-2.0.3をダウンロードしてインストール
> tar zxf LuaJIT-2.0.3.tar.gz
> cd LuaJIT-2.0.3
> sudo make PREFIX=/opt/luajit
> sudo make install
■lua-nginx-module?
次をインストール
> sudo apt-get install nginx-extras
■luaを試してみる
先ほどの/etc/nginx/sites-available/defaultを修正

server {
listen 8000;
location / {
default_type text/html;
content_by_lua 'ngx.say("<p>hello, world</p>")';
}
}

これで8000にアクセスして、”hello, world” が表示された!

サウンド ミキサー周り

Debianを再インストールして、
ラジオを録音しようとしたら入力がマイクになっていた。
サウンドレコーダー(gnome-sound-recorder)の設定に”キャプチャ元”がないし…
以前(Gnome2)の記憶から色々と変わっているようです。
要はミキサーで設定するだけなのですが、整理してみました。
現在の環境は
Machine: Lenovo ThinkPad EDGE E135
OS: Debian Jessie (2015. 2. 1 Net install)
情報源はコチラ
:PulseAudio (日本語) @archlinux
https://wiki.archlinux.org/index.php/PulseAudio_(%E6%97%A5%E6%9C%AC%E8%AA%9E)
ミキサーはPulseAudio音量…(pavucontrol)を使います。
次でインストール
> sudo apt-get install pavucontrol
起動して、録音タブを開いてみると、真っ白。
ちょっと慌てたのですが、(笑
これは現在使用中のものが表示・設定できるのですね。
サウンドレコーダーを起動して、録音を開始すると、
同画面に表示され、設定できるようになりました。
キャプチャー元は3つの選択枝がありました。
1. Monitor of 内部オーディオ デジタルステレオ (HDMI)
2. Monitor of 内部オーディオ アナログステレオ
3. 内部オーディオ アナログステレオ
ここで2.を選択すると、無事録音出来ました。
サウンドレコーダーのClipファイルが、~/Recordings/ にできてますね。
なお、マイク入力をoffにするには、
PulseAudio音量…の入力装置タブで、内部マイクロフォンをミュートにします。

GPS Loggerの続き

とりあえずが続きますが、
Androidアプリもゆっくり進行中。
実際にデータを取るテストしてみました。
1. ログとして時間、緯度、経度、だけローカルにファイル出力
2. SMSをintentで起動してログを本文に、メール発信
3. メール サーバで選り分け
4. 手作業でログをNMEA-0183形式に
5. Michiで整形
結果 → テスト
実際のデータから位置をずらしているので、地図上の位置は本物とは違います。
一応は一通り検証できたので、残る具体的な問題点をつぶしていきます。
a. アプリからNMEA-0183形式で出力する。
  他に汎用的な形式があれば何でもいいのですが。
b. SMSは文字数が限られるので、Socket等でメール送信
c. アプリが待機中の動作を組み込む。
  これは分かっていたけど後回しにしてた。
こんなところ。
余力があれば、
d. ログ終了時に(or ログ出力中から?)、自動的にサーバに発信し整形完了する。
ここまでくれば、今までより随分手間が減ります。
まぁ、手間を減らすのが目的ではないのですが。

Android アプリからメールを発信する

のんびりやっているGPSアプリ開発です。
情報をサーバへ送る手段を試してみます。
色々と段階があるようなので順番に。
1. パーミッションなしで、メッセージング アプリ(SMS)を起動して…云々
2. パーミッションありで、SMSメールで自動送信する
3. http通信で送る
メール サーバでは自動振り分けまでの準備ができています。
3.の場合はWeb APIサーバを建てる予定。
では、まず1.から始めましょう。
1. パーミッションなしで、メッセージング アプリ(SMS)を起動して…
参考:
SEND_SMSパーミッションなしにSMSを送る方法 @Taosoftware Developer Blog
http://www.taosoftware.co.jp/blog/2012/07/send_smssms.html

Intent intent = new Intent(Intent.ACTION_SENDTO);
Uri smsNumber = Uri.parse("sms:xxxx@yyyy.jp");
intent.setData(smsNumber);
intent.putExtra("sms_body", "Hello World!");
startActivity(Intent.createChooser(intent, "Pick a SMS App"));

特に問題なく、メッセージ アプリが起動され、手動で送信できました。
2. パーミッションありで、SMSメールで自動送信する
SmsManager @Android Developers
http://developer.android.com/reference/android/telephony/SmsManager.html
送信時に必要なpermissionは次の通り、
<uses-permission android:name=”android.permission.SEND_SMS” />

SmsManager smsManager = SmsManager.getDefault();
String destinationAddress = "xxxx@yyyy.jp";
String text = "Hello World!";
smsManager.sendTextMessage(destinationAddress, null, text, null, null);

例外でした…
宛先が番号じゃないから?
今日はこれまで。

メッセンジャー


妹が作ってくれた鍋つかみ

こんなサイズで調度よいですよ

土曜には今年初めての押し寿司。
昨年末はべちょっとなってしまったのでリベンジです。
酢の具合も良いい感じにできました。
さて、スマホのSMSアプリをメッセンジャーに変更したのですが、ちょっと困ったことに。
写メをいつもコレでサーバに送っています。
撮影日時をファイル名にして保存してます。
前のアプリではSubjectに撮影日時が入っていたのでそれを取っていたのですが、
メッセンジャーでは常に “image000000.jpg” の名前に…
しょうがなく、EXIFからdate:createを取り出したのですが、これも添付日時になっている?
もうちょっと調べてみます。
■追記 2015. 1.21
上記のdate:createはEXIFではなく、解凍時の情報でした。
そもそもEXIF情報が付加されていない…
メッセンジャーの設定をみてもここら辺のオプションはないし…
と思ったら、ソフトバンクで使えるMms.apk がlollipopに対応していた。
ので元の鞘に収まりました。
→ https://github.com/rdgate/packages_apps_Mms/wiki

Jessie一週間

Jessieを使い始めて一週間たちました。
おおむねWheezyに比べて良いことが多いのですが、
細かいところでは幾つか引っかかった点があったので挙げておきます。
いずれも時間が解決してくれる類の事柄なので、一時的なメモですね。
■Mozcの初期入力モードが「直接入力」になる。
個人的にはMozcの入力モードは「ひらがな」から変更しません。
Gnomeパネル(タスクバー) >> 日本語 (Mozc) / 入力モード(あ) / ひらがな
と変更するだけですが、起動の度にするので省略したい。
設定を見てみます。
コマンドラインからは次でMozcプロパティのダイアログを開きます。
> /usr/lib/mozc/mozc_tool –mode=config_dialog
一般タブ / キー設定 – 編集 / Mozcキー設定をみると、
入力文字なし | Hiragana | ひらがなに入力切替
日本語キーボードならば「ひらがな」キーで入力モードをひらがなに変更できます。
私は英字キーボードなので、このキーバインドを変更します。
ざっとみたところ、空いていて使えそうなのは Ctrl End なのでとりあえずこれに。
terminal では Ctrl End で入力モード「ひらがな」に変更できました。
本当は設定で「ひらがな」固定にしたいのですが、また探してみます。
■Audacityで?
ラジオ番組を録音しているのですが、前後の時間に余裕をみて録っています。
それをカットするのにAudacityを使っているのですが、ちょっと?
Nautilusからファイルを右クリックで開くと、保存時にエラーが出て保存を完了できません。
Audacityを単独で起動し、ファイルを開けば普通に保存できるので大したことではありませんでした。

Jessie Install

メインマシンのDebian 7 (Wheezy)が起動後、ブラックアウト。
ついでなので、7.7をインストールしてみたら、
以前のグラフィック ドライバのインストール手順が使えなかった…
というわけで、Debian 8 候補 JessieをThinkPad EDGE E135に初インストールしてみた。
久しぶりにtestingを触ってみると、いろいろ変わってました。
・インストール時にGNOME, KDE, etcを選択できる
・grubがUEFIに対応
グラフィカル インストーラは試してないですが、もうそれで充分かも。
インストール完了!
結果は良好、Gnome 3.14 はパフォーマンスが良く、Debian 7よりもいい感じ。
しばらくはコチラをメインOSにしてみます。
インストール手順は次にまとめてあります。
Debian GNU/Linux 8 候補 (Jessie) 関係