admin on 10月 19th, 2011

Ubuntu 11.10に設置したNXサーバーに対して、nomachinesのNXクライアントでログインするための設定がわかりました。

設定画面のキャプチャと詳細がこちらにありました。

http://askubuntu.com/questions/50503/why-do-i-get-unity-instead-of-classic-when-using-nx

  1. 指定可能なgonem-sessionの情報を以下から調べる。
    sudo ls -l /usr/share/gnome-session/sessions/
    合計 16
    -rw-r--r-- 1 root root  206 2011-09-24 07:33 gdm.session
    -rw-r--r-- 1 root root 1511 2011-10-06 19:54 gnome.session
    -rw-r--r-- 1 root root  259 2011-10-06 19:54 ubuntu-2d.session
    -rw-r--r-- 1 root root  285 2011-10-06 19:54 ubuntu.session
  2. nomachinesの設定画面のGeneralタブ>DesktopでUnix, Customを選択してSettingsボタンを押す
  3. Run the following commandに1で調べたgnome-sessionを指定する
    gnome-session ubuntu-2d
  4. New virtural Desktop を選択する

以上で、無事Ubuntu 11.10のUnity 2Dにリモートログインすることが出来ました。

.

が、しかーし! 私の環境(Google Neatxサーバー)では、ログアウト処理が正しくできずに、ログアウト処理中に切断されて必ずセッションが残ってしまうのでありました!

そうなると次回の接続でinteral errorが発生し、ログインできない状況に陥ります。
仕方ないので、sshログインしてセッションファイルを削除するしかありません。

ls -l /var/lib/neatx/sessions/
合計 8
drwx------ 4 user users 4096 2011-10-19 17:48 3F1A7C4859749567E89658766AF97348
drwx------ 4 user users 4096 2011-10-19 17:47 622534CD2682041516F878DB7CA8C98D

.

Neatxでなく、FreeNXならこんなことにはなってないようですが、前回書いたとおりに11.10へのFreeNXのインストールは未だできてません。( ・´ω・`)

admin on 10月 18th, 2011

1. DNSエラーになってどこにも接続できなくなった

/etc/resolv.conf を確認したらnameserverの指定が消えていたので編集した。

# Generated by NetworkManager
nameserver 192.168.0.1

つながった・・・と糠よりこびも、再起動したらまた消える。どうも固定IP時のバグらしくフォーラムでは自動イーサネットに変更する方法が紹介されていた。
固定IPで使いたい自分は、当分PCの電源を落とせないかも(笑・・・えない

resolvconfをインストールして /etc/network/interfacesにdns-namesavers を書いてみたがDNSは復帰しない。

それでは、NetworkManagerを無効にすればよいかと、sysv-rc-confをインストールしてみたが、 /etc/init.d/network-managerは元々自動起動に登録されていなかった。( ・´ω・`)

10/19追記
/etc/init/network-manager.conf が起動のための設定ファイルとのこと。
resolve.confが消える現象は最優先バグとしてリストされてるようなので待ってれば解消するらしい・・・

.

2. FreeNXが利用できなくなった

そういえばアップデート中の「削除しますか?」リストに含まれていたような気がするけど手遅れ。

lucidのfreenx-teamリポジトリを使って apt-get install freenx を試みるも、関連ライブラリが対象外とのことで蹴られる。

代わりに Google謹製のNXサーバーならインストールが可能だった。

sudo add-apt-repository ppa:freenx-team

/etc/apt/sources.list.d/freenx-team-ppa-oneiric.list を 編集

deb http://ppa.launchpad.net/freenx-team/ppa/ubuntu lucid main
deb-src http://ppa.launchpad.net/freenx-team/ppa/ubuntu lucid main

Neatx をインストール

sudo apg-get update
sudo apt-get install neatx-server

.

が、しかし! NXクライアントからログインを試みると、Unityパネルのないデスクトップだけが起動して、にっちもさっちもいかない。

NXクライアントにUnityが無いからかもしれないけど、11.04でのFreeNXではUnity-2Dがちゃんと起動していたのに。

Gnomeをインストールすれば動くかもしれないなあ・・・と思ったけど、フォーラムの投稿によるとGnome Shellをインストールしても駄目らしい。

http://ubuntuforums.org/showthread.php?t=1863028

・・・その後、lucidのリポジトリを有効にしたままだと、通常のアップデートが蹴られたので、無効にする。

10/19追記
Unity-2Dでログインする方法は判明。続きのエントリーを参照ください。

.

3. Alt+Tabが遅くて使えない

11.10から Alt+Tab はアプリケーション切り替え、Alt+半角/全角 でウィンドウ切り替えとなったはずだけど、いずれも表示動作が遅くキー押し下げに反応しきれない。

11.04 までの機能も CompizConfig を探せばあるのかな?

.

4. 起動が遅くなった

ログイン後、ディスプレイマネージャが起動してからGUIが使用できるまでの時間が、ちょっとイラっとくる程度に長くなった。

.

5. Unityパネルがマルチディスプレイを正しく認識するようになった

これが唯一の良かったことかも。

.

