Search in sources :

Example 36 with MediaWrapper

use of org.videolan.medialibrary.media.MediaWrapper in project vlc-android by videolan.

the class MainTvActivity method updateHistory.

@MainThread
private synchronized void updateHistory(MediaWrapper[] history) {
    if (history == null || mRowsAdapter == null)
        return;
    final boolean createAdapter = mHistoryAdapter == null;
    if (createAdapter)
        mHistoryAdapter = new ArrayObjectAdapter(new CardPresenter(mContext));
    else
        mHistoryAdapter.clear();
    if (!mSettings.getBoolean(PreferencesFragment.PLAYBACK_HISTORY, true))
        return;
    for (int i = 0; i < history.length; ++i) {
        final MediaWrapper item = history[i];
        mHistoryAdapter.add(item);
        mHistoryIndex.put(item.getLocation(), i);
    }
    if (createAdapter) {
        final HeaderItem historyHeader = new HeaderItem(HEADER_HISTORY, getString(R.string.history));
        mRowsAdapter.add(Math.min(2, mRowsAdapter.size()), new ListRow(historyHeader, mHistoryAdapter));
    }
}
Also used : MediaWrapper(org.videolan.medialibrary.media.MediaWrapper) ArrayObjectAdapter(android.support.v17.leanback.widget.ArrayObjectAdapter) HeaderItem(android.support.v17.leanback.widget.HeaderItem) ListRow(android.support.v17.leanback.widget.ListRow) MainThread(android.support.annotation.MainThread)

Example 37 with MediaWrapper

use of org.videolan.medialibrary.media.MediaWrapper in project vlc-android by videolan.

the class MediaItemDetailsFragment method buildDetails.

