package com.zhan_dui.services;
import android.app.Service;
import android.content.Intent;
import android.os.Binder;
import android.os.Handler;
import android.os.IBinder;
import android.os.Message;
import android.widget.BaseAdapter;
import android.widget.Toast;
import com.zhan_dui.adapters.DownloadAdapter;
import com.zhan_dui.animetaste.R;
import com.zhan_dui.download.alfred.Alfred;
import com.zhan_dui.download.alfred.defaults.MissionListenerForNotification;
import com.zhan_dui.download.alfred.defaults.MissionSaver;
import com.zhan_dui.download.alfred.missions.M3U8Mission;
import com.zhan_dui.download.alfred.missions.Mission;
/**
* Created by daimajia on 14-2-11.
*/
public class DownloadService extends Service implements Mission.MissionListener<M3U8Mission>{
private Alfred alfred = Alfred.getInstance();
private DownloadAdapter missionAdapter;
private final int MSG_REPEAT = 0;
private final int MSG_START = 1;
private Handler downloadHandler = new Handler(){
@Override
public void handleMessage(Message msg) {
super.handleMessage(msg);
switch (msg.what){
case MSG_REPEAT:
Toast.makeText(DownloadService.this, R.string.downloading, Toast.LENGTH_SHORT).show();
break;
case MSG_START:
Toast.makeText(DownloadService.this, getString(R.string.start_downloading), Toast.LENGTH_SHORT).show();
break;
}
}
};
@Override
public void onCreate() {
super.onCreate();
missionAdapter = new DownloadAdapter(this);
}
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
return super.onStartCommand(intent, flags, startId);
}
@Override
public void onDestroy() {
super.onDestroy();
}
@Override
public IBinder onBind(Intent intent) {
return new DownloadServiceBinder();
}
@Override
public boolean onUnbind(Intent intent) {
return super.onUnbind(intent);
}
public class DownloadServiceBinder extends Binder {
public void startDownload(M3U8Mission mission) {
if(missionAdapter.isDownloadingRightNow(mission.getUri())){
downloadHandler.sendEmptyMessage(MSG_REPEAT);
}else{
mission.addMissionListener(new MissionListenerForNotification(DownloadService.this));
mission.addMissionListener(missionAdapter);
mission.addMissionListener(new MissionSaver());
mission.addMissionListener(DownloadService.this);
alfred.addMission(mission);
downloadHandler.sendEmptyMessage(MSG_START);
}
}
public BaseAdapter getMissionAdapter(){
return missionAdapter;
}
public void stopMission(int MissionID){
alfred.cancelMission(MissionID);
}
}
private int count = 0;
@Override
public void onStart(M3U8Mission mission) {
count++;
}
@Override
public void onMetaDataPrepared(M3U8Mission mission) {
}
@Override
public void onPercentageChange(M3U8Mission mission) {
}
@Override
public void onSpeedChange(M3U8Mission mission) {
}
@Override
public void onError(M3U8Mission mission, Exception e) {
}
@Override
public void onSuccess(M3U8Mission mission) {
}
@Override
public void onFinish(M3U8Mission mission) {
count--;
if(count == 0){
stopSelf();
}
}
@Override
public void onPause(M3U8Mission mission) {
}
@Override
public void onResume(M3U8Mission mission) {
}
@Override
public void onCancel(M3U8Mission mission) {
}
}