はあ ( ・´ω・`)

admin on 10月 1st, 2011

一見うまく動いていた画面ロック制御ですが、外出先でのロックが確実には行われていないことに気づきました。Tasker標準のKeyguardがAndroid 2.2以降に対応していないことが原因で、プラグインに制御を差し替えたところきちんと動作するようになりました。

Taskerの暴走(Homeボタンでロック解除画面が出る)の原因がこれだったのかはまではわかりませんが、変更してから収まった・・・ような気がします。

それ以外の修正としては・・・・できるだけ稼働中プロファイルを減らすようにしたことと、画面オフ時の処理以外の長期Waitをできるだけ排除したことです。それと、3G切断下でのK-9 Maiが受信環境を整えたことと、目覚まし時計もTaskerに統合してしまったことです(笑)

10/2追記
10/1付けでTaskerが1.1.1にアップデートして色々拡張されました。せっかくなので「小文字表記によるローカル変数」と「Perform Taskへの引数」、「For文」を導入して書き換えました。

10/3追記
3Gオフの省電力効果を確認するため変数 %OFF3G で機能を制御できるようにしました。3Gオフと無効にするには、%OFF3G = 0 として 11 ~ 13 のGMail受信関連を無効にします(同時に『メール通知』の常駐も解除)。 どうもXpeari arcの場合は常時接続していたほうが・・・?

※ 色文字の部分はマウスポインタを重ねると説明が出ます。

.

■ユーザー変数の定義など

  1. [Profile] At Home
    自宅では変数%LOCATIONにhomeを代入して、WiFiを有効にします。[Context]
    State > Net > Cell Near > Scan

    [Enter Task]
    Variable > Variable Set > %LOCATION to home
    Net > WiFi > On
    Net > WiFi Sleep > Never While Plugged
    Tasker > Profile Status > “At Work” set Off
    Plugin > Secure Settings > Keyguard Off

    [Exit Task]
    Variable > Variable Clear > %LOCATION
    Net > WiFi >Off
    Tasker > Profile Status > “At Work” set On
    Task > Perform Task > “Delay Lock” > Stop:On, Priority:6, If %SCREEN ~ off

  2. [Profile] At Work
    職場では変数%LOCATIONにworkを代入して、ボリュームを最小に下げます。[Context]
    State > Net > Cell Near > Scan

    [Enter Task]
    Variable > Variable Set > %LOCATION to work
    Media > Notification Volume > 1
    Media > Volume > 1

    Tasker > Profile Status > “At Home” set Off

    [Exit Task]
    Variable > Variable Clear > %LOCATION
    Tasker > Profile Status > “At Home” set On
    Task > Perform Task > “Delay Lock” > Stop:On, Priority:6, If %SCREEN ~ off

  3. [Profile] Phone Offhook
    電話中なら変数%PHONEにactiveを代入します。近接センサーの関係で不都合のあるProfileを直接無効にします。[Context]
    Event > Phone > Phone Offhook

    [Task]
    Tasker > Profile Status > “Display Off” set Off

  4. [Profile] Phone Idle
    [Context]
    Event > Phone > Phone Idle[Task]
    Tasker > Profile Status > “Display Off” set On

.

■画面オフ30秒で3G切断、ロック制御(外出先10分、職場4時間、自宅はロックしない)

  1. [Task] Delay Lock
    3G切断とロック制御のためのサブルーチンタスクです。
    Xperia arc (Android 2.3.3)ではTasker標準KeyguardをOnにしても確実にロックしてませんでした。プラグインの Secure Settingsを使用した場合でも、Keyguard OnとLock Deviceの両方を実施しないとロックしないようです。[Properties]
    Collishion Handling > Abort Existing Task

    [Task]
    Task > Stop If %par1 ~ stop
    Task > Wait 30s
    Net > Mobile Data > Off If %OFF3G != 0
    Task >Stop > If %LOCATION ~ home
    Task > Wait 10m
    Task > Wait 4h, If %LOCATION ~ work

    Plugin > Secure Settings > Keyguard On
    Plugin > Secure Settings >Lock Device

  2. [Profile] Display Off
    画面オフでサブルーチンを起動し、3G切断とロック制御のカウントダウンを開始します。[Context]
    Event > Display > Display Off

    [Task]
    3rd Party > WidgetLocker >Activate
    Task > Perform Task > “Delay Lock”, Stop:On, Priority:6

  3. [Profile] Display On
    画面オンで3Gを開始しています。WidgetLockerのロックを解除しているうちに繋がって、アプリを使用する頃には常時接続と変わらない操作になります。
    [Context]
    Event > Display On

    [Task]
    Net > Mobile Data > On If %OFF3G != 0

  4. [Profile] Widget Locker Unlocked
    WidgetLockerのロック解除したタイミングで直前画面オフのカウントダウン処理を中断させます。Display Onで解除してしまうと、時計を見るただけでカウントダウンがキャンセルされてしまいます。[Context]
    Event > 3rd Party > Widget Locker > Unlocked

    [Task]
    Task > Perform Task > “Delay Lock” %par1 stop
    Net > Mobile Data > On If %OFF3G != 0

  5. [Profile] Display Unlocked
    パターン解除したらロックフラグも解除します。このイベントは画面オンのたびにあるとは限りません。[Context]
    Event > Display > Display Unlocked

    [Task]
    Plugin > Secure Settings > Keyguard Off

  6. [Profle] Device Boot
    リブート後にロックしないと遺失時のガードになりません。
    [Context]
    Event > Device Boot

    [Task]
    Plugin > Secure Settings > Keyguard On

.

■3G非接続下でのGMail受信
GMail から Yahooメール に転送し spモードメール へ送った新着通知を 『メール通知』 で感知して、画面をオンにする前にK-9 Mailで受信させるための設定です。
『メール通知』での通知音は切り、K-9 Mail側で通知音を鳴らします。

  1. [Profile] Notification New Mail
    『メール通知』が新着を通知したら3Gを開始してK-9 Mailが受信するのを待ちます。[Context]
    Event > UI > Notification > Owner Application:メール通知

    [Task]
    Task > Stop > If %SCREEN ~ on
    Net > Mobile Data > On
    Tasker > Profile Status > “Notification K-9 Mail” set On

  2. [Profile] Noyification K-9 Mail
    K-9 Mailがメールを受信したら3Gを切断します。[Context]
    Event > UI > Notification > Owner Application:K-9 Mail

    [Enter]
    Net > Mobile Data > Off, If %SCREEN ~ off
    Tasker > Profile Status > “Noyification K-9 Mail” set Off

もう一つの方法は定期的に3Gを有効にする方法です。『メール通知』による監視の消費電力とどちらが効果的か検証中です。11か13のどちらか必要な方を有効にして使用します。

  1. [Profile] every 15m
    [Context]
    Time > From 06:00 Repeat 15m[Task]
    Net > Mobile Data > On
    Task > Waite > 1m, If %SCREEN ~ off
    Net > Moble Data > Off, If %SCREEN ~ off

.

■Bluetoothの接続、イヤホンの抜き挿し
Bluetooth切断時の遅延処理は外して簡略化しました。また接続中を判定する変数もなくして、Profileの有効・無効を切り替えるようにしました。

また、PowerAMPのハンドセット抜き挿しによる再生制御が不安定なので、PowerAMP側の設定を無効にし(Respond To Headset Buttonのみ有効)、Taskerで制御するようにしました。両方のアプリで似たような監視をしているのは電力の無駄な気がします。

  1. [Task] Bluetooth
    Bluetoothのトグルショートカット用タスクです。
    これをWidgetLockerのロック画面のスライダーに配置し、Bluetoothを有効にした後にヘルメットのヘッドセットのスイッチを入れて接続すると接続プロファイルが働き出します。[Task]
    Net > Bluetooth > Toggle
    Alert > Flush > Bluetooth set %BLUE
    Tasker > Profile Status > “Bluetooth Connected B+COM2″ set On
  2. [Profile] Bluetooth Connected B+COM2
    Bluetoothを有効にするとこのProfileが有効になり、そして実際にBluetooth接続すると着信待ちProfileが有効になります。[Context]
    State > Net > Bluetooth Connected

    [Enter Task]
    Audio > Media Volume > 15
    Tasker > Profile Status > “Incoming Call” set On
    Task > Wait > 1s
    Media > Media Control > Toggle Pause

    [Exit Task]
    Media > Media Control > Pause
    Net > Bluetooth > Off
    Tasker > Profile Status > “Incoming Call” set Off
    Tasker > Profile Status > “Bluetooth Connected B+COM2″ set Off

  3. [Profile] Incoming Call
    Bluetooth接続中(バイク運転中)は着信を拒否します。[Context]
    State > Phone > Incoming Call > C:ANY

    [Task]
    Task > Wait > 3s
    Phone > End Call
    Phone > Send SMS > Number:%CNUM, Message:只今運転中です

  4. [Profile] Headset Plugged
    イヤホンの抜き挿しによる再生と停止の制御です。[Context]
    State > Hardware > Headset Plugged > Type:No Mic

    [Enter Task]
    Takser > Wait > 3s
    Media > Media Control > Toggle Pasue

    [Exit Task]
    Media > Media Control > Pause

  5. [Task] Media
    音楽プレーヤーの再生・停止のトグルショートカットです。
    元はと言えばロック画面にプレーヤーのウィジットを置きたくてWidgetLockerを導入しましたが、再生・停止だけのスイッチで十分でした。このスイッチだけのアプリは簡単に見つからないのでTaskerはありがたいです。[Task]
    Media > Media Control > Toggle

.

■フェードイン・スヌーズアラーム
通常のAlarmは画面ロックを解除しないと停止できないので、スヌーズと完全停止の区別がつかず意味を感じてませんでした。大抵は気軽に(?)完全停止ボタンを押して二度寝してしまいます。

そこで近接センサーで手をかざすだけで止められるアラームを作ってみました。スヌーズのためにWaitループをするのは趣味ではありませんから、Taskerの時間設定をそのまま利用しています。

  1. [Profile] Alarm#1 〜 Alarm#9
    時間と再生する音楽ファイルを指定します。プロファイル名はAlarm#N(Nは数値)の固定です。[Context]
    Time > From 06:30 every 5m Till 07:00
    Day > Mon, Tue, Wed, Thu, Fri

    [Task]
    Variable > Variable Set > %ALARM to music/中島愛/I love you/05 空色ラブレター.mp3
    Task > Perform Task > “Alarm”

  2. [Profile] Proximity Sensor
    手をかざすと鳴っているアラームを止めます。
    スヌーズを完全停止するタスクやUIはあえて用意してません。Taskerの画面を開き該当のアラームタスク(Alarm#1など)を直接無効にすることで止めます。[Context]
    State > Sensor > Proximity Sensor

    [Enter Task]
    Task > Perform Task > “Alarm” %par1 stop
    Tasker > Profile Status > “Proximity Sensor” set Off
    App > Load App > Lock Screen

  3. [Task] Alarm
    目覚まし本体のサブルーチンタスクです。[Properties]
    Collishion Handling > Abort Existing Task

    [Task]
    Task > If > %par1 ~ stop
    Media > Music Stop
    Audio > Media Volume > %VOLM0
    Variable > Variable Clear > %VOLM0
    Task > Stop
    Task > End If
    Variable > Variable Set > %VOLM0 to %VOLM If %VOLM0 !set
    Plugin > Secure Settings > Wake Device > Screen & keyboad Light On 1 Minute
    Tasker > Profile Status > “Proximity Sensor” set On
    Audio > Media > Volume > 0
    Media > Music Play > %ALARM
    Task > For > %vol 1:12
    Audio > Media Volume > %vol
    Takser > Wate > 10s
    Task > End For

  4. [Profile] Init Alarm
    スヌーズを止めるために無効にしたアラームを、1日の最初にすべて有効に戻します。
    アラームを一時的に使用停止にするには、プロファイル名をAlarm#N以外に変更してから無効にしなければなりません。[Context]
    Time > 12:00

    [Task]
    Variable > Variable Set > %var1 to Alarm
    Task > For > %var2 1: 9
    Variable > Variable Join > %var joiner #
    Task > Profile Status > %var set On
    Task > End For

    または管理が面倒でなければ、プロファイル名を直接指定して有効化する記述を羅列することで、アラームの名前を自由に付けることができます。

    [Task]
    Tasker > Profile Status > “おきろ〜” set On
    Tasker > Profile Status > “お昼休み” set On

.

■その他のプロファイル

  1. [Profile] Time From 23:00 Till 06:00
    就寝中はサイレントモードにしています。[Context]
    Time > From 23:00 Till 06:00

    [Enter Task]
    Media > Silent Mode > On

    [Exit Task]
    Media > Silent Mode > Off

  2. [Profile] Time 02:00
    Xpearia arcでも定期的なリブートは必要ですね(要root権限)。[Context]
    Time > From 02:00 Till 02:00

    [Task]
    Misc > Reboot > Normal, If %SCREEN !~ on

  3. [Profile] Power AC
    充電中だけシンクロさせます。[Properties]
    Cooldown Time > 20h

    [Context]
    State > Power > Source:AC

    [Enter Task]
    Net > Auto-Sync > On

    [Exit Task]
    Net > Auto-Sync > Off

  4. [Profile] Missed Call
    遺失時に自宅から電話すると位置情報をE-mailで返す仕組みです。自前のサーバーにphpスクリプトが必要です。[Context]
    Event > Phone > Missed Call > 自宅

    [Task]
    Misc > Get Location > Source:Any
    Net > HTTP Post > Server:Port:www.example.com Path:maildroid.php
    to=yournamei@gmail.com
    location=%LOC

.

ということで、省電力を主眼に構築しましたが、電池の持ちが目に見えて良くなった印象は全くありません(笑)

もともとXperia arcが省電力チューンされているからかもしれません。もっと効率の悪い端末で同じ設定したら達成感を感じられるかもしれませんね!

admin on 9月 27th, 2011

このところ朝起きるとTaskerがジャグってる状況が続いています。( ・´ω・`)

