Search in sources :

Example 1 with DownloadDialog

use of org.schabi.newpipe.download.DownloadDialog in project NewPipe by TeamNewPipe.

the class VideoItemDetailFragment method setupActionBarHandler.

private void setupActionBarHandler(final StreamInfo info) {
    actionBarHandler.setupStreamList(info.video_streams);
    actionBarHandler.setOnShareListener(new ActionBarHandler.OnActionListener() {

        @Override
        public void onActionSelected(int selectedStreamId) {
            Intent intent = new Intent();
            intent.setAction(Intent.ACTION_SEND);
            intent.putExtra(Intent.EXTRA_TEXT, info.webpage_url);
            intent.setType("text/plain");
            activity.startActivity(Intent.createChooser(intent, activity.getString(R.string.share_dialog_title)));
        }
    });
    actionBarHandler.setOnOpenInBrowserListener(new ActionBarHandler.OnActionListener() {

        @Override
        public void onActionSelected(int selectedStreamId) {
            Intent intent = new Intent();
            intent.setAction(Intent.ACTION_VIEW);
            intent.setData(Uri.parse(info.webpage_url));
            activity.startActivity(Intent.createChooser(intent, activity.getString(R.string.choose_browser)));
        }
    });
    actionBarHandler.setOnOpenInPopupListener(new ActionBarHandler.OnActionListener() {

        @Override
        public void onActionSelected(int selectedStreamId) {
            if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M && !PermissionHelper.checkSystemAlertWindowPermission(activity)) {
                Toast.makeText(activity, R.string.msg_popup_permission, Toast.LENGTH_LONG).show();
                return;
            }
            if (streamThumbnail != null)
                ActivityCommunicator.getCommunicator().backgroundPlayerThumbnail = streamThumbnail;
            VideoStream selectedVideoStream = info.video_streams.get(selectedStreamId);
            Intent i = new Intent(activity, PopupVideoPlayer.class);
            Toast.makeText(activity, "Starting in popup mode", Toast.LENGTH_SHORT).show();
            i.putExtra(PopupVideoPlayer.VIDEO_TITLE, info.title).putExtra(PopupVideoPlayer.STREAM_URL, selectedVideoStream.url).putExtra(PopupVideoPlayer.CHANNEL_NAME, info.uploader).putExtra(PopupVideoPlayer.VIDEO_URL, info.webpage_url);
            activity.startService(i);
        }
    });
    actionBarHandler.setOnPlayWithKodiListener(new ActionBarHandler.OnActionListener() {

        @Override
        public void onActionSelected(int selectedStreamId) {
            try {
                Intent intent = new Intent(Intent.ACTION_VIEW);
                intent.setPackage(KORE_PACKET);
                intent.setData(Uri.parse(info.webpage_url.replace("https", "http")));
                activity.startActivity(intent);
            } catch (Exception e) {
                e.printStackTrace();
                AlertDialog.Builder builder = new AlertDialog.Builder(activity);
                builder.setMessage(R.string.kore_not_found).setPositiveButton(R.string.install, new DialogInterface.OnClickListener() {

                    @Override
                    public void onClick(DialogInterface dialog, int which) {
                        Intent intent = new Intent();
                        intent.setAction(Intent.ACTION_VIEW);
                        intent.setData(Uri.parse(activity.getString(R.string.fdroid_kore_url)));
                        activity.startActivity(intent);
                    }
                }).setNegativeButton(R.string.cancel, new DialogInterface.OnClickListener() {

                    @Override
                    public void onClick(DialogInterface dialog, int which) {
                    }
                });
                builder.create().show();
            }
        }
    });
    actionBarHandler.setOnDownloadListener(new ActionBarHandler.OnActionListener() {

        @Override
        public void onActionSelected(int selectedStreamId) {
            if (!PermissionHelper.checkStoragePermissions(getActivity())) {
                return;
            }
            try {
                Bundle args = new Bundle();
                if (info.audio_streams != null) {
                    AudioStream audioStream = info.audio_streams.get(getPreferredAudioStreamId(info));
                    String audioSuffix = "." + MediaFormat.getSuffixById(audioStream.format);
                    args.putString(DownloadDialog.AUDIO_URL, audioStream.url);
                    args.putString(DownloadDialog.FILE_SUFFIX_AUDIO, audioSuffix);
                }
                if (info.video_streams != null) {
                    VideoStream selectedStreamItem = info.video_streams.get(selectedStreamId);
                    String videoSuffix = "." + MediaFormat.getSuffixById(selectedStreamItem.format);
                    args.putString(DownloadDialog.FILE_SUFFIX_VIDEO, videoSuffix);
                    args.putString(DownloadDialog.VIDEO_URL, selectedStreamItem.url);
                }
                args.putString(DownloadDialog.TITLE, info.title);
                DownloadDialog downloadDialog = DownloadDialog.newInstance(args);
                downloadDialog.show(activity.getSupportFragmentManager(), "downloadDialog");
            } catch (Exception e) {
                Toast.makeText(VideoItemDetailFragment.this.getActivity(), R.string.could_not_setup_download_menu, Toast.LENGTH_LONG).show();
                e.printStackTrace();
            }
        }
    });
    if (info.audio_streams == null) {
        actionBarHandler.showAudioAction(false);
    } else {
        actionBarHandler.setOnPlayAudioListener(new ActionBarHandler.OnActionListener() {

            @Override
            public void onActionSelected(int selectedStreamId) {
                boolean useExternalAudioPlayer = PreferenceManager.getDefaultSharedPreferences(activity).getBoolean(activity.getString(R.string.use_external_audio_player_key), false);
                Intent intent;
                AudioStream audioStream = info.audio_streams.get(getPreferredAudioStreamId(info));
                if (!useExternalAudioPlayer && android.os.Build.VERSION.SDK_INT >= 18) {
                    //internal music player: explicit intent
                    if (!BackgroundPlayer.isRunning && streamThumbnail != null) {
                        ActivityCommunicator.getCommunicator().backgroundPlayerThumbnail = streamThumbnail;
                        intent = new Intent(activity, BackgroundPlayer.class);
                        intent.setAction(Intent.ACTION_VIEW);
                        Log.i(TAG, "audioStream is null:" + (audioStream == null));
                        Log.i(TAG, "audioStream.url is null:" + (audioStream.url == null));
                        intent.setDataAndType(Uri.parse(audioStream.url), MediaFormat.getMimeById(audioStream.format));
                        intent.putExtra(BackgroundPlayer.TITLE, info.title);
                        intent.putExtra(BackgroundPlayer.WEB_URL, info.webpage_url);
                        intent.putExtra(BackgroundPlayer.SERVICE_ID, streamingServiceId);
                        intent.putExtra(BackgroundPlayer.CHANNEL_NAME, info.uploader);
                        activity.startService(intent);
                    }
                } else {
                    intent = new Intent();
                    try {
                        intent.setAction(Intent.ACTION_VIEW);
                        intent.setDataAndType(Uri.parse(audioStream.url), MediaFormat.getMimeById(audioStream.format));
                        intent.putExtra(Intent.EXTRA_TITLE, info.title);
                        intent.putExtra("title", info.title);
                        // HERE !!!
                        activity.startActivity(intent);
                    } catch (Exception e) {
                        e.printStackTrace();
                        AlertDialog.Builder builder = new AlertDialog.Builder(activity);
                        builder.setMessage(R.string.no_player_found).setPositiveButton(R.string.install, new DialogInterface.OnClickListener() {

                            @Override
                            public void onClick(DialogInterface dialog, int which) {
                                Intent intent = new Intent();
                                intent.setAction(Intent.ACTION_VIEW);
                                intent.setData(Uri.parse(activity.getString(R.string.fdroid_vlc_url)));
                                activity.startActivity(intent);
                            }
                        }).setNegativeButton(R.string.cancel, new DialogInterface.OnClickListener() {

                            @Override
                            public void onClick(DialogInterface dialog, int which) {
                                Log.i(TAG, "You unlocked a secret unicorn.");
                            }
                        });
                        builder.create().show();
                        Log.e(TAG, "Either no Streaming player for audio was installed, or something important crashed:");
                        e.printStackTrace();
                    }
                }
            }
        });
    }
}
Also used : AlertDialog(android.support.v7.app.AlertDialog) DialogInterface(android.content.DialogInterface) Bundle(android.os.Bundle) PopupVideoPlayer(org.schabi.newpipe.player.PopupVideoPlayer) InfoItemBuilder(org.schabi.newpipe.info_list.InfoItemBuilder) VideoStream(org.schabi.newpipe.extractor.stream_info.VideoStream) DownloadDialog(org.schabi.newpipe.download.DownloadDialog) Intent(android.content.Intent) Point(android.graphics.Point) AudioStream(org.schabi.newpipe.extractor.stream_info.AudioStream)

Aggregations

DialogInterface (android.content.DialogInterface)1 Intent (android.content.Intent)1 Point (android.graphics.Point)1 Bundle (android.os.Bundle)1 AlertDialog (android.support.v7.app.AlertDialog)1 DownloadDialog (org.schabi.newpipe.download.DownloadDialog)1 AudioStream (org.schabi.newpipe.extractor.stream_info.AudioStream)1 VideoStream (org.schabi.newpipe.extractor.stream_info.VideoStream)1 InfoItemBuilder (org.schabi.newpipe.info_list.InfoItemBuilder)1 PopupVideoPlayer (org.schabi.newpipe.player.PopupVideoPlayer)1