Exemple #1
0
        public async void initial_boot()
        {
            setinitialsettings();
            if (SettingsHelper.HasKey("abrirserver"))
            {
                if (SettingsHelper.GetSetting("abrirserver") == "si")
                {
                    if (serviciostreaming.gettearinstancia() != null)
                    {
                        StopService(new Intent(this, typeof(serviciostreaming)));
                        StartService(new Intent(this, typeof(serviciostreaming)));
                    }
                    else
                    {
                        StartService(new Intent(this, typeof(serviciostreaming)));
                    }
                }
            }
            if (!File.Exists(Constants.CachePath + "/verified"))
            {
                if (MultiHelper.HasInternetConnection())
                {
                    string serial = StringsHelper.GenerateSerial();
                    if (Constants.UseFirebase)
                    {
                        var firebase = new FirebaseClient(Constants.FirebaseSuggestionsUrl);
                        await firebase.Child("Descargas").Child(serial).PutAsync("Descargada@" + Android.OS.Build.Model + "@" + System.DateTime.Now);
                    }
                    var arch = File.CreateText(Constants.CachePath + "/verified");
                    arch.Write(serial);
                    arch.Close();
                }
            }

            checkedpremissions = true;
        }
        public void cargarfavoritos()
        {
            try
            {
                adaptadorcartas adap = new adaptadorcartas(favoritos, this);
                adap.ItemClick += (aa, aaa) =>
                {
                    RunOnUiThread(() =>
                    {
                        var elemento   = favoritos[aaa.Position];
                        Intent intento = new Intent(this, typeof(customdialogact));

                        intento.PutExtra("url", elemento.Link);
                        intento.PutExtra("titulo", elemento.Name);
                        intento.PutExtra("imagen", "http://i.ytimg.com/vi/" + elemento.Link.Split('=')[1] + "/mqdefault.jpg");
                        StartActivity(intento);
                    });
                };
                adap.ItemLongClick += (aa, aaa) =>
                {
                    RunOnUiThread(() =>
                    {
                        var elemento = favoritos[aaa.Position];
                        new Android.App.AlertDialog.Builder(this)
                        .SetTitle("Advertencia")
                        .SetMessage("Desea eliminar este elemento de la lista de favoritos?")
                        .SetPositiveButton("Si", (aax, asd) =>
                        {
                            Diccfavoritos = PlaylistsHelper.AddToFavouriteList(this, Diccfavoritos, elemento);
                            favoritos     = Diccfavoritos.Values.ToList();
                            favoritos.Reverse();
                            cargarfavoritos();
                        })
                        .SetNegativeButton("No", (asdd, ffff) => { })
                        .Create()
                        .Show();
                    });
                };
                RunOnUiThread(() =>
                {
                    listafavoritos.SetAdapter(adap);
                    if (favoritos.Count > 0)
                    {
                        secciones[2].Visibility = ViewStates.Visible;
                        if (!SettingsHelper.HasKey("dialogofavoritos"))
                        {
                            RunOnUiThread(() =>
                            {
                                new Android.Support.V7.App.AlertDialog.Builder(this)
                                .SetTitle("Informacion")
                                .SetMessage("Al dejar presionado un elemento de favoritos usted podra eliminarlo de la lista")
                                .SetCancelable(false)
                                .SetPositiveButton("Entendido", (aa, fddggfd) => { })
                                .Create()
                                .Show();
                                SettingsHelper.SaveSetting("dialogofavoritos", "si");
                            });
                        }
                    }
                    else
                    {
                        secciones[2].Visibility = ViewStates.Gone;
                    }
                });
            }
            catch (Exception)
            {
            }
        }