前回エントリーから追加したことと言えば・・・

  • 3Gオフ時のメール通知でK-9 Mailを起動して確実に受信するにしたこと
  • 画面オフで3GオフにするついでにK-9 Mailのシンクロも止めたこと
  • 近接センサーで画面オフにしたこと
  • screebl を導入したこと

ぐらいなことだけで、直接関係ありそうにありません。

逆に、暴走対策としてカットしたものは・・・

  • 充電中タスクのWaitを削除して、Auto-Syncのオン、オフだけにした
  • Bluetooth機器切断時のWailtを削除して、WiFiのオフは遅延なしの実行にした

もう一度書きだしてチェックしないと自信はありませんが、これでWait処理は画面オフ時の3G切断とロック制御だけになったはずです。

.

しかし、今朝も screebl が機能停止していて(電話使用中を感知せず)、例のHomeボタンを押すと画面ロックパターンが出現する症状が出ていました。Tasker の監視を一度オフにすると screeble は動き出し、監視をオンに戻すことで問題は解決します。

screeble と Tasker の相互作用もいまいちよくわかりません。

夜中に自動実行されたプロファイルは・・・・

  1. 就寝時はサイレント
    [Context]
    Time >> From 23:00 Till 06:00
    [Task]
    Media >> Silent Mode >> On
    [Exit Task]
    Media >> Silent Mode >> Off
  2. 深夜にリブート
    [Context]
    Time >> From 02::00 Till 02:00
    [Task]
    Misc >> Reboot >> Normal
  3. 充電中だけ同期
    [Context]
    State >> Power >> Power >> AC
    [Task]
    Net >> Auto-Sync >> On
    [Exit Task]
    Net >> Auto-Sync >> Off

