/*
* Copyright (c) 2015 [1076559197@qq.com | tchen0707@gmail.com]
*
* Licensed under the Apache License, Version 2.0 (the "License”);
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.youku.service.download;
import java.util.Map;
import android.app.Service;
import android.content.Intent;
import android.os.IBinder;
import android.os.RemoteException;
import com.baseproject.utils.Logger;
/**
* DownloadService.下载服务
*
* @author 刘仲男 qq81595157@126.com
* @version v3.5
* @created time 2012-11-5 下午1:16:02
*/
public class DownloadService extends Service {
private static final String TAG = "Download_Service";
public static final String ACTION_CREATE = "create";
public static final String ACTION_STAER_NEWTASK = "startNewTask";
public static final String KEY_TASKID = "taskId";
private DownloadServiceManager manager;
private static long time = 0l;
private IDownloadService.Stub mBinder = new IDownloadService.Stub() {
@Override
public void createDownload(String videoId, String videoName)
throws RemoteException {
manager.createDownload(videoId, videoName);
}
@Override
public void createDownloads(String[] videoIds, String[] videoNames)
throws RemoteException {
manager.createDownloads(videoIds, videoNames);
}
@Override
public void down(String taskId) throws RemoteException {
manager.startDownload(taskId);
}
@Override
public void pause(String taskId) throws RemoteException {
manager.pauseDownload(taskId);
}
@Override
public boolean delete(String taskId) throws RemoteException {
return manager.deleteDownloading(taskId);
}
@Override
public boolean deleteAll() throws RemoteException {
return manager.deleteAllDownloading();
}
@Override
public Map<String, DownloadInfo> getDownloadingData()
throws RemoteException {
return manager.getDownloadingData();
}
@Override
public void registerCallback(ICallback cb) throws RemoteException {
manager.registerCallback(cb);
}
@Override
public void unregister() throws RemoteException {
manager.unregister();
}
@Override
public void refresh() throws RemoteException {
manager.refresh();
}
@Override
public void startNewTask() throws RemoteException {
manager.startNewTask();
}
@Override
public void stopAllTask() throws RemoteException {
manager.stopAllTask();
}
@Override
public String getCurrentDownloadSDCardPath() throws RemoteException {
return manager.getCurrentDownloadSDCardPath();
}
@Override
public void setCurrentDownloadSDCardPath(String path)
throws RemoteException {
manager.setCurrentDownloadSDCardPath(path);
}
@Override
public boolean canUse3GDownload() throws RemoteException {
return manager.canUse3GDownload();
}
@Override
public void setCanUse3GDownload(boolean flag) throws RemoteException {
manager.setCanUse3GDownload(flag);
}
@Override
public boolean canUseAcc() throws RemoteException {
return manager.canUseAcc();
}
@Override
public void setP2p_switch(int value) throws RemoteException {
manager.setP2p_switch(value);
}
@Override
public String getAccPort() throws RemoteException {
return manager.getAccPort();
}
@Override
public int getDownloadFormat() throws RemoteException {
return manager.getDownloadFormat();
}
@Override
public void setDownloadFormat(int format) throws RemoteException {
manager.setDownloadFormat(format);
}
@Override
public int getDownloadLanguage() throws RemoteException {
return manager.getDownloadLanguage();
}
@Override
public void setDownloadLanguage(int language) throws RemoteException {
manager.setDownloadLanguage(language);
}
@Override
public void setTimeStamp(long time) throws RemoteException {
manager.setTimeStamp(time);
}
};
@Override
public IBinder onBind(Intent intent) {
Logger.d(TAG, "onBind()");
return mBinder;
}
@Override
public void onCreate() {
Logger.d(TAG, "onCreate()");
manager = DownloadServiceManager.getInstance();
super.onCreate();
}
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
if (intent == null) {
return START_NOT_STICKY;
}
Logger.d(TAG, "onStartCommand():" + flags + "/" + startId + "/"
+ intent.getAction());
if (ACTION_CREATE.equals(intent.getAction())) {
long now = System.currentTimeMillis();
if ((now - time) > 1000l) {
time = now;
String videoId = intent.getStringExtra("videoId");
String videoName = intent.getStringExtra("videoName");
manager.createDownload(videoId, videoName);
}
return START_NOT_STICKY;
} else if (ACTION_STAER_NEWTASK.equals(intent.getAction())) {
manager.startNewTask();
}
return START_NOT_STICKY;
}
@Override
public void onDestroy() {
Logger.d(TAG, "onDestroy()");
manager.destroy();
super.onDestroy();
}
}