private void buildDetails() {
    Bundle extras = getActivity().getIntent().getExtras();
    mMedia = extras.getParcelable("item");
    boolean hasMedia = extras.containsKey("media");
    ClassPresenterSelector selector = new ClassPresenterSelector();
    final MediaWrapper media = hasMedia ? (MediaWrapper) extras.getParcelable("media") : new MediaWrapper(AndroidUtil.LocationToUri(mMedia.getLocation()));
    if (!hasMedia) {
        media.setDisplayTitle(mMedia.getTitle());
    }
    mMediaWrapper = media;
    setTitle(media.getTitle());
    final List<MediaWrapper> mediaList = (List<MediaWrapper>) VLCApplication.getData(SortedBrowserFragment.CURRENT_BROWSER_LIST);
    // Attach your media item details presenter to the row presenter:
    FullWidthDetailsOverviewRowPresenter rowPresenter = new FullWidthDetailsOverviewRowPresenter(new DetailsDescriptionPresenter());
    final Activity activity = getActivity();
    final DetailsOverviewRow detailsOverview = new DetailsOverviewRow(mMedia);
    final Action actionAdd = new Action(ID_FAVORITE_ADD, getString(R.string.favorites_add));
    final Action actionDelete = new Action(ID_FAVORITE_DELETE, getString(R.string.favorites_remove));
    rowPresenter.setBackgroundColor(ContextCompat.getColor(activity, R.color.orange500));
    rowPresenter.setOnActionClickedListener(new OnActionClickedListener() {

        @Override
        public void onActionClicked(Action action) {
            switch((int) action.getId()) {
                case ID_LISTEN:
                    PlaybackServiceFragment.registerPlaybackService(MediaItemDetailsFragment.this, MediaItemDetailsFragment.this);
                    break;
                case ID_PLAY:
                    TvUtil.playMedia(getActivity(), media);
                    getActivity().finish();
                    break;
                case ID_FAVORITE_ADD:
                    mDb.addNetworkFavItem(Uri.parse(mMedia.getLocation()), mMedia.getTitle(), mMedia.getArtworkUrl());
                    detailsOverview.removeAction(actionAdd);
                    detailsOverview.addAction(actionDelete);
                    mRowsAdapter.notifyArrayItemRangeChanged(0, mRowsAdapter.size());
                    Toast.makeText(VLCApplication.getAppContext(), R.string.favorite_added, Toast.LENGTH_SHORT).show();
                    break;
                case ID_FAVORITE_DELETE:
                    mDb.deleteNetworkFav(Uri.parse(mMedia.getLocation()));
                    detailsOverview.removeAction(actionDelete);
                    detailsOverview.addAction(actionAdd);
                    mRowsAdapter.notifyArrayItemRangeChanged(0, mRowsAdapter.size());
                    Toast.makeText(VLCApplication.getAppContext(), R.string.favorite_removed, Toast.LENGTH_SHORT).show();
                    break;
                case ID_BROWSE:
                    TvUtil.openMedia(getActivity(), media, null);
                    break;
                case ID_DL_SUBS:
                    MediaUtils.getSubs(getActivity(), media);
                    break;
                case ID_PLAY_ALL:
                    if (mediaList != null) {
                        int position = -1;
                        for (int i = 0; i < mediaList.size(); ++i) if (media.equals(mediaList.get(i)))
                            position = i;
                        Activity activity = getActivity();
                        MediaUtils.openList(activity, mediaList, position);
                        if (media.getType() == MediaWrapper.TYPE_AUDIO)
                            getActivity().startActivity(new Intent(activity, AudioPlayerActivity.class));
                        getActivity().finish();
                    }
                    break;
                case ID_PLAY_FROM_START:
                    VideoPlayerActivity.start(getActivity(), media.getUri(), true);
                    getActivity().finish();
                    break;
            }
        }
    });
    selector.addClassPresenter(DetailsOverviewRow.class, rowPresenter);
    selector.addClassPresenter(ListRow.class, new ListRowPresenter());
    mRowsAdapter = new ArrayObjectAdapter(selector);
    VLCApplication.runBackground(new Runnable() {

        @Override
        public void run() {
            final Bitmap cover = media.getType() == MediaWrapper.TYPE_AUDIO || media.getType() == MediaWrapper.TYPE_VIDEO ? AudioUtil.readCoverBitmap(mMedia.getArtworkUrl(), 512) : null;
            VLCApplication.runOnMainThread(new Runnable() {

                @Override
                public void run() {
                    if (isDetached())
                        return;
                    if (media.getType() == MediaWrapper.TYPE_DIR && FileUtils.canSave(media)) {
                        mDb = MediaDatabase.getInstance();
                        detailsOverview.setImageDrawable(ContextCompat.getDrawable(activity, TextUtils.equals(media.getUri().getScheme(), "file") ? R.drawable.ic_menu_folder_big : R.drawable.ic_menu_network_big));
                        detailsOverview.setImageScaleUpAllowed(true);
                        detailsOverview.addAction(new Action(ID_BROWSE, getString(R.string.browse_folder)));
                        if (mDb.networkFavExists(Uri.parse(mMedia.getLocation())))
                            detailsOverview.addAction(actionDelete);
                        else
                            detailsOverview.addAction(actionAdd);
                    } else if (media.getType() == MediaWrapper.TYPE_AUDIO) {
                        // Add images and action buttons to the details view
                        if (cover == null)
                            detailsOverview.setImageDrawable(ContextCompat.getDrawable(activity, R.drawable.ic_default_cone));
                        else
                            detailsOverview.setImageBitmap(getActivity(), cover);
                        detailsOverview.addAction(new Action(ID_PLAY, getString(R.string.play)));
                        detailsOverview.addAction(new Action(ID_LISTEN, getString(R.string.listen)));
                        if (mediaList != null && mediaList.contains(media))
                            detailsOverview.addAction(new Action(ID_PLAY_ALL, getString(R.string.play_all)));
                    } else if (media.getType() == MediaWrapper.TYPE_VIDEO) {
                        // Add images and action buttons to the details view
                        if (cover == null)
                            detailsOverview.setImageDrawable(ContextCompat.getDrawable(activity, R.drawable.ic_default_cone));
                        else
                            detailsOverview.setImageBitmap(getActivity(), cover);
                        detailsOverview.addAction(new Action(ID_PLAY, getString(R.string.play)));
                        detailsOverview.addAction(new Action(ID_PLAY_FROM_START, getString(R.string.play_from_start)));
                        if (FileUtils.canWrite(media.getUri()))
                            detailsOverview.addAction(new Action(ID_DL_SUBS, getString(R.string.download_subtitles)));
                        if (mediaList != null && mediaList.contains(media))
                            detailsOverview.addAction(new Action(ID_PLAY_ALL, getString(R.string.play_all)));
                    }
                    mRowsAdapter.add(detailsOverview);
                    setAdapter(mRowsAdapter);
                    if (cover != null)
                        mBackgroundManager.setBitmap(cover);
                }
            });
        }
    });
}
Also used : MediaWrapper(org.videolan.medialibrary.media.MediaWrapper) FullWidthDetailsOverviewRowPresenter(android.support.v17.leanback.widget.FullWidthDetailsOverviewRowPresenter) Action(android.support.v17.leanback.widget.Action) Bundle(android.os.Bundle) OnActionClickedListener(android.support.v17.leanback.widget.OnActionClickedListener) VideoPlayerActivity(org.videolan.vlc.gui.video.VideoPlayerActivity) AudioPlayerActivity(org.videolan.vlc.gui.tv.audioplayer.AudioPlayerActivity) Activity(android.app.Activity) Intent(android.content.Intent) ArrayObjectAdapter(android.support.v17.leanback.widget.ArrayObjectAdapter) ClassPresenterSelector(android.support.v17.leanback.widget.ClassPresenterSelector) DetailsOverviewRow(android.support.v17.leanback.widget.DetailsOverviewRow) Bitmap(android.graphics.Bitmap) ListRowPresenter(android.support.v17.leanback.widget.ListRowPresenter) List(java.util.List) AudioPlayerActivity(org.videolan.vlc.gui.tv.audioplayer.AudioPlayerActivity)