夜明けで目覚めたときに枕元の充電器に接続して二度寝しするのが自分の習慣です。
充電プラグを挿したときに画面オンとなるので画面オフ時のWaitタスクも動きますが、自宅なので30秒後の3Gオフでタスクは終了しているはずです。

そして朝食後、充電完了を確かめてプラグを抜き、操作を始めたところで冒頭の症状に気づく次第です。

これまでの症状遭遇経験からどうも充電中や充電後が怪しいとは思うのですが、やっていることはAuto-Syncのオン・オフだけです。

とりあえずこれらを一時停止にして症状の確認を待つという、気の長いデバッグをするしかないようで・・・

調子に乗ってTaskerのプロファイルを増やしてから、「使用中にHomeボタンを押すと画面ロックパターンが出て、これを解除してしまうと画面オンで必ずロックされる」という現象の遭遇率が高くなりました。

現象が発生したときに、タスクの編集画面を一つずつ開いて確認してみると、いくつかのタスクに、ときにはすべてのタスクにストップボタンが出現・・・すなわち実行中となっています。正常な状態であるわけありません。

新たな設定を作成したらすぐ現象が出るのではなく、さっきまで問題なく動作していたものが突然おかしくなり、そうなると端末をリセットしてもすぐに現象が出るようになります。
これは何か?
どうやらプロファイル条件が重なったときに発生しているのでは、と当初から想像していましたが原因を特定できてませんでした。

それで、こまで気にしてなかったPriorityの値をいろいろ変えてみたり、Tasker Userguide で Priority の説明を調べていたのですが、よくわかりません。

.

・・・はて、Priority?

.

そもそもタスクに Priority が存在するのは、同時に実行されるタスクは1つだからでは?
どうもマルチタスクプログラムに慣れすぎて考えてもみないことでした。

そうなると、画面オフで3Gを切る ために作成した、画面オンの間中Wait Untilしているタスクは存在が許されるはずない わけです。

これは設計方針を考えなおさなければなりません。

イベントや状態変化をトリガーに起動するタスクにWaitを使用することはできるだけ避け、ヒットアンドアウェイを積み重ねるのが正しい道となりま す。Waitで常駐するタスクは画面オフだけに絞り、その常駐タスクは他のイベント発生時に確実にKillしなければなりません!

ということで、以下は構成し直した現在のプロファイルです。
こうして書きだしてみるとPriorityの矛盾などがわかることもあるので、自分用メモです。

.

■画面オフで3G切断と画面ロック制御

外出先なら1時間、職場は4時間で画面ロックし、自宅ではロックさせないための基本設定です。
3G切断時にメールの新着を確認する方法は前エントリーを参照してください。

Waitによる常駐タスクは “Display Off” のみとして3G切断と画面ロックの制御をあわせました。画面オンのときにもオフ時のタスクを呼び出して実行しているのが肝です。画面オフで常駐したタスク を画面オンでKillするため、”Display Off” 先頭で Stop If %SCREEN ~ off としているのです。

※ 色文字の部分はマウスポインタを重ねると説明が出ます。

  1. 自宅ではWiFiオン
    Named: “At Home”
    [Context]
    State >> Phone >> Cell Near >> Scan(自宅で)
    [Task]
    Net >> WiFi >> On
    Net >> WiFi Sleep >> Never While Plugged
    Variable >> Variable Set >> %LOCATION to home
    Display >> Keyguard >> Off
    [Exit Task]
    Net >> WiFi >> Off
    Variable >> Variable Clear >> %LOCATION
    Tasker >> Perform Task >> “Display Off”, Stop On, Priority 6 >> If %SCREEN ~ off
  2. 職場では静かに
    Named: “At Office”
    [Context]
    State >> Phone >> Cell Near >> Scan(職場で)
    [Task]
    Audio >> Notification Volume >> 1
    Audio >> Ringer Volume >> 1
    Variable >> Variable Set >> %LOCATION to office
    [Exit Task]
    Audio >> Notification Volume >> 4
    Audio >> Ringer Volume >> 4
    Variable >> Variable Clear >> %LOCATION
  3. 画面オンで3G接続開始
    [Context]
    Event >> Display >> Display On
    [Task]
    Net >> Mobile Data >> On
    Display >> Keyguard >> Off
    Tasker >> Perform Task >> “Display Off”, Stop On, Priority 6
  4. 画面ロックの解除
    [Context]
    Event >> Display >> Display Unlocked
    [Task]
    Display >> Keygurard >> Off
  5. 画面オフでWaitタスクを開始
    [Context]
    Event >> Display >> Display Off
    [Task]
    Named: “Display Off”
    Tasker >> Stop >> If %SCREEN ~ on
    Tasker >> Wait >> 30 Seconds
    Net >> Mobile Data >> Off
    Tasker >> Stop >> If %LOCATION ~ home
    Tasker >> Wait >> 1 Hour
    Takser >> Wait >> 3 Hours >> If %LOCATION ~ office
    “Display >> Keyguard >> On
    [Task Properties]
    Collishion Handling >> Abort Existing Task
  6. メール通知 Free
    3GをオンにしただけではK-9 Mailが受信してくれると限らないので現在保留中。
    [Context]
    Event >> UI >> Notification >> Owner Application: メール通知 Free
    [Task]
    Tasker >> Stop >> If %SCREEN ~ on
    Net >> Mobile Data >> On
    Tasker >> Wait >> 30 Seconds
    Net >> Mobole Data >> Off >> If %SCREEN ~ off

.

■Bluetooth接続時(バイク運転時)に着信を拒否

Airplane Modeeを使用する方法 ではバイクを降りるまで着信がわからず、緊急の連絡に応答できませんでした。そこで、有無をいわさず電話を切る方法にかえてみました。かかってくると一瞬コールされますが次の瞬間にブチッと切れます(笑)
相手には大変失礼な方法ですが、安全な場所に停車してからかけ直すことができます。

また、降車後のBluetoothオフを忘れないようヘッドセットとの接続状態を監視します。切断=オフでは一時的な切断(携帯をバイクにおいたま ま、メットを被って離れるなど)に困るので、Wait処理を入れました。画面のオンオフと構造的には同じですが、Exit Taskを使うために変数とサブルーチンを使っています。

  1. ヘッドセットとの接続
    [Context]
    State >> Net >> Bluetooth Connected >> (接続中に虫眼鏡)
    [Task]
    Variable >> Variable Set >> %BCOM to on
    Media >> Media Volume >> 15
    Tasker >> Perform Task >> “BT Delay Off”, Stop, On, Priority 10
    [Exit Task]
    Variable >> Variable Clear >> %BCOM
    Media >> Media Volume >> 7
    Tasker >> Perform Task >> “BT Delay Off”, Stop, On, Priority 10
  2. サブルーチンタスク
    [Task]
    Named: “BT Delay Off”
    Tasker >> Stop >> If %BCOM ~ on
    Tasker >> Wait >> 30 Seconds
    Net >> Bluetooth >> Off
    [Task Properties]
    Collishion Handling >> Abort Existing Task
  3. ヘッドセット接続時の着信を拒否
    [Context]
    State >> Phone >> Incoming Call >> C:ANY
    [Context]
    State >> Variable >> Variable Value >> %BCOM ~ on
    [Task]
    Tasker >> Wait >> 2 Seconds
    Phone >> End Call
    Phone >> Send SMS >> Number: %CNUM, Message: 只今運転中です

