diff --git a/app/src/main/java/org/xbmc/kore/ui/sections/file/MediaFileListFragment.java b/app/src/main/java/org/xbmc/kore/ui/sections/file/MediaFileListFragment.java index 3910c2c..d699ee6 100644 --- a/app/src/main/java/org/xbmc/kore/ui/sections/file/MediaFileListFragment.java +++ b/app/src/main/java/org/xbmc/kore/ui/sections/file/MediaFileListFragment.java @@ -17,10 +17,12 @@ package org.xbmc.kore.ui.sections.file; import android.content.Context; import android.content.res.Resources; +import android.content.Intent; import android.os.Bundle; import android.os.Handler; import android.os.Parcel; import android.os.Parcelable; +import android.net.Uri; import android.support.v7.widget.RecyclerView; import android.view.LayoutInflater; import android.view.MenuItem; @@ -47,6 +49,7 @@ import org.xbmc.kore.ui.viewgroups.RecyclerViewEmptyViewSupport; import org.xbmc.kore.utils.LogUtils; import org.xbmc.kore.utils.UIUtils; import org.xbmc.kore.utils.Utils; +import org.xbmc.kore.utils.FileDownloadHelper; import java.util.ArrayList; import java.util.LinkedList; @@ -378,6 +381,26 @@ public class MediaFileListFragment extends AbstractListFragment { }, callbackHandler); } + /** + * Starts playing the given media file on the local device + * @param filename Filename to start playing + */ + private void playMediaFileLocally(final String filename) { + FileDownloadHelper.MovieInfo movieDownloadInfo = new FileDownloadHelper.MovieInfo(null, filename); + Uri uri = Uri.parse(movieDownloadInfo.getMediaUrl(hostManager.getHostInfo())); + Intent intent = new Intent(Intent.ACTION_VIEW, uri); + if (mediaType.equalsIgnoreCase(Files.Media.VIDEO)) { + intent.setDataAndType(uri, "video/*"); + } else if (mediaType.equalsIgnoreCase(Files.Media.MUSIC)) { + intent.setDataAndType(uri, "audio/*"); + } else if (mediaType.equalsIgnoreCase(Files.Media.PICTURES)) { + intent.setDataAndType(uri, "image/*"); + } else { + intent.setDataAndType(uri, "application/*"); + } + startActivity(intent); + } + /** * Queues the given media file on the active playlist, and starts it if nothing is playing * @param filename File to queue @@ -524,6 +547,9 @@ public class MediaFileListFragment extends AbstractListFragment { case R.id.action_play_item: playMediaFile(loc.file); return true; + case R.id.action_play_local_item: + playMediaFileLocally(loc.file); + return true; case R.id.action_play_from_this_item: mediaQueueFileLocation.clear(); FileLocation fl; diff --git a/app/src/main/res/menu/filelist_item.xml b/app/src/main/res/menu/filelist_item.xml index 6c864c6..28f7155 100644 --- a/app/src/main/res/menu/filelist_item.xml +++ b/app/src/main/res/menu/filelist_item.xml @@ -24,8 +24,12 @@ android:title="@string/play_file" android:orderInCategory="2" app:showAsAction="never" /> - + \ No newline at end of file