codex

2011年11月12日土曜日

Tasker - 端末紛失時の位置確認

あまり紛失などしないとは思うけど転ばぬ先の杖ってやつですかね。
紛失した時に対処するアプリはいろいろあるけど、せっかくTaskerがあるのでそれで済ませようというのが狙い。それにあまりアプリを常駐とかさせたくないしね。

まずは基本的な仕様としては、
1.特定の電話から不在通知が3回きたら機能を実行する。
2.Gmailで位置情報を送信する。

まぁ、簡単な仕様ですね。
とりあえず2.の機能を行うために、SL4Aを使用します。
下記のリンク先のSL4Aのインストールとpythonのインストールを参考にインストールしてください。
SL4A による Android プログラミング - インストール
SL4A による Android プログラミング - インタプリタの追加

あとはメールを送信するpythonのスクリプトが必要になります。
下記を参考にしました。
Automatically Take and Email Your Photo - Tasker Wiki
pythonスクリプト:sendemailA.py

さて、環境は整ったのであとはTaskerの設定です。
新たなprofileを任意の名前で作成してください。
First ContextはEventを選択、Phoneを選択、Missed Callを選択。
Callerは虫眼鏡みたいなボタンを選択。
A Single Contactで機能を実行させる電話番号を選択してください。

次はTaskの入力です。
New Taskを選択。名前はなくてもOKですね。
左下の「+」を選択。
Variableを選択。Variable Addを選択。
変数名をつけます。規則としては%のあとの文字が大文字だとグローバル変数になります。
小文字だとローカル変数になります。文字数は3文字以上必要になります。
今回の場合はグローバル変数じゃなきゃいけないので1文字目は大文字にしてください。
Wrap Aroundは4にします。ここの数値に到達した場合、変数がClearされますので
4以上ならいくつでもOKでしょう(最後に機能実行後にこの変数をClearするので)。
ここでは便宜上%TelCntとします。

次のTaskは先ほどの変数の判定を行うIF文です。
Taskを選択。Ifを選択。右上の黄色いマークを選択して先ほどの変数を選択してください。
真ん中のグレーのボタンを選択してMaths: Greater Thanを選択。
右の四角欄に2を入力。

次からはpythonスクリプトへ受け渡すパラメータを入力します。
パラメータ名は間違えると受け渡せませんので注意が必要です。
Variableを選択。Variable Setを選択。
Name欄に%EMAIL_USERを入力。To欄にGmailアドレスを入力。


Variableを選択。Variable Setを選択。
Name欄に%EMAIL_PSWDを入力。To欄にGmailアドレスパスワードを入力。




Variableを選択。Variable Setを選択。
Name欄に%EMAIL_TOを入力。To欄に送信先メールアドレスを入力。

Variableを選択。Variable Setを選択。
Name欄に%EMAIL_SUBJECTを入力。To欄に任意のメールタイトルを入力。
(メールが着てわかりやすいものがいいでしょう)


Variableを選択。Variable Setを選択。
Name欄に%EMAIL_BODYを入力。
To欄に本文を入力しますが、私は以下のようにしました。
Battery Level: %BATT
http://maps.google.co.jp/maps?f=d&source=s_d&saddr=%LOCN

1行目のはバッテリーの残量です。
2行目は単純に%LOCNだとNETWORKから算出した座標だけしか出ないので
それだといちいちGoogle Mapに行って座標コピペで表示するのが面倒なので
アドレスに入れてみました。まぁ見れればいいかなぁ・・・と。
ちなみに本文に日本語は使用できません。

次のTaskはpythonスクリプトの実行になります。
Miscを選択。Run Scriptを選択。
Nameの横の虫眼鏡を選択。sendmailA.pyを選択。
Pass Variableの横の黄色マークを選択。
順次、先ほど値を設定した変数を入力していくのですが、
変数毎にカンマ(,)で区切らなければいけません。
%EMAIL_USER,%EMAIL_PSWD,%EMAIL_TO,%EMAIL_SUBJECT,%EMAIL_BODY

次のTaskからはスクリプト実行後の後処理になります。
特にパスワードはClearしておかないとTaskerのVariable Edit画面で見えてしまうので
Clearは必要になります。
また、一番最初に使用した%TelCntも次は4になってからWrap Aroundで
Clearされるので実質4回不在通知を送らなくてはならなくなるので、
これもClearが必要になります。

Variableを選択。Variable Clearを選択。
Nameの横の黄色マークを選択し、%EMAIL_PSWDを選択。

Variableを選択。Variable Clearを選択。
Nameの横の黄色マークを選択し、%EMAIL_BODYを選択。

Variableを選択。Variable Clearを選択。
Nameの横の黄色マークを選択し、%EMAIL_SUBJECTを選択。

Variableを選択。Variable Clearを選択。
Nameの横の黄色マークを選択し、%EMAIL_TOを選択。

Variableを選択。Variable Clearを選択。
Nameの横の黄色マークを選択し、%EMAIL_USERを選択。

Variableを選択。Variable Clearを選択。
Nameの横の黄色マークを選択し、一番最初に書いた%TelCntを選択。

最後に別になくても動きそうですがIfの終わりのTaskを追加します。
Taskを選択。End Ifを選択。

以上で処理の記述は終わりですが、動作チェックは必要ですね。
とりあえず、Task側だけの動作チェックを行いましょう。
右下にある三角のマークを押します。実行されると左に赤いマークがしばらく出ます。
一回目は当然なにも起こりません。
二回目も何も起こらないのを確認。
三回目でSL4Aが立ち上がって(ステータスバーに表示されて2,3秒後には消えます)
メールが送信されていれば成功です。
メールが送信されていなければ
pythonへの受け渡しパラメータ名が間違っていないかどうか、
また、メールアドレスやパスワードが間違っていないか確認してください。
成功していたら最後にパラメータがClearされているかも確認してください。

Taskerの最初の画面まで戻って、右下にある黄色マークを押します。
Global Variable Editorというのが起ち上がって、
ずらずらと先ほど定義した変数名が出ていると思います。
右側になにも表示されていなければClearは成功しています。

一応、電話から3回不在通知をしてメールがくるのを確認してください。

これで終了としてもいいのですが、TaskにGmailアドレスのパスワードを
入力しているのですぐに誰にでも見れてしまいます。
それはちょっとなぁ・・・と思うので、Taskにパスワードをかけます。
Tasker最初の画面からMenuボタンを押して、Preferencesを選択。
UIタブを選択。Lock Codeに任意の数字を入力。

Profileを選択してスパナとドライバーの絵のアイコンを選択。
Propertiesを選択。一番上のLock In UIをチェック。
鍵マークが出たらOKです。
一旦、Taskerを終了させて再度、鍵マーク付のProfileを選択する際に
Enter Lock Codeの入力画面が出てLock解除も確認できればOKです。

お疲れ様でした。

#今度からは簡略化して書こう・・・

0 件のコメント:

コメントを投稿