AndroidのオレオレGoogleカレンダーポストアプリを作ったよ
自分専用なので、Titanium Mobileでささっと作りました。
当日午前、午後の片平堂OfficeのOPEN状況をポストするアプリです。
開始時間、終了時間は固定で、投稿先のカレンダーも固定です。
片平堂オフィスは空いてるときは、勝手に来てくれて構わないというスタンスでやっております。
が、さすがにネット上に完全にスケジュールを公開するのはあれなので、知りたいという方にオフィスのオープン状況をカレンダー共有かけてました。
しかし、この予定を入れるのが意外と面倒くさい。Webを開いてとか、Androidのカレンダーアプリからとか、結構手順が多くて面倒。
なので、8割方カバー出来ればいい内容で、すぐにポストできるオレオレアプリを作った次第。
午前なら大体9時から12時、午後なら大体13時から18時なので固定にしてしまいました。titleとdescriptionも同様に固定。また日にちも別に当日朝に入れるでいいやという事で当日固定です。当てはまらないときだけ手動で修正すればすむ話なので。*1
これで、アプリ開いてタップ1回で予定のポスト完了です。
で、最初は、ライブラリなど使わず、Titanium.Network.HTTPClientを使って、途中までGoogle Data Protocolを叩くように実装してたのですが、リファレンスを眺めていたら、Titanium.Android.Calendarなんてものが。いつのまにと思ったら、1.5からあったらしい。全然気づいてなかった・・。
方針転換して、こちらを使用して作成しました。
Titanium.UI.setBackgroundColor('#000'); //intじゃなくてカレンダー名で取得したい・・・ var CALENDAR_TO_USE = 3; var calendar = Ti.Android.Calendar.getCalendarById(CALENDAR_TO_USE); var today = new Date(); var st = new Date(today.getFullYear(), today.getMonth(), today.getDate(), 9, 0, 0); var en = new Date(today.getFullYear(), today.getMonth(), today.getDate(), 12, 0, 0); var win1 = Ti.UI.createWindow({ backgroundColor : '#fff' }); var table = Ti.UI.createTableView(); var row1 = Ti.UI.createTableViewRow({ height : '80dp', 'font-size' : '40dp', color : 'black', title : 'AM OPEN' }); row1.addEventListener('click', function() { // // Create the event var event = calendar.createEvent({ title : 'open', description : "at katahirado", begin : st, end : en, hasAlarm : false }); alert('add AM'); }); table.appendRow(row1); .......... win1.add(table); win1.open();
tokenとったりとか認証まわりのなんやかやを、標準のカレンダーにお任せできるのでお手軽ですね。
標準のカレンダーにアクセスしますので、パーミッションをお忘れ無く。tiapp.xmlの
<uses-permission android:name="android.permission.READ_CALENDAR"/> <uses-permission android:name="android.permission.WRITE_CALENDAR"/>
あと、無駄になったけど、Google Data Protocolのメモを残しておく。
カレンダーのAPIはGoogle Calendar Data API.
例によって、Google Data Protocol.
認証が必要.
OAuthとClientLoginがある。
サーバ用意しないのでClientLoginを使用する
Passwdであって、Passwordではない
http://code.google.com/apis/accounts/docs/AuthForInstalledApps.html
追記:結局日付を選べるようにした。ただし当日から3日間だけ。
*1:日にちはもしかしたらもう少し選択出来るようにするかもしれないですが。