package com.joyplus.manager; import java.util.ArrayList; import java.util.Collections; import java.util.Iterator; import java.util.List; import com.joyplus.tvhelper.entity.URLS_INDEX; import com.joyplus.tvhelper.utils.BangDanConstant; import com.joyplus.tvhelper.utils.Constant; import com.joyplus.tvhelper.utils.DefinationComparatorIndex; import com.joyplus.tvhelper.utils.Log; import com.joyplus.tvhelper.utils.SouceComparatorIndex1; public class URLManager { private static final String TAG = "URLManager"; public enum Quality{ HD2 (8),//超清 MP4 (7), //高清 FLV (6);//普清 private int Type =8; Quality(int type){ Type = type; } public int toInt(){ return Type; } } private URLManagerServer mServer; private final static Quality DEFAULTQUALITY = Quality.HD2; public URLManager(){ mServer = new URLManagerServer(); } public URLS_INDEX getCurURLS_INDEX(){ return mServer.mURUrls_INDEX; } public URLS_INDEX getNextURLS(){ return mServer.getNextURLS(); } /*Interface of server*/ public void setDefaultQuality(int defaultQuality){ setDefaultQuality(getQuality(defaultQuality)); } public void setDefaultQuality(Quality qua){ mServer.setDefaultQuality(qua); } public void setURLS(URLS_INDEX list){ if(list == null)return; List<URLS_INDEX> lists = new ArrayList<URLS_INDEX>(); lists.add(list); setURLS(lists); } public void setURLS(List<URLS_INDEX> list){ if(list == null)return; mServer.setURLs(list); } public void resetCurURLS_INDEX(){ mServer.resetCurURLS_INDEX(); } public Quality getDefaultQuality(){ return mServer.getDefaultQuality(); } /*Interface */ public Quality getCurrentQuality(){ if(mServer.mURUrls_INDEX == null)return DEFAULTQUALITY; return getQuality(mServer.mURUrls_INDEX.defination_from_server.trim()); } public boolean isHave_HD2(){ return mServer.isHave_HD2(); } public boolean isHave_MP4(){ return mServer.isHave_MP4(); } public boolean isHave_FLV(){ return mServer.isHave_FLV(); } /*Interface for String show*/ public ArrayList<String> getExitQualityList(){ ArrayList<String> definationStrings = new ArrayList<String>(); if(isHave_HD2())definationStrings.add("超 清"); if(isHave_MP4())definationStrings.add("高 清"); if(isHave_FLV())definationStrings.add("标 清"); return definationStrings; } public static String getQualityString(Quality quality){ switch(quality.toInt()){ case 8:return "超 清"; case 7:return "高 清"; case 6:return "标 清"; } return getQualityString(DEFAULTQUALITY); } public static Quality getQualityFromString(String quality){ if(quality.equals("超 清"))return Quality.HD2; else if(quality.equals("高 清"))return Quality.MP4; else if(quality.equals("标 清"))return Quality.FLV; return getQualityFromString(getQualityString(DEFAULTQUALITY)); } /*Interface of quality tranface*/ public static Quality getQuality(String string){ if (string.trim().equalsIgnoreCase("mp4")) { return Quality.MP4; } else if (string.trim().equalsIgnoreCase("hd2")) { return Quality.HD2; }else if (string.trim().equalsIgnoreCase("flv")) { return Quality.FLV; }else if (string.trim().equalsIgnoreCase("3gp")) { return Quality.FLV; } return DEFAULTQUALITY; } public static String getQuality(Quality qua){ switch(qua.toInt()){ case 6:return "flv"; case 7:return "mp4"; case 8:return "hd2"; } return getQuality(DEFAULTQUALITY); } public static Quality getQuality(int type){ switch(type){ case 6:return Quality.FLV; case 7:return Quality.MP4; case 8:return Quality.HD2; } return DEFAULTQUALITY; } private class URLManagerServer{ private List<URLS_INDEX> mList = new ArrayList<URLS_INDEX>(); private List<URLS_INDEX> mList_HD2 = new ArrayList<URLS_INDEX>(); private List<URLS_INDEX> mList_MP4 = new ArrayList<URLS_INDEX>(); private List<URLS_INDEX> mList_FLV = new ArrayList<URLS_INDEX>(); private URLS_INDEX mURUrls_INDEX; private Quality mDefaultQuality = null; public URLS_INDEX getNextURLS() { // TODO Auto-generated method stub if(mURUrls_INDEX == null || mList.size()<=0)return null; Iterator<URLS_INDEX> it = mList.iterator(); while(it.hasNext()){ URLS_INDEX index = it.next(); if(index.url.equals(mURUrls_INDEX.url)){ if(it.hasNext()){ mURUrls_INDEX=it.next(); Log.i(TAG, "getNextURLS--->" + mURUrls_INDEX.toString()); return mURUrls_INDEX; } break; } } mURUrls_INDEX = null; return null; } public void resetCurURLS_INDEX(){ if(mList.size()<=0){ mURUrls_INDEX= null; return; } mURUrls_INDEX = mList.get(0); } public void setDefaultQuality(Quality qua){ mDefaultQuality = qua; ListURLS_INDEX(); } public Quality getDefaultQuality(){ return mDefaultQuality; } public void setURLs(List<URLS_INDEX> list){ mList = list; if(mDefaultQuality == null) mDefaultQuality = DEFAULTQUALITY; InitResource(); } public URLManagerServer(){ } private void InitResource(){ mList_HD2 = new ArrayList<URLS_INDEX>(); mList_MP4 = new ArrayList<URLS_INDEX>(); mList_FLV = new ArrayList<URLS_INDEX>(); ListURLS_INDEX(); } private void ListURLS_INDEX() { // TODO Auto-generated method stub if(mList.size()<=0)return; for(URLS_INDEX url_index :mList){ initResource_list_from(url_index); initResource_list_qua(url_index); initResource_list_primary(url_index); } if (mList.size() > 1) { Collections.sort(mList, new SouceComparatorIndex1()); Collections.sort(mList, new DefinationComparatorIndex()); } mURUrls_INDEX = mList.get(0); } private void initResource_list_from(URLS_INDEX url_index){ if (url_index.source_from.trim().equalsIgnoreCase( Constant.video_index[0])) { url_index.souces = 0; } else if (url_index.source_from.trim().equalsIgnoreCase( Constant.video_index[1])) { url_index.souces = 1; } else if (url_index.source_from.trim().equalsIgnoreCase( Constant.video_index[2])) {//le_tv_fee url_index.souces = 2; } else if (url_index.source_from.trim().equalsIgnoreCase( Constant.video_index[3])) {//letv url_index.souces = 3; } else if (url_index.source_from.trim().equalsIgnoreCase( Constant.video_index[4])) {//fengxing url_index.souces = 4; } else if (url_index.source_from.trim().equalsIgnoreCase( Constant.video_index[5])) { url_index.souces = 5; } else if (url_index.source_from.trim().equalsIgnoreCase( Constant.video_index[6])) { url_index.souces = 6; } else if (url_index.source_from.trim().equalsIgnoreCase( Constant.video_index[7])) { url_index.souces = 7; } else if (url_index.source_from.trim().equalsIgnoreCase( Constant.video_index[8])) { url_index.souces = 8; } else if (url_index.source_from.trim().equalsIgnoreCase( Constant.video_index[9])) { url_index.souces = 9; } else if (url_index.source_from.trim().equalsIgnoreCase( Constant.video_index[10])) { url_index.souces = 10; } else if (url_index.source_from.trim().equalsIgnoreCase( Constant.video_index[11])) { url_index.souces = 11; } else if (url_index.source_from.trim().equalsIgnoreCase( Constant.video_index[12])) { url_index.souces = 12; } else { url_index.souces = 13; } } private void initResource_list_qua(URLS_INDEX url_index){ switch (mDefaultQuality.toInt()) { case BangDanConstant.GAOQING:// 高清 if (url_index.defination_from_server.trim() .equalsIgnoreCase(Constant.player_quality_index[1])) { url_index.defination = 1; } else if (url_index.defination_from_server.trim() .equalsIgnoreCase(Constant.player_quality_index[0])) { url_index.defination = 2; } else if (url_index.defination_from_server.trim() .equalsIgnoreCase(Constant.player_quality_index[2])) { url_index.defination = 3; } else if (url_index.defination_from_server.trim() .equalsIgnoreCase(Constant.player_quality_index[3])) { url_index.defination = 4; } else { url_index.defination = 5; } break; case BangDanConstant.CHAOQING:// 超清 if (url_index.defination_from_server.trim() .equalsIgnoreCase(Constant.player_quality_index[0])) { url_index.defination = 1; } else if (url_index.defination_from_server.trim() .equalsIgnoreCase(Constant.player_quality_index[1])) { url_index.defination = 2; } else if (url_index.defination_from_server.trim() .equalsIgnoreCase(Constant.player_quality_index[2])) { url_index.defination = 3; } else if (url_index.defination_from_server.trim() .equalsIgnoreCase(Constant.player_quality_index[3])) { url_index.defination = 4; } else { url_index.defination = 5; } break; case BangDanConstant.CHANGXIAN:// 标清 if (url_index.defination_from_server.trim() .equalsIgnoreCase(Constant.player_quality_index[2])) { url_index.defination = 1; } else if (url_index.defination_from_server.trim() .equalsIgnoreCase(Constant.player_quality_index[3])) { url_index.defination = 2; } else if (url_index.defination_from_server.trim() .equalsIgnoreCase(Constant.player_quality_index[1])) { url_index.defination = 3; } else if (url_index.defination_from_server.trim() .equalsIgnoreCase(Constant.player_quality_index[0])) { url_index.defination = 4; } else { url_index.defination = 5; } break; } } private void initResource_list_primary(URLS_INDEX url_index){ if ("hd2".equalsIgnoreCase(url_index.defination_from_server)) { mList_HD2.add(url_index); } else if ("mp4".equalsIgnoreCase(url_index.defination_from_server)) { mList_MP4.add(url_index); } else if ("flv".equalsIgnoreCase(url_index.defination_from_server)) { mList_FLV.add(url_index); } } public boolean haveNext(){ if(mURUrls_INDEX == null || mList.size()<=0)return false; Iterator<URLS_INDEX> it = mList.iterator(); while(it.hasNext()){ URLS_INDEX index = it.next(); if(index.url.equals(mURUrls_INDEX.url)){ return it.hasNext(); } } return false; } public boolean isHave_HD2() { // TODO Auto-generated method stub return mList_HD2.size()>0; } public boolean isHave_MP4() { // TODO Auto-generated method stub return mList_MP4.size()>0; } public boolean isHave_FLV() { // TODO Auto-generated method stub return mList_FLV.size()>0; } } }