Example 38 with MediaWrapper

use of org.videolan.medialibrary.media.MediaWrapper in project vlc-android by videolan.

the class MRLPanelFragment method processUri.

private boolean processUri() {
    if (mEditText.getEditText() != null && !TextUtils.isEmpty(mEditText.getEditText().getText())) {
        final MediaWrapper mw = new MediaWrapper(Uri.parse(mEditText.getEditText().getText().toString().trim()));
        playMedia(mw);
        mEditText.getEditText().getText().clear();
        return true;
    }
    return false;
}
Also used : MediaWrapper(org.videolan.medialibrary.media.MediaWrapper)

Example 39 with MediaWrapper

use of org.videolan.medialibrary.media.MediaWrapper in project vlc-android by videolan.

the class UiTools method setOnDragListener.

public static void setOnDragListener(final Activity activity) {
    final View view = AndroidUtil.isNougatOrLater ? activity.getWindow().peekDecorView() : null;
    if (view != null)
        view.setOnDragListener(new View.OnDragListener() {

            @Override
            public boolean onDrag(View v, DragEvent event) {
                switch(event.getAction()) {
                    case DragEvent.ACTION_DRAG_STARTED:
                        return true;
                    case DragEvent.ACTION_DROP:
                        final ClipData clipData = event.getClipData();
                        if (clipData == null)
                            return false;
                        final int itemsCount = clipData.getItemCount();
                        for (int i = 0; i < itemsCount; i++) {
                            final DragAndDropPermissions permissions = activity.requestDragAndDropPermissions(event);
                            if (permissions != null) {
                                final ClipData.Item item = clipData.getItemAt(i);
                                if (item.getUri() != null)
                                    MediaUtils.openUri(activity, item.getUri());
                                else if (item.getText() != null) {
                                    final Uri uri = Uri.parse(item.getText().toString());
                                    final MediaWrapper media = new MediaWrapper(uri);
                                    if (!"file".equals(uri.getScheme()))
                                        media.setType(MediaWrapper.TYPE_STREAM);
                                    MediaUtils.openMedia(activity, media);
                                }
                                return true;
                            }
                        }
                        return false;
                    default:
                        return false;
                }
            }
        });
}
Also used : DragEvent(android.view.DragEvent) MediaWrapper(org.videolan.medialibrary.media.MediaWrapper) DragAndDropPermissions(android.view.DragAndDropPermissions) ImageView(android.widget.ImageView) View(android.view.View) TextView(android.widget.TextView) ClipData(android.content.ClipData) Uri(android.net.Uri)

Example 40 with MediaWrapper

use of org.videolan.medialibrary.media.MediaWrapper in project vlc-android by GeoffreyMetais.

the class AudioAlbumsSongsFragment method onClick.

@Override
public void onClick(View v, int position, MediaLibraryItem item) {
    if (mActionMode != null) {
        super.onClick(v, position, item);
        return;
    }
    if (item instanceof Album) {
        final Intent i = new Intent(getActivity(), PlaylistActivity.class);
        i.putExtra(AudioBrowserFragment.TAG_ITEM, item);
        startActivity(i);
    } else
        MediaUtils.openMedia(v.getContext(), (MediaWrapper) item);
}
Also used : MediaWrapper(org.videolan.medialibrary.media.MediaWrapper) Album(org.videolan.medialibrary.media.Album) Intent(android.content.Intent)

Aggregations

MediaWrapper (org.videolan.medialibrary.media.MediaWrapper)157 ArrayList (java.util.ArrayList)36 MediaLibraryItem (org.videolan.medialibrary.media.MediaLibraryItem)23 Bitmap (android.graphics.Bitmap)18 Intent (android.content.Intent)16 Uri (android.net.Uri)15 List (java.util.List)11 Bundle (android.os.Bundle)10 Context (android.content.Context)9 MediaGroup (org.videolan.vlc.media.MediaGroup)9 PendingIntent (android.app.PendingIntent)8 View (android.view.View)8 TargetApi (android.annotation.TargetApi)6 Cursor (android.database.Cursor)6 FragmentManager (android.support.v4.app.FragmentManager)6 File (java.io.File)6 LinkedList (java.util.LinkedList)6 Medialibrary (org.videolan.medialibrary.Medialibrary)6 SavePlaylistDialog (org.videolan.vlc.gui.dialogs.SavePlaylistDialog)6 SharedPreferences (android.content.SharedPreferences)5