.

■その他

遺失時の位置情報メールのトリガーは、3Gを切るようにしたのでメールの着信ではなく、自宅からの電話応答に出なかったときに変えました。Eメールを直接送信するためのphpスクリプト に変更はありません。

  1. 位置情報をEメールで返す
    [Context]
    Event >> Phone >> Missed Call >> 自宅
    [Task]
    Misc >> Get Location >> Source: Any
    Net >> HTTP Post >> Server:Port: www.example, Path: maildroid.php
    to=youraddress@gmail.com
    location=%LOC
  2. 充電中だけ同期
    [Context]
    State >> Power >> Power >> AC
    [Task]
    Net >> Mobile Data >> On
    Tasker >> Wait >> 1 Minutes
    Net >> Auto-Sync >> On
    [Exit Task]
    Net >> Auto-Sync >> Off
    Net >> Mobile Data >> Off >> If %SCREEN ~ off
  3. 就寝時はサイレント
    [Context]
    Time >> From 23:00 Till 06:00
    [Task]
    Media >> Notification Volume >> 0
    Media >> Ringer Volume >> 0
    [Exit Task]
    Media >> Notification Volume >> 4
    Media >> Ringer Volume >> 4
  4. 深夜のリブートで幸せになれる?
    [Context]
    Time >> From 02::00 Till 02:00
    [Task]
    Misc >> Reboot >> Normal

.

ひとまずこれで暴走することなく安定したようなので、様子を見て拡張していこうかと。

.

9/26追記
充電中タスクに入れたWaitが暴走の原因な気がするため削除しました。

admin on 9月 19th, 2011

3G通信を切ればバッテリーの持ちが良くなると言われていますが、どれほどの効果があるか試してみようと思います。

前提条件として、私はdocomoのキャリアメールを使ってません。
遍歴はdocomo (203〜209) → WILLCOM (京ぽん〜アドエス) → softbank (HT-03Aもどき) → docomo (arc) ですが当初からdocomoアドレスは使用せず、キャリア共通サービスのリモートメール(rmail.ne.jp)を利用してWILLCOMへ乗り換えた 時もメアドは変わらず、京ぽん途中でGMailに変えて現在に至ってます。一台(所帯)持ちガジェヲタ(ただし某アンチw)の王道走ってますね・・・閑話 休題。

.

■3G切断状態でのGmail新着チェック

考えられるのは次の2つですが・・・

  1. 10〜15分に一度3Gをつなげる方法・・・新着受信の即応性がないし、どれほど節電効果があるかわかりません。
  2. Gmailをdocomoに転送してspモードメールを受信する・・・普段spモードメールを使用しているならいざ知らず、凍結解除してまでの効果は?

いずれも帯に短し襷に長しでしょうか。
必要としているのは、電話回線による新着のプッシュ信号だけを受け取ることです。

そこで、ズバリこれしかないというアプリが次です。

メール通知 Free
ネットワーク通信が無効になっていてもFOMA圏内であれば確実にメール着信を通知*だけ*します・・・とのこと。

Free版でも着信音は変更できますし、通知アイコンをタップしたときに起動するメールアプリを指定することもできます。K-9 Mail側の通知設定を非表示にして通知の重複を避ければ、K-9単独での使用状況と何ら変わることがない環境になります。

画面

spモードメールの場合特に設定というものはなく、起動して監視を開始するだけです。

.

■GMailからYohoo経由のdocomo転送

spモードメールで本文を受信するつもりはありません。
なのでGMailからdocomoへ直接転送設定してもパケット料での心配はありませんが、センターの受信ボックスを空にできないので全文転送は避けます。

GMailにはメールのタイトルだけを転送する機能がないので、一度Yahooメールに転送してからYahooメールの受信通知を利用することにします。
でも久々にログインしたらすでにメールアカウントが利用停止になっていました。4ヶ月ログインしないと停止になるようで、再開は簡単にできますがログや設 定は初期化され、受信メールは(転送者ではなく)送信元にエラーとして返されます。今後、携帯転送にだけ使用するには注意が必要ですね。

以下、Yahooの設定画面が難解だったのでメモ。もっと簡単な道筋があるのかもしれません。

  1. メールオプション >> フィルタと受信通知設定 >> 通知先メールアドレスの登録/選択はこちら >> こちら >> パスワード再入力 >> メールアドレスを追加 >> youraddress@docomo.ne.jpを登録
  2. 携帯で認証
  3. メールオプション >> フィルタと受信通知設定 >> 通知先メールアドレスの登録/選択はこちら で選択
  4. メールオプション >> フィルタの受信通知設定 >> 追加
    フィルタ名: 適当な名前
    To/Ccが youraddress@gmail.com を含む
    移動先フォルダ: ゴミ箱
    携帯端末に受信通知を送信する

.

■Taskerの設定

画面オンで3Gをオンにし、画面オフ後しばらく経ってから3Gをオフにすることにしました。メールの送信ボタンを押してすぐポケットにしまうこともあるからです。

以前のエントリーの画面ロック制御 は原則的に画面オフのタスクだけで制御できましたが、今回の制御は普通にやると画面オンと画面オフに別れてしまいます。画面オフに2つの異なるタスク(しかも片方は画面オンタスクとセット動作の片割れ)を設定するのは見通しが悪く、誤動作にもつながります。

そこで、Wait Untilを用いて画面オンタスクだけで制御することにしました。
頻繁なアプリ起動監視やWait Untiはバッテリー消費の天敵です。今回は画面オンの間中監視を続けることになりますが、アバウトな状態チェックで十分なのでゆったり30秒間隔で監視しています。

追記
以下の画面オンの間中のWait Until監視は、タスク暴走の原因になります。詳細は こちらのエントリー を参照してください。

  1. 画面オフになるのを待って3Gをオフにする
    [Context]
    Event >> Display >> Display On
    [Task = Mobile Data On]
    Net >> Mobile Network >> On
    Tasker >> Wait Until >> 30 Seconds >> Until %SCREEN Matchs off
    Tasker >> Wait >> 30 Seconds
    Net >> Mobile Network >> Off
    [Profile Properties]
    Collisiion Handling >> Abort Existing Task
  2. 着信時に3Gをオン
    [Context]
    Event >> UI >> Notification >> Owner Application: メール通知 Free
    [Task = Mobile Data On]