Exemple #3
0
        public void setinitialsettings()
        {
            try
            {
                if (!SettingsHelper.HasKey("color"))
                {
                    SettingsHelper.SaveSetting("color", "black");
                }
                if (!SettingsHelper.HasKey("mediacache"))
                {
                    SettingsHelper.SaveSetting("mediacache", "");
                }

                if (!SettingsHelper.HasKey("ordenalfabeto"))
                {
                    SettingsHelper.SaveSetting("ordenalfabeto", "si");
                }
                if (!SettingsHelper.HasKey("video"))
                {
                    SettingsHelper.SaveSetting("video", "360");
                }
                if (!SettingsHelper.HasKey("automatica"))
                {
                    SettingsHelper.SaveSetting("automatica", "si");
                }
                if (!SettingsHelper.HasKey("color"))
                {
                    SettingsHelper.SaveSetting("color", "#000000");
                }
                if (!SettingsHelper.HasKey("rutadescarga"))
                {
                    if (!Directory.Exists(Android.OS.Environment.ExternalStorageDirectory.AbsolutePath + "/YTDownloads"))
                    {
                        Directory.CreateDirectory(Android.OS.Environment.ExternalStorageDirectory.AbsolutePath + "/YTDownloads");
                    }

                    SettingsHelper.SaveSetting("rutadescarga", Android.OS.Environment.ExternalStorageDirectory.AbsolutePath + "/YTDownloads");
                }

                if (!Directory.Exists(Android.OS.Environment.ExternalStorageDirectory.AbsolutePath + "/.gr3cache"))
                {
                    Directory.CreateDirectory(Android.OS.Environment.ExternalStorageDirectory.AbsolutePath + "/.gr3cache");
                }

                if (!Directory.Exists(Android.OS.Environment.ExternalStorageDirectory.AbsolutePath + "/.gr3cache/portraits"))
                {
                    Directory.CreateDirectory(Android.OS.Environment.ExternalStorageDirectory.AbsolutePath + "/.gr3cache/portraits");
                }
                if (!Directory.Exists(Android.OS.Environment.ExternalStorageDirectory.AbsolutePath + "/.gr3cache/webbrowser"))
                {
                    Directory.CreateDirectory(Android.OS.Environment.ExternalStorageDirectory.AbsolutePath + "/.gr3cache/webbrowser");
                }

                if (!Directory.Exists(Android.OS.Environment.ExternalStorageDirectory.AbsolutePath + "/gr3playerplaylist"))
                {
                    Directory.CreateDirectory(Android.OS.Environment.ExternalStorageDirectory.AbsolutePath + "/gr3playerplaylist");
                }
            }
            catch (Exception)
            {
            }
        }
        protected override void OnCreate(Bundle savedInstanceState)
        {
            base.OnCreate(savedInstanceState);
            SetContentView(Resource.Layout.actsyncoffline);
            botonescaneo    = FindViewById <Button>(Resource.Id.imageView6);
            qr              = FindViewById <ImageView>(Resource.Id.imageView1);
            enviardisco     = FindViewById <ImageView>(Resource.Id.imageView3);
            listaelementos  = FindViewById <ListView>(Resource.Id.listView1);
            mipuertoarchivo = rondon.Next(1024, 9999);
            mipuertoquerry  = rondon.Next(1024, 9999);
#pragma warning disable CS0618 // El tipo o el miembro están obsoletos
            dialogoprogreso = new ProgressDialog(this);
#pragma warning restore CS0618 // El tipo o el miembro están obsoletos
            dialogoprogreso.SetCanceledOnTouchOutside(false);
            dialogoprogreso.SetCancelable(false);


            textoedicion = FindViewById <Android.Support.V7.Widget.SearchView>(Resource.Id.searchView);
            listaelementos.Visibility = ViewStates.Gone;
            enviardisco.Visibility    = ViewStates.Gone;
            servidorquerry            = new TcpListener(IPAddress.Any, mipuertoquerry);
            servidorquerry.Start();
            miip                          = gettearip();
            servidorftp                   = new Server();
            servidorftp.LocalPort         = mipuertoarchivo;
            servidorftp.LocalAddress      = IPAddress.Parse(miip);
            servidorftp.LogHandler        = new DefaultLogHandler(false);
            servidorftp.AuthHandler       = new DefaultAuthHandler();
            servidorftp.FileSystemHandler = new DefaultFileSystemHandler();
            servidorftp.BufferSize        = 1000000;
            SetSupportActionBar(FindViewById <Android.Support.V7.Widget.Toolbar>(Resource.Id.my_toolbar));
            SupportActionBar.Title = "Sicronización de medios";
            SupportActionBar.SetDisplayHomeAsUpEnabled(true);
            tl            = FindViewById <Android.Support.Design.Widget.TabLayout>(Resource.Id.tabs);
            tl.Visibility = ViewStates.Gone;
            tl.AddTab(tl.NewTab().SetText("Audios"));
            tl.AddTab(tl.NewTab().SetText("Videos"));
            textoedicion.Visibility = ViewStates.Gone;
            var adaptadolo = new ArrayAdapter <string>(this, Android.Resource.Layout.SimpleListItem1, new List <string> {
                "No hay elementos para mostrar.."
            });
            RunOnUiThread(() => {
                var parcelable         = listaelementos.OnSaveInstanceState();
                listaelementos.Adapter = adaptadolo;
                listaelementos.OnRestoreInstanceState(parcelable);
            });
            new Thread(() =>
            {
                servidorftp.Run();
            }).Start();


            if (playeroffline.gettearinstancia().showingvideosresults)
            {
                enviardisco.SetBackgroundResource(Resource.Drawable.musicalnote);
            }
            else
            {
                enviardisco.SetBackgroundResource(Resource.Drawable.videoplayer);
            }

            if (!SettingsHelper.HasKey("notificosync?"))
            {
                SettingsHelper.SaveSetting("notificosync?", "Si");
                new AlertDialog.Builder(this).SetTitle("Como se usa?")
                .SetMessage("Para sincronizar con otro dispositivo uno de los dispositivos debe escanear el código qr de el otro.\n luego le aparecerá un menú con toda la media que usted tenga descargada.\n al tocar un elemento se le enviara a la persona\nNOTA:Si se cierra el menú de sinconización mientras se envía un elemento puede que se cancelen las descargas locales.")
                .SetPositiveButton("Entendido!", (aa, aaa) => { }).Create().Show();
            }


            clientequerry = new TcpClient();


            var adaptadol2 = new adapterlistaoffline(this, playeroffline.gettearinstancia().nombreses.ToList(), playeroffline.gettearinstancia().linkeses, "", playeroffline.gettearinstancia().nombreses, playeroffline.gettearinstancia().diccionario, playeroffline.gettearinstancia().patheses);
            RunOnUiThread(() => listaelementos.Adapter = adaptadol2);
            qr.SetImageBitmap(GetQRCode());



            textoedicion.QueryTextChange += delegate
            {
                adaptadol2 = new adapterlistaoffline(this, playeroffline.gettearinstancia().nombreses.Where(a => a.ToLower().Contains(textoedicion.Query.ToLower())).ToList(), playeroffline.gettearinstancia().linkeses, "", playeroffline.gettearinstancia().nombreses, playeroffline.gettearinstancia().diccionario, playeroffline.gettearinstancia().patheses);

                RunOnUiThread(() => {
                    var parcelable = listaelementos.OnSaveInstanceState();

                    listaelementos.Adapter = adaptadol2;
                    listaelementos.OnRestoreInstanceState(parcelable);
                });
            };

            tl.TabSelected += (aa, sss) =>
            {
                new Thread(() =>
                {
                    if (sss.Tab.Text == "Audios")
                    {
                        playeroffline.gettearinstancia().cargarmp3();
                        selectedtab = "Audios";
                    }
                    else
                    {
                        playeroffline.gettearinstancia().cargarvideos();
                        selectedtab = "Videos";
                    }
                    adaptadol2 = new adapterlistaoffline(this, playeroffline.gettearinstancia().nombreses.ToList(), playeroffline.gettearinstancia().linkeses, "", playeroffline.gettearinstancia().nombreses, playeroffline.gettearinstancia().diccionario, playeroffline.gettearinstancia().patheses);

                    RunOnUiThread(() =>
                    {
                        var parcelable         = listaelementos.OnSaveInstanceState();
                        listaelementos.Adapter = adaptadol2;
                        listaelementos.OnRestoreInstanceState(parcelable);
                    });
                }).Start();
            };
            listaelementos.ItemClick += (aa, aaa) =>
            {
                var vii      = aaa.View.FindViewById <TextView>(Resource.Id.textView1);
                int posicion = playeroffline.gettearinstancia().nombreses.IndexOf(vii.Text);

                new Thread(() =>
                {
                    preguntarsienviarorecibir(true, playeroffline.gettearinstancia().nombreses[posicion], posicion);
                }).Start();
            };
            var sv1 = new Thread(() =>
            {
                servidorhabladera(false);
            });
            sv1.IsBackground = true;
            sv1.Start();

            enviardisco.Click += delegate
            {
                if (playeroffline.gettearinstancia().showingvideosresults)
                {
                    animar2(listaelementos);
                    enviardisco.SetBackgroundResource(Resource.Drawable.videoplayer);
                }
                else
                {
                    animar2(listaelementos);
                    enviardisco.SetBackgroundResource(Resource.Drawable.musicalnote);
                }
            };
            botonescaneo.Click += async delegate
            {
                sv1.Abort();
                ZXing.Mobile.MobileBarcodeScanner.Initialize(Application);
                var scanner = new ZXing.Mobile.MobileBarcodeScanner();

                var resultado = await scanner.Scan();

                if (resultado != null)
                {
                    sv1.Abort();

                    ipdelotro             = resultado.Text.Split('¤')[0];
                    puertoquerrydelotro   = int.Parse(resultado.Text.Split('¤')[1]);
                    puertoarchivosdelotro = int.Parse(resultado.Text.Split('¤')[2]);
                    supath = resultado.Text.Split('¤')[3];
                    pathimagenesdelotro = resultado.Text.Split('¤')[4];
                    clientequerry.Client.Connect(ipdelotro, puertoquerrydelotro);


                    sv1 = new Thread(() =>
                    {
                        servidorhabladera(true);
                    });
                    sv1.IsBackground = true;
                    sv1.Start();
                    listaelementos.Visibility = ViewStates.Visible;
                    botonescaneo.Visibility   = ViewStates.Gone;
                    qr.Visibility             = ViewStates.Gone;
                    textoedicion.Visibility   = ViewStates.Visible;
                    tl.Visibility             = ViewStates.Visible;

                    /*    tl.AddTab(tl.NewTab().SetText("Audios"));
                     *  tl.AddTab(tl.NewTab().SetText("Videos"));*/
                    //  enviardisco.Visibility = ViewStates.Visible;
                    sincronizar();
                }
            };
            // Create your application here
        }
        protected override void OnCreate(Bundle savedInstanceState)
        {
            base.OnCreate(savedInstanceState);

            SetContentView(Resource.Layout.Configuraciones);

            ISharedPreferences       prefs      = Application.Context.GetSharedPreferences("Settings", FileCreationMode.Private);
            ISharedPreferencesEditor prefEditor = prefs.Edit();

            botonseleccionarcarpeta = FindViewById <Button>(Resource.Id.imageView1);
            localizacion            = FindViewById <TextView>(Resource.Id.textView3);
            //   botonguardar = FindViewById<ImageView>(Resource.Id.imageView2);
            var colormuestra = FindViewById <ImageView>(Resource.Id.imageView3);

            colormuestra.SetBackgroundColor(Color.ParseColor(SettingsHelper.GetSetting("color")));
            color            = SettingsHelper.GetSetting("color");
            reprodautomatica = SettingsHelper.GetSetting("automatica");
            var ll1             = FindViewById <LinearLayout>(Resource.Id.linearLayout3);
            var ll2             = FindViewById <LinearLayout>(Resource.Id.linearLayout4);
            var ll3             = FindViewById <LinearLayout>(Resource.Id.linearLayout5);
            var ll4             = FindViewById <LinearLayout>(Resource.Id.linearLayout7);
            var ll5             = FindViewById <LinearLayout>(Resource.Id.linearLayout23);
            var fondo           = FindViewById <ImageView>(Resource.Id.fondo1);
            var toggle1         = FindViewById <Android.Support.V7.Widget.SwitchCompat>(Resource.Id.toggleButton1);
            var toggle2         = FindViewById <Android.Support.V7.Widget.SwitchCompat>(Resource.Id.toggleButton2);
            var automatica      = FindViewById <Android.Support.V7.Widget.SwitchCompat>(Resource.Id.automatico);
            var botonclearcache = FindViewById <LinearLayout>(Resource.Id.linearLayout8);

            calidades = FindViewById <Spinner>(Resource.Id.spinner1);
            var action = FindViewById <Android.Support.V7.Widget.Toolbar>(Resource.Id.my_toolbar);

            //////////////////////////////////////coloreselector mappings

#pragma warning disable CS0618 // El tipo o el miembro están obsoletos
            dialogoprogreso = new ProgressDialog(this);
#pragma warning restore CS0618 // El tipo o el miembro están obsoletos
            ///////////////////////////////////////////////////////////

            ////////////////////////////////////////////////////////////////
            ///
            if (reprodautomatica == "si")
            {
                automatica.Checked = true;
            }
            else
            {
                automatica.Checked = false;
            }


            SetSupportActionBar(action);
            SupportActionBar.Title = "Preferencias";
            SupportActionBar.SetDisplayHomeAsUpEnabled(true);

            var adapter = new  ArrayAdapter(this, Android.Resource.Layout.SimpleSpinnerItem);
            adapter.AddAll(new string[] { "Audio", "360p", "720p" }.ToList());
            adapter.SetDropDownViewResource(Android.Resource.Layout.SimpleSpinnerDropDownItem);
            calidades.Adapter = adapter;

            color   = SettingsHelper.GetSetting("color");
            calidad = int.Parse(SettingsHelper.GetSetting("video"));
            switch (calidad)
            {
            case -1:
                calidades.SetSelection(0);
                break;

            case 360:
                calidades.SetSelection(1);
                break;

            case 720:
                calidades.SetSelection(2);
                break;
            }

            if (SettingsHelper.HasKey("abrirserver"))
            {
                abrirserver = SettingsHelper.GetSetting("abrirserver");
            }
            if (abrirserver == "no")
            {
                toggle2.Checked = false;
            }
            else
            {
                toggle2.Checked = true;
            }


            if (SettingsHelper.HasKey("ordenalfabeto"))
            {
                ordenalfabeto = SettingsHelper.GetSetting("ordenalfabeto");

                if (ordenalfabeto == "si")
                {
                    toggle1.Checked = true;
                }
                else
                {
                    toggle1.Checked = false;
                }
            }

            if (SettingsHelper.HasKey("rutadescarga"))
            {
                klk = prefs.GetString("rutadescarga", null);
            }
            else
            {
                if (Directory.Exists(Android.OS.Environment.ExternalStorageDirectory.AbsolutePath + "/YTDownloads"))
                {
                    klk = Android.OS.Environment.ExternalStorageDirectory.AbsolutePath + "/YTDownloads";
                    prefEditor.PutString("rutadescarga", klk);
                    prefEditor.Commit();
                }
                else
                {
                    Directory.CreateDirectory(Android.OS.Environment.ExternalStorageDirectory.AbsolutePath + "/YTDownloads");
                    klk = Android.OS.Environment.ExternalStorageDirectory.AbsolutePath + "/YTDownloads";
                    prefEditor.PutString("rutadescarga", klk);
                    prefEditor.Commit();
                }
            }

            localizacion.Text = klk;

            fondo.SetImageBitmap(CreateBlurredImageoffline(this, 20, 0));
            ////////////////////////////////clicks////////////////////////////

            calidades.ItemSelected += (axx, ssd) => {
                switch (ssd.Position)
                {
                case 0:
                    calidad = -1;
                    break;

                case 1:
                    calidad = 360;
                    break;

                case 2:
                    calidad = 720;
                    break;
                }
            };
            automatica.Click += delegate
            {
                if (automatica.Checked)
                {
                    reprodautomatica = "si";
                    Toast.MakeText(this, "Si no hay mas elementos en cola se reproducira el primer elemento de las sugerencias", ToastLength.Long).Show();
                }
                else
                {
                    reprodautomatica = "no";
                    Toast.MakeText(this, "Si no hay mas elementos en cola no se ejecutara ninguna accion", ToastLength.Long).Show();
                }
            };
            toggle2.Click += delegate
            {
                if (toggle2.Checked)
                {
                    new Thread(() =>
                    {
                        if (PlaylistsHelper.HasMediaElements)
                        {
                            if (File.Exists(Android.OS.Environment.ExternalStorageDirectory.AbsolutePath + "/.gr3cache/version.gr3v"))
                            {
                                abrirserver = "si";

                                StartService(new Intent(this, typeof(serviciostreaming)));
                            }
                            else

                            {
                                AlertDialog dialogo = null;
                                RunOnUiThread(() => {
                                    var progresox           = new ProgressBar(this);
                                    progresox.Indeterminate = true;

                                    dialogo = new AlertDialog.Builder(this)
                                              .SetTitle("Buscando actualizaciones")
                                              .SetMessage("Por favor espere...")
                                              .SetCancelable(false)
                                              .SetView(progresox)
                                              .Show();
                                });
                                if (CheckInternetConnection())
                                {
                                    abrirserver        = "si";
                                    AlertDialog alerta = null;
                                    RunOnUiThread(() =>
                                    {
                                        dialogo.Dismiss();
                                        var progreso           = new ProgressBar(this);
                                        progreso.Indeterminate = true;

                                        alerta = new AlertDialog.Builder(this)
                                                 .SetTitle("Descargando archivos necesarios")
                                                 .SetMessage("Por favor espere...")
                                                 .SetCancelable(false)
                                                 .SetView(progreso)
                                                 .Show();
                                    });
                                    new Thread(() =>
                                    {
                                        WebClient cliente = new WebClient();
                                        var version       = cliente.DownloadString("https://raw.githubusercontent.com/Gr3gorywolf/Multitube.android/master/Updates/version.gr3v");
                                        using (var file = File.CreateText(Android.OS.Environment.ExternalStorageDirectory.AbsolutePath + "/.gr3cache/version.gr3v")) {
                                            file.Write(version);
                                            file.Close();
                                        }
                                        MultitubeWebHelper.UpdateMultitubeWeb(version);
                                        RunOnUiThread(() =>
                                        {
                                            alerta.Dismiss();
                                            StartService(new Intent(this, typeof(serviciostreaming)));
                                            new AlertDialog.Builder(this)
                                            .SetTitle("Informacion")
                                            .SetMessage("El servidor de streaming le permitirara reproducir su contenido previamente descargado desde cualquier navegador de cualquier dispositivo conectado a su misma red. Puede consultar el estado de este en la barra de notificaciones")
                                            .SetPositiveButton("Entendido!", (aa, fff) => { })
                                            .Create()
                                            .Show();
                                        });
                                    }).Start();
                                }
                                else
                                {
                                    RunOnUiThread(() =>
                                    {
                                        dialogo.Dismiss();
                                        Toast.MakeText(this, "Debe tener una conexion a internet para abrir el servicio por primera vez", ToastLength.Long).Show();
                                        toggle2.Checked = false;
                                    });
                                }
                            }
                        }
                        else
                        {
                            RunOnUiThread(() =>
                            {
                                toggle2.Checked = false;
                                Toast.MakeText(this, "Debe tener almenos 1 elemento descargado", ToastLength.Long).Show();
                            });
                        }
                    }).Start();
                }
                else
                {
                    if (serviciostreaming.gettearinstancia() != null)
                    {
                        StopService(new Intent(this, typeof(serviciostreaming)));
                    }
                    toggle2.Checked = false;
                    abrirserver     = "no";
                }
            };
            botonclearcache.Click += delegate
            {
                AlertDialog.Builder ad = new AlertDialog.Builder(this);
                ad.SetCancelable(false);
                ad.SetTitle("Advertencia");
                ad.SetIcon(Resource.Drawable.alert);
                ad.SetMessage("Limpiar el cache puede provocar cierta realentizacion a la hora de entrar al reproductor offline y tambien volvera a descargar los datos por lo cual necesitara internet ¿¿quiere borrar cache??");
                ad.SetNegativeButton("No", no);
                ad.SetPositiveButton("Si", si);
                ad.Create();
                ad.Show();
            };
            toggle1.Click += delegate
            {
                if (toggle1.Checked == true)
                {
                    ordenalfabeto = "si";
                    Toast.MakeText(this, "Los elementos se organizaran alfabeticamente", ToastLength.Long).Show();
                }
                else
                {
                    ordenalfabeto = "no";
                    Toast.MakeText(this, "Los elementos se por fecha de descarga", ToastLength.Long).Show();
                }
            };
            botonseleccionarcarpeta.Click += async delegate
            {
                SimpleFileDialog sfd = new SimpleFileDialog(this, SimpleFileDialog.FileSelectionMode.FolderChooseRoot);
                klk = await sfd.GetFileOrDirectoryAsync(Android.OS.Environment.ExternalStorageDirectory.AbsolutePath);

                if (probarpath(klk))
                {
                    pathvalido = true;

                    localizacion.Text = klk;
                }
                else
                {
                    Toast.MakeText(this, "Ruta invalida seleccione otra", ToastLength.Short).Show();
                    klk        = localizacion.Text;
                    pathvalido = false;
                }
            };
        }
        public void reproducir(string downloadurl, bool desdecache)
        {
            // musicaplayer.SetDataSource(downloadurl);
            if (playeroffline.gettearinstancia() != null)
            {
                try
                {
                    musicaplayer.Release();


                    musicaplayer = new MediaPlayer();

#pragma warning disable 414
                    if (Android.OS.Build.VERSION.SdkInt >= BuildVersionCodes.N)
                    {
                        musicaplayer.SetAudioAttributes(new AudioAttributes.Builder()
                                                        .SetUsage(AudioUsageKind.Media)
                                                        .SetContentType(AudioContentType.Music)
                                                        .Build());
                    }
                    else
                    {
#pragma warning disable CS0618 // El tipo o el miembro están obsoletos
                        musicaplayer.SetAudioStreamType(Android.Media.Stream.Music);
#pragma warning restore CS0618 // El tipo o el miembro están obsoletos
                    }

#pragma warning restore 414
                    musicaplayer.SetWakeMode(this, WakeLockFlags.Partial);
#pragma warning disable 414
#pragma warning disable CS0618 // El tipo o el miembro están obsoletos
                    var focusResult = audioManager.RequestAudioFocus(this, Stream.Music, AudioFocus.Gain);
#pragma warning restore CS0618 // El tipo o el miembro están obsoletos
#pragma warning restore 414
                    if (focusResult != AudioFocusRequest.Granted)
                    {
                        //could not get audio focus
                        Console.WriteLine("Could not get audio focus");
                    }


                    musicaplayer.Prepared += delegate
                    {
                        musicaplayer.Start();
                        if (this.desdecache)
                        {
                            musicaplayer.Pause();
                        }
                        if (playeroffline.gettearinstancia() != null)
                        {
                            if (playeroffline.gettearinstancia().video.Visibility == ViewStates.Visible)
                            {
                                musicaplayer.SetDisplay(null);
                                musicaplayer.SetDisplay(playeroffline.gettearinstancia().holder);
                            }

                            if (SettingsHelper.HasKey("posactual") && this.desdecache)
                            {
                                var posicion = 0;
                                try
                                {
                                    posicion = int.Parse(SettingsHelper.GetSetting("posactual"));
                                    musicaplayer.SeekTo(posicion);
                                }
                                catch (Exception) { }
                            }
                        }
                    };
                    musicaplayer.Completion += delegate
                    {
                        playeroffline.gettearinstancia().RunOnUiThread(() =>
                        {
                            playeroffline.gettearinstancia().RunOnUiThread(() =>
                            {
                                playeroffline.gettearinstancia().siguiente.PerformClick();
                            });
                        });
                    };

                    musicaplayer.SetDataSource(this, Android.Net.Uri.Parse(downloadurl.Trim()));
                    mostrarnotificacion();
                    musicaplayer.PrepareAsync();
                }
                catch (Exception)
                {
                    //if()

                    playeroffline.gettearinstancia().RunOnUiThread(() =>
                    {
                        Toast.MakeText(playeroffline.gettearinstancia(), "Error al reproducir", ToastLength.Long).Show();
                    });
                }
            }
            else
            {
                musicaplayer.Reset();
                StopSelf();
            }
        }