Android版でしか利用できない機能として、
カレンダーの取得
Googleカレンダーには、
var win = Ti.UI.currentWindow;
var table = Ti.UI.createTableView();
var data = [];
var calendars = Ti.Android.Calendar.allCalendars;
for(var i=0;i<calendars.length;i++){
var calendar = calendars[i];
var row = Ti.UI.createTableViewRow({
height: '60dp',
'font-size': '20dp',
color: 'black'
});
row.title = calendar.name;
row.calendarObj = calendar;
data.push(row);
row.addEventListener(
'click',
function(){
var newWin = Ti.UI.createWindow({
url: 'event_list.js',
calendarObj: this.calendarObj
});
Ti.UI.currentTab.open(newWin);
}
);
}
table.setData(data);
win.add(table);
これだけでAndroid端末と紐づいてるGoogleアカウントのカレンダー名の一覧が表示できます。Ti.
var win = Ti.UI.currentWindow;
win.setBackgroundColor('#000');
var table = Ti.UI.createTableView();
var data = [];
var calendar = win.calendarObj;
var YEAR = 2011;
var events = calendar.getEventsInYear(YEAR);
for(var i=0;i<events.length;i++){
var eventObj = events[i];
var row = Ti.UI.createTableViewRow({
height: '60dp',
'font-size': '20dp',
backgroundColor: 'white',
color: 'black'
});
row.title = eventObj.title;
row.eventObj = eventObj;
row.addEventListener(
'click',
function(){
var newWin = Ti.UI.createWindow({
url: 'event_detail.js',
eventObj: this.eventObj
});
Ti.UI.currentTab.open(newWin);
}
);
data.push(row);
}
table.setData(data);
win.add(table);
こちらのコードもカレンダーの表示と似ていますが、

イベントの詳細を表示する部分は次のようになります。
var win = Ti.UI.currentWindow;
win.setBackgroundColor('#000');
var table = Ti.UI.createTableView();
var data = [];
var e = win.eventObj;
var details = [
e.title,
e.description,
e.begin.toLocaleString(),
e.end.toLocaleString()
];
for(var i=0;i<details.length;i++){
var detail = details[i];
var row = Ti.UI.createTableViewRow({
height: '60dp',
'font-size': '20dp',
backgroundColor: 'white',
color: 'black'
});
row.title = detail;
data.push(row);
}
table.setData(data);
win.add(table);
アラームの有無などイベントに設定されている値は多岐に渡るのですが、

イベントの追加
カレンダーを指定して、
win.activity.onCreateOptionsMenu = function(e) {
var menu = e.menu;
var menuItem = menu.add({ title: "Add Event" });
menuItem.addEventListener("click", function(e) {
var now = new Date();
var end = new Date(now.getTime() + 3600 * 1000);
calendar.createEvent({
title: 'test',
description: 'test event',
begin: now,
end: end
});
});
};
イベント一覧を表示していたevent_
Reminderの設定
イベントにはReminderを設定することができます。Reminderを設定しておくと指定時間にSMS、
var eventObj = calendar.createEvent({
title: title,
description: description,
begin: begin,
end: end
});
eventObj.createReminder({
minutes: 10,
method: Ti.Android.Calendar.METHOD_EMAIL
});
作成したイベントオブジェクトからさらにcreateRemindeメソッドを呼ぶことでReminderがセットできます。
この例だと、
まとめ
今回はAndroidのカレンダーに対する操作について解説しました。サンプルで扱ったコードはgithubにありますのであわせてご覧ください。Android特有の機能はほぼ解説し終わったので、