2は画面オフ時の着信でK-9 Mailにメールを受信させるためのものです。1のタスクは画面オフ時に呼ばれると30秒だけ3Gをオンにします。
着信後すぐ画面をオンにしても、後から実行された画面オン時のタスクだけが生き残るので、30秒で切断されることもありません。

.

考えたらこれでようやく「京ぽん」で実現していた環境――キャリアメールへの転送で受信確認してフルブラウザや専用アプリで閲覧――に戻りました。携帯電話なんだからこれで十分ですよね、常時接続な仕様のGMailって何なのでしょう・・・

admin on 9月 18th, 2011

個人的には飲み屋に携帯を忘れたことは一度もないのですが・・・

.

TaskerでEメールを送信する方法としてWikiには、Android Scripting Environment (ASE)をインストールしてPythonスクリプトを動かす 方法と メール送信サーバーにHTTPポストする 方法が紹介されています。

どちらが手軽かと言えば、Android単独で動作するASEかもしれませんし、サーバーさえ用意できれば単純なHTTPポスト方式かもしれません。自分的には圧倒的に後者です。

.

■前提条件

条件として、メールの送受信には K-9 Mail を使用していることが前提です。

また、Android 2.3からはアプリがGPSをオンにすることができませんので、GPSを普段からオンにします。
GPSのオンとは、アプリのGPS使用を許可するだけで、GPSを使用するアプリを立ち上げない限り電力消費はないらしいです。

そして、以下の仕様の自作スクリプトを設置できるサーバーが必要です。

.

■メール送信サーバーの仕様

ポストするだけで直接メールが送信できる汎用サービスはSPAMの観点から存在し得ません。

以下、自宅もしくはVPSサーバーのhttp://www.example.comにmaildroid.phpを設置し、toに送信先アドレス、locationに緯度軽度(カンマ区切り)を引数にpostすると、次のメールを送信する仕組みがあるとします。
他人に使用されないよう、送信先に指定できるアドレスは限定しておく必要があるでしょう。

From: DROID
To: 送信先アドレス
Subject: I'm here!

http://maps.google.co.jp/maps?q=緯度,経度

.

■Taskerのプロファイル設定

赤字部分は設置したサーバー環境によって変わります。

[Context]
Event >> 3rd Party >> K9 Email Received >> Subject: Where are you?
[Task]
Misc >> Get Location >> Source: Any, Timeout: 100 Seconds
Net >> HTTP Post >> Server:Port: www.example, Path: maildroid.php
to=%EFROM
location=%LOC

これで、許可された送信元から端末のGMailアドレスへ、Subjectが「Where are you?」のメールを送信すると、Googleマップへのリンクが記された「I’m here!」の返信が返ってきます。

Get LocationはSourceをAnyにしておくと、屋外でGPS電波が拾えないとき基地局を利用してくれます。

.

■PHPスクリプト

サーバーに設置するmaildroid.phpのサンプルです。

<?php
if (isset($_POST) && !empty($_POST)) {

    // 許可する送信先
    $allow = array(
        'youraddress@gmail.com', 'papa@example.com', 'mama@example.com',
    );

    if (!isset($_POST['to']) ||
        !in_array($to = preg_replace('/.*<(.*)>/', '$1', $_POST['to']), $allow)) {
        append_log("$to is not allowed!");
    }

    $headers = "From: DROID";
    $text = "http://maps.google.co.jp/maps?q={$_POST['location']}";
    $subject = "I'm here!";

    if (mail($to, $subject, $text, $headers)) {
        append_log("Sent to $to");
    } else {
        append_log("Error to $to");
    }
}

function append_log ($message) {
    $fp = fopen('maildroid.log', 'a');
    fwrite($fp, date('Y-m-d H:i:s '));
    fwrite($fp, $message.PHP_EOL);
    fclose($fp);
    exit;
}
?>

.

問い合わせメールの本文内容はチェックしていません。
起動Subjectを「いまどこ?」などさりげない言葉にして旦那の端末にこっそり仕込んだりすると、いろいろと家庭不和の解決にも原因にもなるかもしれません(笑)

admin on 9月 17th, 2011

ようやく Llamaで実現した ところまで Tasker で再現できたので自分への備忘をかねてまとめます。

.

■環境設定

バッテリー消費を抑えるために、チェック間隔を実用許容できる中でできるだけ広くします。

Menu>>Preference>>Monitor>>Display On Timings

  1. Application Check MillSeconds >> 9999
  2. WiFi Scan Seconds >> 900
  3. GPS Check Seconds >> 900
  4. Network Location Check Seconds >> 900
  5. GPS Timeout Seconds >> 90

アプリのチェック間隔は最大値の10秒としましたが、これでは当然アプリ起動に追従しません。
しかし、例えばマップとGPSを連動させるなら(OS 2.3ではGPSがONにできませんが)、GPSをOnにしてからマップを起動するショートカットを作成してOffだけを監視すれば十分です。

今のところアプリの監視は使用していませんが、今後の方針としてこのように考えています。

.

■Profile NameとTask Name

設定を作成するたびに名前の入力欄が開きますが、何も入力せずに空のままOKすれば、設定した内容が一覧に表示されるようになります。下手に名前を付けると却って見通しが悪くなります。

名前をつける必要があるのはショートカットやウィジットとして実行するためのタスクや、Cellの番号では区別が付かない場所プロファイル等です。

.

■状態監視の継続性

設定を作成するに当たり状態監視の継続性について調べてみました。相反するアクションが指定されたタスクが重なったときにどのような動きをするか知っておく必要があるからです。

  1. State >> Phone >> Cell Near
    指定頻度で場所がチェックされ、その都度タスクは実行されます。例えば自宅でWiFiをOnにする設定をした場合、手動でOffにしても自宅にいる限り再びOnになります。
    Add Exit Taskで追加したタスクは状態を抜けるときだけ実行されます。WiFiのOffを指定したとしても、外出先でWiFiがOnにできないということはありません。
  2. State >> Variable
    変数の状態が変化しときだけタスクは実行されるようです。
    自宅に帰ってきたときだけ実行するタスクを作成したい場合は、Cell NearでVariableを定義してVariableの状態によるプロファイルを作成すればよいかもしれません。
  3. Time
    これも一度実行されたタスクは再実行されません。
    自宅タスクと深夜タスクで、相反するアクションを指定しないように注意が必要です。深夜にサイレント状態にしたいときは音量を設定するのはではなく(音量は場所プロファイルで定義されているはず)、Airplane Modeで通信を遮断すると良いでしょう。

.

■同一タスクの重複実行

画面オフ等に対してWaitによる遅延タスクを作成するには、先行するタスクが完了する前に画面のオン・オフを繰り返したときの挙動を制御できなくてはなりません。
これは、タスクの編集画面でスパナのボタンを押してタスクプロパティで指定できました。

Task Properties >> Collistion Hadling

  1. Abort New Task
  2. Abort Existing Task
  3. Run Both Togegher

