【Android】Androidアプリ「on{X}」の「rule」を作ってみた。

今日、「マイクロソフト、日常タスクを自動化するAndroidアプリ on{X} を公開。ウェブでルール作成」という記事を見て、これはかなり便利そうだなー と思って、早速簡単なものを作ってみました。

最初にon{X}のAndroidアプリをインストール。
Androidアプリをインストールしただけでは何の役にも立たないので、
https://www.onx.ms/
にアクセスし、Facebookアカウントでログインします。
そうしたら、新しく「rule」を作成します。
まず、右の方にある「create」ボタンを押します。


すると、こんな感じのサンプルのスクリプト(ロック画面を解除すると「Hello world!」という通知するもの)が出てくると思いますが、それは必要ないので全て削除します。


そうしたら、後は自分でスクリプトを書いていきます。
APIの使い方は、https://www.onx.ms/#!apiPage に書いてあります(英語)。
今回僕が書いたのは「その日初めてロック画面を解除したら、今日の名古屋の天気を通知する」というものです。
javascriptはあんまり書いたことがなかったのですが、調べながらなんとか完成しました。
そのスクリプトがこれ。
var storage = device.sharedStorage;
if(storage.length < 1){
    var now = new Date();
    var yesterday = new Date(now.getFullYear(), now.getMonth() + 1, now.getDate() - 1);
    storage.setItem("yesterday", yesterday.getDay());
}

device.screen.on("unlock", function()
{
    var date = new Date();
    if(date.getDay() != storage.getItem("yesterday")){
        feeds.weather.get(
        {
          location:  'Nagoya,Japan',
          locationtype:  'city',
          unittype:  'm'
        },
        function onSucess (weather, textStatus, response) {
            var notification = device.notifications.createNotification("今日の天気: " + sky2jap(weather.forecasts[0].sky));
            notification.content = "最高: " + weather.forecasts[0].temperature.high + "度" + " 最低:" + weather.forecasts[0].temperature.low + "度 降水確率: " + weather.forecasts[0].rain + "%";
            notification.show();
            console.log('Weather for Nagoya is:  ' + weather.forecasts[0].sky);
        },
        function onError (response, textStatus) {
          console.error('Weather error from script');
        });
        storage.setItem("yesterday", date.getDay());
    }
});

function sky2jap(sky)
{
    switch(sky){
        case "Clear":
        case "Sunny":
        case "Blue sky":
        case "Fine":
            return "快晴";
        case "Fair":
            return "晴れ";
        case "Nice":
        case "Beautiful":
        case "Good":
            return "良い天気";
        case "Bad":
        case "Foul":
            return "悪い天気";
        case "Miserable":
        case "Nasty":
            return "いやな天気";
        case "Cloudy":
            return "曇り";
        case "Overcast":
            return "曇り(雲量多)";
        case "Mostly Cloudy":
            return "薄曇り";
        case "Mostly Sunny":
            return "快晴所により曇り";
        case "Partly Clear":
            return "晴れ所により曇り";
        case "Partly Cloudy":
            return "所により曇り";
        case "Partly Sunny":
            return "曇り一時快晴";
        case "Showers / Clear":
            return "曇りのち小雨";
        case "Rain":
        case "Rainy":
        case "Wet":
            return "雨";
        case "Light rain":
        case "Spinkle":
            return "小雨";
        case "Heavy rain":
            return "大雨";
        case "Downpour":
            return "豪雨";
        case "Shower":
            return "にわか雨";
        case "Drizzle":
            return "霧雨";
        case "Light Drizzle":
            return "弱い霧雨";
        case "Hail":
            return "あられ";
        case "Sleet":
            return "みぞれ";
        case "Snow":
            return "雪";
        case "Thunderstorms":
            return "雷又は雷雨";
        case "Typhoon":
            return "台風";
        case "Thunder":
            return "雷";
        case "Lightning":
            return "稲妻";
        default:
            return sky;
    }
}
実際に通知するスクリプトよりも、日本語変換部分のほうが長くなってしまいました(笑)
「英語のままのほうが良い!」とか「東京の天気を通知して!」という人はその部分を適当に変更してください。

スクリプトを書き終わったら、右上の「save and send to phone」を押します。


そしてAndroid端末の画面をオフにしてロック画面を解除すると、こんな感じで今日の天気、最高気温、最低気温、降水確率を通知してくれます。


他の天気情報(風とか)が欲しい場合は、自分で適当に変更してください。
また、天気の日本語化の部分は全て対応しきれていないと思いますが、日本語にできなかったらそのまま英語で表示されますので、その都度自分で追加していってください。

というわけで、現時点ではPlayストアの評価は星 1.8 個と、かなり低いですが、上手く使えばかなり便利なものになりそうですし、僕は結構良いアプリだと思います。
また暇があれば、他にも色々な「rule」を書いていこうかなと思います(ブログに書くかはわかりませんが)。

追記(2012年6月7日 0時19分):
ロック画面を解除したとき、その日初めてのロック解除でなくても天気を通知してくる時があったので、スクリプトを少し変更しました。

コメント

人気の投稿

【Linux】Linuxでディレクトリ毎にzip圧縮する

[Qiita] Google Playのクローズドベータ版テストでメールアドレスを指定して公開する

[Qiita] Androidの実機でPCのlocalhostに接続したり、Webページの要素を検証する