package com.google.airball.glass;
import android.app.PendingIntent;
import android.app.Service;
import android.content.Intent;
import android.os.IBinder;
import android.view.SurfaceHolder;
import com.google.airball.airdata.FlightData;
import com.google.android.glass.timeline.LiveCard;
import com.google.android.glass.timeline.TimelineManager;
public abstract class AirballService extends Service {
private static final String LIVE_CARD_ID = "com.google.airball.glass";
private SurfaceHolder.Callback mCallback = null;
private TimelineManager mTimelineManager = null;
private LiveCard mLiveCard = null;
private FlightData mFlightData = null;
@Override
public void onCreate() {
super.onCreate();
mTimelineManager = TimelineManager.from(this);
}
@Override
public IBinder onBind(Intent intent) {
return null;
}
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
if (mLiveCard == null) {
mLiveCard = mTimelineManager.getLiveCard(LIVE_CARD_ID);
mFlightData = getFlightData();
mCallback = new AirballPainter(this, mFlightData);
mLiveCard.enableDirectRendering(true).getSurfaceHolder().addCallback(mCallback);
mLiveCard.setAction(
PendingIntent.getActivity(
this,
0,
new Intent(this, StartAirballActivityActualData.class), // KLUDGE!!
0));
mLiveCard.publish();
}
return START_STICKY;
}
@Override
public void onDestroy() {
if (mLiveCard != null && mLiveCard.isPublished()) {
if (mCallback != null) {
mLiveCard.getSurfaceHolder().removeCallback(mCallback);
}
mLiveCard.unpublish();
mLiveCard = null;
}
if (mFlightData != null) {
mFlightData.destroy();
mFlightData = null;
}
super.onDestroy();
}
protected abstract FlightData getFlightData();
}