[Titanium][Android] 定期実行するServiceを起動してNotificationに表示
バックグラウンドで定期的に動作するServiceを実装したときの覚書。
環境: Titanium SDK 3.2.3.GA, Android
参考サイト
- Titanium.Android.Service - Titanium 3.X - Appcelerator Docs
- TitaniumでAndroidのServiceを | Selfkleptomaniac
- 第18回 ServiceとNotification:Titanium Mobileで作る! iPhone/Androidアプリ|gihyo.jp … 技術評論社
- JavaScript - Titanium Androidアプリで通知バーにメッセージを表示 - Qiita
サンプルコードは上記サイトを参考に。
サービスが起動しているかどうかのチェックは次のようにする。
if (Ti.Android.isServiceRunning(Ti.Android.createServiceIntent({url: 'testservice.js'}))) {
console.log('Service IS running');
}
この辺はKitchenSinkのコードを見るとわかりやすい。
サービス起動中はNotificationの「進行中」に出しておきたい。
上記を参考に下記関数をserviceのstart, stopイベントにバインドする。
_service.addEventListener('start', handleStartService);
_service.addEventListener('stop', handleStopService);
function handleStartService(){
var pending, notification;// Intent for Click Notification
pending = Ti.Android.createPendingIntent({
intent: Ti.Android.createIntent({
flags: Ti.Android.FLAG_ACTIVITY_BROUGHT_TO_FRONT,
className: 'com.hoge.gps.HogeGpsActivity'
}),
flags: Ti.Android.FLAG_UPDATE_CURRENT
});// Create Notification
notification = Ti.Android.createNotification({
contentIntent: pending,
icon: '/images/notification.png',
contentTitle: L('service_notice_title'),
contentText: L('service_notice_text'),
flags: Titanium.Android.FLAG_ONGOING_EVENT | Titanium.Android.FLAG_NO_CLEAR
});// Show
Ti.Android.NotificationManager.notify(1, notification);
}function handleStopService(){
Ti.Android.NotificationManager.cancel(1);
}
classNameに指定するActivityの名前はbuild/android/AndroidManifest.xmlを見て確認する。
Notificationのアイコンサイズは24x24dp。詳しくは公式サイトで。
< Related Posts >