package com.iwedia.service.content; import java.io.File; import java.util.List; import android.content.Intent; import android.net.Uri; import android.os.RemoteException; import android.util.Log; import com.iwedia.comm.content.Content; import com.iwedia.comm.content.multimedia.MultimediaContent; import com.iwedia.comm.content.multimedia.PlaylistFile; import com.iwedia.comm.enums.FilterType; import com.iwedia.dlna.MultimediaManager; import com.iwedia.service.IWEDIAService; /** * Content filter used to manage multimedia contents. {@link MultimediaContent}; * * @author Marko Zivanovic. */ public class ContentFilterMultimedia extends ContentFilter { /** * Debug log tag. */ private final String LOG_TAG = "ContentFilterMultimedia"; /** * Default constructor. */ public ContentFilterMultimedia() { this.FILTER_TYPE = FilterType.MULTIMEDIA; /** * Initialize native libraries and register handler. */ Thread startThread = new Thread(new Runnable() { @Override public void run() { if (MultimediaManager.getInstante().initNative() == 0) { if (IWEDIAService.DEBUG) { Log.e(LOG_TAG, "Initialization FAILED!"); } } if (MultimediaManager.getInstante().registerEntry( MultimediaManager.FILE_LOCAL) == 0) { if (IWEDIAService.DEBUG) { Log.e(LOG_TAG, "Register Entry FAILED!"); } } // if (MultimediaManager.getInstante().registerEntry( // MultimediaManager.FILE_DLNA) == 0) { // if (IWEDIAService.DEBUG) // Log.e(LOG_TAG, "Register Entry FAILED!dlna"); // } // // if (IWEDIAService.DEBUG) // Log.e(LOG_TAG, "*********after FILE_DLNA()"); MultimediaManager.getInstante().init(); goContent(new MultimediaContent("", null, null, null, null, -1, "/", "", "", "", 0), 0); } }); startThread.start(); } /** * This function is called when the MW scan is completed. */ @Override public void reinitialize() { try { MultimediaManager.getInstante().reinitialize(); } catch (RemoteException e) { // TODO Auto-generated catch block e.printStackTrace(); } } /** * Returns MultimediaContent at given index {@link MultimediaContent}. */ @Override public Content getContent(int index) { return MultimediaManager.getInstante().getContent(index); } /** * Returns a list of MultimediaContent at given range. * {@link MultimediaContent} * * @param startIndex * first index of range. * @param endIndex * last index of range. */ @Override public List<Content> getContentList(int startIndex, int endIndex) { return MultimediaManager.getInstante().getContentList(startIndex, endIndex); } /** * Plays given MultimediaContent. * * @param content * MultimediaContent to be played.{@link MultimediaContent} */ @Override public int goContent(Content content, int displayId) { MultimediaContent mContent = (MultimediaContent) content; if (mContent.getExtension() != null) if (mContent.getExtension().equals("apk")) { Intent intent = new Intent(Intent.ACTION_VIEW); intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); String path = mContent.getAbsolutePath().replace("local:///", "/"); if (IWEDIAService.DEBUG) { Log.e(LOG_TAG, "install new application:" + path); } intent.setDataAndType(Uri.fromFile(new File(path)), "application/vnd.android.package-archive"); IWEDIAService.getInstance().startActivity(intent); } else { int returnValue = MultimediaManager.getInstante().goContent( content, displayId); if (IWEDIAService.DEBUG) { Log.e(LOG_TAG, "returnValue:" + returnValue); } return returnValue; } return 0; } /** * Plays MultimediaContent at given index. */ @Override public int goContentByIndex(int intex, int displayId) { return 0; } /** * Returns number of multimedia contents. */ @Override public int getContentListSize() { return MultimediaManager.getInstante().getContentListSize(); } /** * Adds given content to favorite list. * * @param MultimediaContent * to be added. {@link MultimediaContent} */ @Override public boolean addContentToFavorites(Content content) { return MultimediaManager.getInstante().addContentToFavorites(content); } /** * Removes given content from favorite list. * * @param MultimediaContent * to be removed. {@link MultimediaContent} */ @Override public boolean removeContentFromFavorites(Content content) { return MultimediaManager.getInstante().removeContentFromFavorites( content); } /** * Returns number of items in favorite list. */ @Override public int getFavoritesSize() { return MultimediaManager.getInstante().getFavoritesSize(); } /** * Returns MultimediaContent from favorite list at given index. * {@link MultimediaContent} */ @Override public Content getFavoriteItem(int index) { return MultimediaManager.getInstante().getFavoriteItem(index); } /** * Returns number of items in recently list. */ @Override public int getRecenltyWatchedListSize() { if (IWEDIAService.DEBUG) { Log.e(LOG_TAG, "getRecenltyWatchedListSize"); } return MultimediaManager.getInstante().getRecenltyWatchedListSize(); } /** * Returns MultimediaContent from recently list at given index. * {@link MultimediaContent} */ @Override public Content getRecentlyWatchedItem(int index) { return MultimediaManager.getInstante().getRecentlyWatchedItem(index); } /** * Sets absolute path while browsing multimedia. */ @Override public void goPath(String path) { MultimediaManager.getInstante().goPath(path); } /** * Returns number of items in Path list. Path list represent history list * (absolute path) while user is browsing multimedia content. */ @Override public int getPathSize() { return MultimediaManager.getInstante().getPathSize(); } /** * Returns MultimediaContent item at given index of absolute path. * {@link MultimediaContent}. */ @Override public Content getPath(int index) { return MultimediaManager.getInstante().getPath(index); } /** * This content filter does not have associated MW service list. */ @Override public int getServiceListIndex() { return -1; } /** * Return enum {@link com.iwedia.comm.enums.FilterType} of this * ContentFilter. */ @Override public int toInt() { return FILTER_TYPE; } @Override public boolean createPlaylist(String playlistName, String playlistType) { return MultimediaManager.getInstante().getPlaylistManager() .createPlaylist(playlistName, playlistType); } @Override public boolean openPlaylist(String playlistName) { return MultimediaManager.getInstante().getPlaylistManager() .openPlaylist(playlistName); } @Override public boolean addAudioItemToPlaylist(String playlistName, String artist, String title, int duration, String URI) { return MultimediaManager .getInstante() .getPlaylistManager() .addAudioItemToPlaylist(playlistName, artist, title, duration, URI); } @Override public boolean addVideoItemToPlaylist(String playlistName, String title, int duration, String URI) { return MultimediaManager.getInstante().getPlaylistManager() .addVideoItemToPlaylist(playlistName, title, duration, URI); } @Override public boolean addImageItemToPlaylist(String playlistName, String title, String resolution, String URI) { return MultimediaManager.getInstante().getPlaylistManager() .addImageItemToPlaylist(playlistName, title, resolution, URI); } @Override public void removeItemFromPlaylist(Content content, String playlistName, String URI) { MultimediaManager.getInstante().removeItemFromPlaylist(content, playlistName, URI); } @Override public boolean sortPlaylist(String playlistName, String criteria) { return MultimediaManager.getInstante().sortPlaylist(playlistName, criteria); } @Override public void clearPlaylist(String playlistName) { MultimediaManager.getInstante().clearPlaylist(playlistName); } @Override public void deletePlaylist(Content content, String playlistName) { MultimediaManager.getInstante().deletePlaylist(content, playlistName); } @Override public List<PlaylistFile> getPlaylists() { return MultimediaManager.getInstante().getPlaylistManager() .getPlaylists(); } @Override public List<MultimediaContent> getPlaylistItems(String playlistName) { return MultimediaManager.getInstante().getPlaylistManager() .getPlaylistItems(playlistName); } }