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) 関係

Android Studio 1.0 debut

メデタク、Android Studio 1.0がデビューしましたね。
とりあえず、普通にインストールして普通に動きました。
プロジェクトはGradleでエラーが出たのでGoogleってみると、
 (Project)/app/build.gradleを編集
 runProguard false → minifyEnabled false
と些細な修正でOKでした。
詳細は別のサイトでご確認ください。
さてと、コーディングしなきゃ。

もうひとつのアプリ

今作っているAndroidアプリの他に、もう一つ作りたいアプリがあります。
DLNA(UPnP)のカレンダー型プレイヤーです。

何が何だか判りませんね、この説明では。
うーん、時間的に一番使ってるアプリがDLNAプレイヤーです。
特に困ってるわけではないのです。
ただ、ラジオを録音して聴いている身としては、
一週間、月間というメニューで番組を表示できると幸せなんですよ。
番組単位で表示して過去番組をさかのぼったり、…
更には、そこからラジオアプリへ飛んで、放送中のプログラムが聴けると良いなぁ。
タイムテーブルですね、新聞やデジタルTVの番組表。
それならば、カレンダー型ランチャーがいいのかな?
とりあえず、簡単に探して見たメモ:
[日常][PC]DLNAアプリを作りたい・・・んだけど・・・ @Linux奮闘中! -某OSとも共存-
うん、レンダラーを実装する必要がなければ、問題は簡単になるかも?
サーバはMiniDLNA決め打ちで間に合うし。
もうちょっとアイデアを練ってから手を付けよう。

android アプリの続き

■とりあえず、androidの中を覗けるようになりました。
参考:[Android] adb, run-as でローカルストレージ内をのぞく
https://akira-watson.com/android/adb_run-as.html
以下はアプリがcom.***.***の場合です。
> adb shell
でandroidのシェルに入り、
> run-as com.***.***
でアプリの権限で操作。
テスト用のファイル名はlogTest.txtなので、
> cat files/logTest.txt
ファイルの中身が見えました。
普通にlinux(というかunix系)ですね。
そして、フルパスは次であることが確認できました。
/data/data/com.***.***/files/logTest.txt
しかし当然ながら、アプリの権限では自由にファイルをコピーできません。
皆さん、SDカードにコピーして…という方法をとられることが多いようです。
うーん…
私は物理メディアは、あまり好きではないのですよ。
Nexus5を選んだ理由の一つでもありますし…
■試験は延期
雪が積もってきたので自転車はオアズケ。
なので、アプリはゆっくりと作って、
春になったらテストします。
■根本から考え直す
予想以上に時間ができたので、ログ情報の取得について色々と考えてみました。
最初に思いついたのは、
A.「Google Drive(とかOne Drive)にログを保存する」
ケーブルで接続する必要もないし、いいかも。
次に考えたのは、
B.「http通信とかでサーバに送る」
自宅のhttpサーバのセキュリティが気になるのが難点かなぁ。
他には、
C.「メール添付で送信する」
現在はスマホで撮った写真はメール添付でサーバに送ってるので、それの延長で。
もしくは、
D.「アプリでhtml作成まで行い、サーバにアップする」
案外これが一番完結にまとまるのかな?

トグルボタンを付けて

Androidアプリの続き

トグルボタンを付けて、ログのOn/Offを操作。
Fragmentがなかなかやっかいでした。
これでファイルに記録させれば試験できるかな、と思っていたら…
スマホを回転させると???
…回転でFragmentが再生成されるのですね。
見た目は割とどうでもいいのですが、
高精度のLocation取得はバッテリの負担になるので、
止めたつもりで動いていたとなると、面倒ですね。
ここらへんを整理してから、テストしてみよう。
その後の方針はどうしようか?
これまでは、次のような運用でした。
1. Loggerでログをファイルに出力
2. monoアプリでGoogle Mapsを利用したhtml化
3. http serverにアップ
やろうと思えば、全てAndroidアプリで完結できるんだなぁ。
それとも、2. はhttp serverでやった方が楽かな?
Microsoftが.NET coreをopen source化するとか言ってるけど、
「.NET Core」がオープンソース化、MacやLinuxもサポート @sourceforge.jp
monoとの関係とかどうなるのかなぁ?
追記:
この水曜日に、Android 5 lollipopが降りてきました。
とりあえず、バッテリが(数字上)長持ちするようになったので良い感じ。
特にアップデートのデメリットも無いし。
私が作ってるアプリの外観も変わった(笑

Android Location事始め


とりあえず、前回からの進展です。
Location情報の取得に成功。
細かいところはこれから、
今の目標は、GPSロガーの機能をAndroidアプリに置き換えよう、です。
詳細は、時間があればまとめるかも…
今日のトピック: Toasts
Windows FormアプリでいうところのMessageBoxですね。
こんな感じで使うようです。
Toast.makeText(getApplicationContext(), “Provider: ” + providerStr,
Toast.LENGTH_LONG).show();