デフォルトはAbort New Taskなので後から実行された方がキャンセルされます。画面オフ後のWait処理は大抵Abort Existing Taskですね。

.

といったところで、とりあえず作成したプロファイルは以下のようなものです。

  1. 自宅でWiFiをOn
    [Context]
    State >> Phone >> Cell Near >> Scan(自宅で)
    [Task]
    Net >> WiFi >> On
    Net >> WiFi Sleep >> Never While Plugged
    Variable >> Variable Set >> %LOCATION to home
    Display >> Keyguard >> Off
    [Exit Task]
    Net >> WiFi >> Off
    Variable >> Variable Clear >> %LOCATION
    Tasker >> Perform Task >> Keyguad Settings >> Stop On
  2. 職場で音量を調整
    [Context]
    State >> Phone >> Cell Near >> Scan(職場で)
    [Task]
    Audio >> Notification Volume >> 1
    Audio >> Ringer Volume >> 1
    Variable >> Variable Set >> %LOCATION to office
    [Exit Task]
    Audio >> Notification Volume >> 4
    Audio >> Ringer Volume >> 4
    Variable >> Variable Clear >> %LOCATION
  3. 深夜にAirplane Mode
    [Context]
    Time >> From 23:00 Till 06:00
    [Task]
    Net >> Airplane Mode >> On
    [Exit Task]
    Net >> Airplane Mode >> Off
  4. 画面オフ後1時間でロック、職場は4時間でロック、自宅ならロックしない
    [Context]
    Event >> Display >> Display Off
    [Task (Name: Keyguard Settings)]
    Display >> Keyguard >> Off
    Tasker >> Stop >> If %LOCATION matches home
    Tasker >> Wait >> 1 Hours
    Tasker >> Wait >> 3 Hours >> If %LOCATION Doesn’t Match office
    Display >> Keyguard >> On
    [Task Properties]
    Collision Handling >> Abort Existing Task
  5. 画面ロック解除
    [Context]
    Event >> Display >> Display Unlocked
    [Task]
    Display >> Keygurard >> Off
  6. 充電中だけ同期
    [Context]
    State >> Power >> Power >> AC
    [Task]
    Net >> WiFi >> On >> If %LOCATION Matchs home
    Tasker >> Wait >> 1 Minutes
    Net >> Auto-Sync >> On
    [Exit Task]
    Net >> Auto-Sync >> Off
  7. Car ModeでAirplane Mode + Bluetooth On
    [Context]
    State >> Variable >> Variable Value >> UI Mode >> Matches car
    [Task]
    Net >> Airplane Mode >> On
    Net >> Bluetooth >> On
    Media >> Media Volume >> 15
    [Exit Task]
    Net >> Airplane Mode >> Off
    Net >> Bluetooth >> Off
    Net >> Media Volume >> 9
  8. Bluetooth切断でCar Mode Off
    [Context]
    State >> Net >> Bluetooth Connected >> (接続中に虫眼鏡)
    [Task]
    (ダミーを作成し、Exit Task追加後に削除)
    [Exit Task]
    Display >> Car Mode >> Off

1の自宅プロファイルのExit Taskでは4のタスクに名前をつけてPerform Taskで呼び出しています。

4の指定だけでは、最後に使用した場所が自宅の場合、外出先で紛失したときにロックされてない状態だからです(拾得者が一度画面をオン・オフすれば その1時間後にロックはかかりますが)。自宅を出たときに画面オフのタスクを呼び出せば1時間後にロックがかかるようになります。

Perform Taskを使用するのは、記述の繰り返しを避けるためではありません。自宅を出た後にすぐ画面オンにしたときは遅延指定が解除されなければならないからです。異なる原因でも呼び出されるタスクは同じでなければなりません。

.

6と7の意味については前々エントリーの Androidにおける留守電とドライブモード を参照ください。

なお、上記エントリーでは、Airplane Modeの切り替えやCar Modeの切り替えに、マーケットからダウンロードした専用アプリを使っていましたが、その手のモード切り替えはすべてTaskerでまかなえます。

Taskerの一覧画面で稲妻(?)ボタンを押せば、プロファイルに紐付かない独立したタスクが作成できます。Airplane ModeやCar Modeだけをトグル切り替えするタスクに名前を付ければ、ウィジットやショートカットして利用可能になります。

.
追記

1のPerform TaskにStop Onを追加しました。
遭遇した現象としては、ホーム画面でHomeボタンを押したときに何故かロック解除画面が現れ、それを解除してしまうと以後、画面オン時に必ずロック解除 が出るようになるというものです。Perform TaskしたときにStopしてなかったので6のwaitが完了するまで1は動き続け、1のプロパティはデフォルトのAbort New Taskであるため、1と6の双方が機能停止状態になったためと思われます。

admin on 9月 13th, 2011

Llamaの挙動がなんとなく理解できてきたので、Taskerに移行する前にまとめておこうかと思います。

細かな操作手順は他の詳しい解説ブログを参照願います。

■Areaタブ

最初にここで自宅と職場の場所を学習させます。それだけで初期設定の音量調整などは働き出すようになっています。

場所の特定はGPSではなく携帯基地局 (cell) を使用しますが、職場の敷地が広い場合に点ではなく面として複数cellを記憶してくれます。
私の職場は6cellsで自宅は2cellsでした。
自宅が2cellsなのは、部屋による窓の向きで捉える基地局が異なると思われます。

.

■Profilesタブ

Profieは音量についての設定グループで、デフォルトでLaud、Normal、Quiet、Silentの4つのグループがあり、呼び出し音量・通知音量・バイブレートが設定されています。

メディア音量も変更の一部に加えることもできますが止めたほうが良さそうです。
メディア音量を変えるとするとBluetoothの接続やヘッドセットの抜き差しですが、それらはProfileの条件付け(自宅ならNormal、職場ならQuiet)とは無関係だからです。

Llamaは定期的に(10分?)に場所を確認してProfileを切り替えますので、手動でメディア音量を切り替えても勝手にもとの戻ってしまうことになります。

.

■Eventsタブ

デフォルトで、昼間の自宅、夜の自宅、自宅を出る、昼間の職場、夜の職場、職場を出るという6つの時間と場所に関する設定が作られています。

それぞれの違いがわかりにくいので表示されるヘルプ文を訳してみました。

条件 説明
Enter/In Area 指定エリアのいずれかに入ったときに有効となり、離れるまで有効。
Leave Area 指定エリアのいずれかから出たときのみ有効になる。
Not in Area 指定エリアのすべてから出たときに有効となり、再び入るまで有効。
Time Between 一日の特定の時間にだけイベントが発生するように、フィルタリングできる。
一晩の時間範囲(10pmから6amなど)を指定することで、夜中にだけ実行されるイベントが作成できる。
“From”タイムはイベント発生のトリガーの役割を果たす。時刻が“From”と一致すると、イベントの他の条件をチェックしてアクションを実行する。
Day of the Week 特定の曜日にだけ発生するようにイベントをフィルタリング。

