private void parseDevice(String fileName) { if (mCurPath.equals(mRoot) == false) mCurPath = mRoot; constructCurPath(fileName, true); DLNADevice device = mNameDeviceTable.get(fileName); if ((device.getType() != DLNADeviceType.DigitalMediaServer) && (device.getType() != DLNADeviceType.MobileDigitalMediaServer)) return; DLNATempFile fileins = new DLNATempFile(device); mTraceFile.push(fileins); mListContentName.clear(); // mNameContentTable.clear(); server = (MediaServer) device; server.setActionEventListener(mDLNAManager); if (localLOGV) NetLog.v(TAG, "start 1 browse : " + System.currentTimeMillis()); REQUEST_MATCH_NUM = 0; currentID = MediaServer.OBJECT_ID; mBrowseHandle = server.browse( MediaServer.OBJECT_ID, MediaServer.BrowseFlag.BrowseDirectChildren, REQUEST_MATCH_NUM, BROWSE_REQUEST, MediaServer.FILTER_BASIC_INFO, MediaServer.SORT_ASCENDING_CRITERIA_TITLE); if (localLOGV) NetLog.v(TAG, "end 1 browse : " + System.currentTimeMillis()); return; }
private void parseContent(String fileName) throws Exception { int contentType = checkContent(fileName); Content content = null; if (contentType == CONTENT_UNKNOW) { if (localLOGV) NetLog.d(TAG, "Invalid parsing file name: " + fileName); throw new Exception(); } else if (contentType == CONTENT_CHILD) { constructCurPath(fileName, true); content = mNameContentTable.get(fileName); DLNATempFile fileins = new DLNATempFile(content); mTraceFile.push(fileins); } else { content = mTraceFile.peek().getContent(); } mListContentName.clear(); // mNameContentTable.clear(); server = content.getServer(); server.setActionEventListener(mDLNAManager); if (localLOGV) NetLog.v(TAG, "start 2 browse : " + System.currentTimeMillis()); REQUEST_MATCH_NUM = 0; currentID = content.getObjectId(); mBrowseHandle = server.browse( content.getObjectId(), MediaServer.BrowseFlag.BrowseDirectChildren, REQUEST_MATCH_NUM, BROWSE_REQUEST, MediaServer.FILTER_BASIC_INFO, MediaServer.SORT_ASCENDING_CRITERIA_TITLE); if (localLOGV) NetLog.v(TAG, "end 2 browse : " + System.currentTimeMillis()); return; }
/** * Call back function, implement for com.mediatek.dlna.jar. Application should not use this API. * * @return. */ public void cancelNotify() { if (mBrowseHandle > 0 && REQUEST_MATCH_NUM > BROWSE_REQUEST && REQUEST_MATCH_NUM < mTotalNum) { server.cancel(mBrowseHandle); mBrowseHandle = -1; } }
/** * Call back function, implement for com.mediatek.dlna.jar. Application should not use this API. * * @return. */ public void notifyContentSuccessful(NormalContentEvent event) { if (localLOGV) NetLog.v(TAG, " notifyContentSuccessful : " + System.currentTimeMillis()); if (event == null) { if (listener != null) { listener.onFileFound(new FileEvent(event, mListContentName)); } return; } if (event.getTotalMatches() <= 0) { if (listener != null) { listener.onFileFound(new FileEvent(event, mListContentName)); } return; } int listnum = event.getList().size(); if (localLOGV) NetLog.v(TAG, " Last index is : " + REQUEST_MATCH_NUM + ", List num is: " + listnum); if (listnum <= 0) { if (localLOGV) NetLog.v(TAG, " List num is 0, return!"); if (listener != null) { listener.onFileFound(new FileEvent(event, mListContentName)); } return; } REQUEST_MATCH_NUM = REQUEST_MATCH_NUM + listnum; ArrayList<Content> items = event.getList(); for (int i = 0; i < items.size(); i++) { Content cnt = items.get(i); String parent = null; String cname = cnt.getTitle(); String tempParent = mCurPath; int index = tempParent.lastIndexOf("/"); if (index == 0) { parent = mCurPath.substring(1, mCurPath.length()); } else { parent = mCurPath.substring(index + 1, mCurPath.length()); } StringBuffer pathBuf = new StringBuffer(); pathBuf.append(mCurPath).append('/').append(cname); DLNAFile contentfile = new DLNAFile(cnt, pathBuf.toString(), parent); mListContentName.add(contentfile); mNameContentTable.put(cname, cnt); } // LinkedList<DLNAFile> cntList = new LinkedList<DLNAFile>(); // int size = mNameContentTable.size(); // for (int i = 0; i < size; i++) // cntList.add(mNameContentTable.get(mListContentName.get(i))); if (listener != null) { listener.onFileFound(new FileEvent(event, mListContentName)); } if (localLOGV) NetLog.v(TAG, " notifyContentSuccessful end : " + System.currentTimeMillis()); int total = event.getTotalMatches(); mTotalNum = total; if (localLOGV) NetLog.v(TAG, " Current index is : " + REQUEST_MATCH_NUM + ", Total is: " + total); if (REQUEST_MATCH_NUM < total) { mBrowseHandle = server.browse( currentID, MediaServer.BrowseFlag.BrowseDirectChildren, REQUEST_MATCH_NUM, BROWSE_REQUEST, MediaServer.FILTER_BASIC_INFO, MediaServer.SORT_ASCENDING_CRITERIA_TITLE); } }