Bluetooth等の状態変化をみる条件はすべて状態変化時だけ動くものなので、定期的な監視(10分?)は Enter/In Area と Not in Area の2つのみになっています。

エリア外を判定する条件は二種類ありますが、外出先で音量調整(マナーモード)することを考えると通常は定期監視のないLeave Areaを使用するべきで、Not in Areaの使用には注意が必要です。

デフォルトの構成が複雑に見えるのは、At HomeとTime Between を独立した条件に分離することが単純ではないからです。Time Between単独では定期監視をしないので、開始時刻に夜間モードに遷移しても、その後にAt Homeの定期監視で元に戻される可能性を考えなければなりません。

.

そこで次のように整理し直しました。

名前 条件 プロファイル 実行
おきる 06:00 ~ 23:00 Normal Change Brightness 30%
Aireplane Mode Off
ねる 23:00 ~ 06:00 Silent Change Brightness 20%
Aireplane Mode On
自宅 At Home WiFi On
WiFi never sleeps when charging
職場 At Work
09:00 ~ 17:00
Quiet
外出 Leave Area
06:00 ~ 23:00
Normal WiFi Off
充電+ Charging WiFi On
Enable Sync, Request Update
充電- Using Battery Disable Sync
バイク+ In Car Mode Airplane Mode On
Bluetooth On
Change music/media volume to 15
バイク- Not In Car Mode Airplane Mode Off
Bluetooth Off
Change music/media volume to 10
バイク- (auto) Bluetooth Disconnects Car Mode Off

「おきる」と「ねる」はどこにいても働くようエリア指定してないので、それぞれの開始時刻にだけ実行されます。
そのため、深夜のコンビニ外出でSilentが解除されないよう、「外出」は夜間に働かないようフィルタリングしています。指定時間の中で繰り返しチェックされるのではなく、外に出るというイベントが発生したときにだけ、時間内かどうか判定されます。

同様に(私は職場に泊まることはあり得ませんが)「職場」も時間でフィルタリングしています。
「職場」にかけたフィルタの時刻を過ぎても、「外出」をしない限りプロファイルは継続するはずなので、残業の有無は気にしません。

Car Modeと連動した着信拒否は前回のエントリーを参照してください。
ハンドセット側で接続を切ったときは自動でCar Modeをキャンセルしています。ここからわかるのは、状態の変化は他の条件にリンクすることです。無限ループするような設定には注意が必要です。

.

節電方針としては、夜間はAirplane Modeで通信遮断し、アカウント同期は受電時のみとしています。
メールにはK-9 Mailを使っているので、アカウント同期とは独立して常に着信しています(Aireplane Modeを除く)。

.

シンプルな設計のおかげでLlamaは消費電力が少なく、バッテリーは体感的にも長持ちするように思います。
また、ここでは使用例をあげていませんが、条件に紐付けないイベントを作成してそのショートカットを利用することで、設定変更やアプリ起動のバッチ実行ツールにもなります。

あとはアプリのアクティブ状態を条件にできれば文句なかったのですが、条件設定には存在しませんので、アプリによってバックライト消灯時間を伸ばすような設定は作れません。

ということで、次はTaskerの体験版をいじってみましょうか・・・・

マーケットを探しても留守電アプリが登録されていないのは、仕組み的に作成できないからとのこと。

日本Androidの会 留守電アプリは作成不可能?

バイク通勤中に着信を拒否したいので、自分が欲しいのはいわゆるくドライブモードで機内モードがその代替になりそうです。ただし、メッセージは「電波が届かないか電源が(ry」となります。

DoCoMoには電源OFF・圏外時着信お知らせサービスがあり、機内モードにしていたときの着信の電話番号で受け取ることができます。この通知を電話帳と照らし合わせてくれるのが圏外着信お知らせツールです。その仕組みからDoCoMo専用となりますが、このアプリを使えば機内モードが簡易留守電として活用できるようになります。

あとは電源ボタンが押しにくいXperia arcにはAirPlaneSwitchを用意すればOKですね。

.

■着信を拒否してもBluetoothはオンにしたい

自分の真の目的はこれでした。

ヘルメットにBluetoothヘッドセットを仕込んでいるものの普段マイクはつけておらず、ラジオや音楽は聴くけど電話には出ません(出られません)。電話してくる相手はそんな事情は知りませんから、(発話できないのに)ヘッドセットの受信ボタンを押すまで呼び出し続けやがるわけです。

さて、端末の特定の状態をトリガーに別の状態を設定するツールには、古く(?)はlocale、最近のトレンドではLlamaがあります。
私にとってBluetoothを使うのはバイクだけなので、Bluetoothのオンを条件に機内モードをオンにしてみましたが、そうするとBluetoothがオフになるわけで(笑
かといって、機内モードをトリガーにしてBluetoothの状態をいじったら本物の機内モードがなくなってしまいます。

なにか、余ってるモード状態はないものかしらん・・・
その自分にとって不要な何かのモードを変更すると、機内モードとBluetoothを両方セットできような・・・
そんな都合のよいものあるわけ・・・

.

■Android 2.2追加のCar mode

・・・ありました。( ・`ω・´)

私の理解が正しければ、Car mode(和名: 運転モード)はそれに対応したホームアプリにおいて、運転中に便利なデザインになったり、着信を自動で(ハンドセットによる)通話状態にするもののようです。

Car Morde Controlを利用すればモードを変更できますが、現状でXperia arcの純正ホームアプリやLauncher Proでは何も起こりません(たぶん)。

ということで、現在はLlamaに次のイベントを登録することで、快適ライドを楽しんでいます(※)。

Event Name Conditions actions
バイクにのる In Car Mode Airplane Mode On
Bluetooth On
Change music/media volume 15/15
バイクをおりる Not in Car Mode Airplane Mode Off
Bluetooth Off
Change music/media volume 10/15

最近のWidgetLockerによるロック画面です(恥

BluetoothアイコンのスライダーがCar Modeのオン・オフです。
機内モードでBluetootが有効になっていることが通知領域で確認できます。左側のハンドルアイコンがCar Modeを表していて、通知領域のプルダウンからオフ(すなわち通常の状態)に戻すこともできます。

たとえCar Modeが強制的に自動受信になる機能だったとしても、まあ機内モードなら問題ないですよね。

何かの機能とバッティングして今後Car Modeが利用できなくなくなったらどうしましょう?
幸いLlamaは指定の通知アイコンを条件にできますので、「通知アイコンだを表示するだけのアプリ」を自前で作成することにしますか・・・

.

※ ヘルメットのヘッドセットは、音楽プレーヤーの密閉型イヤホンとは違いますので、(法的根拠がどうかは知りませんが)運転の妨げになるようなものではあり ません。こんなにもクリアに音楽が聴こえるのに、バイクにスピーカー付けてシャカシャカやっている人たちのことは理解できません。