Exemple #1
0
    private static void LibrariesHandlerAndroid(PlayerOptionsAndroid.PlayerTypes playerType)
    {
        var librariesPath = UMPSettings.PlatformLibraryPath(UMPSettings.Platforms.Android, false);

        List <string> libs = new List <string>();

        libs.AddRange(Directory.GetFiles(librariesPath + "libs/armeabi-v7a"));
        libs.AddRange(Directory.GetFiles(librariesPath + "libs/x86"));

        var includeLibVLC = (playerType & PlayerOptionsAndroid.PlayerTypes.LibVLC) == PlayerOptionsAndroid.PlayerTypes.LibVLC;

        foreach (var lib in libs)
        {
            if (lib.Contains(".meta") && !lib.Contains("libUniversalMediaPlayer"))
            {
                File.SetAttributes(lib, FileAttributes.Normal);
                string metaData = File.ReadAllText(lib);
                var    match    = Regex.Match(metaData, @"Android.*\s*enabled:.");

                if (match.Success)
                {
                    metaData = Regex.Replace(metaData, @"Android.*\s*enabled:." + (!includeLibVLC ? 1 : 0), match.Value + (includeLibVLC ? 1 : 0));
                    File.WriteAllText(lib, metaData);
                }
            }
        }
        libs.Clear();

        var librariesNames = Enum.GetNames(typeof(PlayerOptionsAndroid.PlayerTypes));

        libs.AddRange(Directory.GetFiles(librariesPath));

        for (int i = 0; i < librariesNames.Length; i++)
        {
            var libraryPath = librariesPath + "Player" + librariesNames[i] + " ";
            var type        = (PlayerOptionsAndroid.PlayerTypes)((i * 2) + (i == 0 ? 1 : 0));
            var isEnable    = (playerType & type) == type;

            File.SetAttributes(libraryPath, FileAttributes.Normal);
            string metaData = File.ReadAllText(libraryPath);
            var    match    = Regex.Match(metaData, @"Android.*\s*enabled:.");

            if (match.Success)
            {
                metaData = Regex.Replace(metaData, @"Android.*\s*enabled:." + (!isEnable ? 1 : 0), match.Value + (isEnable ? 1 : 0));
                File.WriteAllText(libraryPath, metaData);
            }
        }
        libs.Clear();
    }
Exemple #2
0
    private static void LibrariesHandler(UMPSettings.Platforms platform, Enum playerType)
    {
        if (!(playerType is PlayerOptionsAndroid.PlayerTypes) &&
            !(playerType is PlayerOptionsIPhone.PlayerTypes))
        {
            throw new ArgumentException("Enum must be one of this enumerated type: 'PlayerOptionsAndroid.PlayerTypes' or 'PlayerOptionsAndroid.PlayerTypes'");
        }

        var libPath      = UMPSettings.PlatformLibraryPath(platform, false);
        var playerValues = (int[])Enum.GetValues(playerType.GetType());
        var usedLibs     = new List <string>();
        var flags        = string.Empty;
        var addVLCLibs   = false;

        if (playerType is PlayerOptionsAndroid.PlayerTypes)
        {
            addVLCLibs = ((PlayerOptionsAndroid.PlayerTypes)playerType & PlayerOptionsAndroid.PlayerTypes.LibVLC) == PlayerOptionsAndroid.PlayerTypes.LibVLC;
        }

        for (int i = 0; i < playerValues.Length; i++)
        {
            if (playerType is PlayerOptionsAndroid.PlayerTypes)
            {
                var type = (PlayerOptionsAndroid.PlayerTypes)playerValues[i];

                if (((PlayerOptionsAndroid.PlayerTypes)playerType & type) == type)
                {
                    usedLibs.Add(type.ToString());
                }
            }

            if (playerType is PlayerOptionsIPhone.PlayerTypes)
            {
                var type = (PlayerOptionsIPhone.PlayerTypes)playerValues[i];

                if (((PlayerOptionsIPhone.PlayerTypes)playerType & type) == type)
                {
                    usedLibs.Add(type.ToString());
                    flags += " -D" + type.ToString().ToUpper();
                }
            }
        }

        List <string> libs = new List <string>();

        libs.AddRange(Directory.GetFiles(libPath));

        if (playerType is PlayerOptionsAndroid.PlayerTypes)
        {
            libs.AddRange(Directory.GetFiles(libPath + "libs/armeabi-v7a"));
            libs.AddRange(Directory.GetFiles(libPath + "libs/x86"));
        }

        foreach (var lib in libs)
        {
            if (lib.Contains(".meta"))
            {
                var libName  = Path.GetFileNameWithoutExtension(lib);
                var isEnable = false;

                foreach (var name in usedLibs)
                {
                    if (libName.Contains("Player" + name) ||
                        libName.Contains("PlayerBase") ||
                        libName.Contains("MediaPlayer") ||
                        (addVLCLibs && libName.Contains("lib")))
                    {
                        isEnable = true;
                    }
                }

                File.SetAttributes(lib, FileAttributes.Normal);

                var attributes  = File.ReadAllText(lib).Split(' ');
                var updatedData = string.Empty;
                var playerAttr  = false;

                for (int i = 0; i < attributes.Length; i++)
                {
                    foreach (var pluginPlatform in _pluginPlatforms)
                    {
                        if (attributes[i].Contains(pluginPlatform))
                        {
                            if (pluginPlatform == platform.ToString())
                            {
                                playerAttr = true;
                            }
                            else
                            {
                                playerAttr = false;
                            }
                        }
                    }

                    if (playerAttr)
                    {
                        //Ignore any compile flags from plugin file
                        if (attributes[i].Contains("-D"))
                        {
                            continue;
                        }

                        if (attributes[i].Contains("enabled"))
                        {
                            attributes[i + 1] = (isEnable ? "1" : "0") + "\n";
                        }

                        if (attributes[i].Contains("CompileFlags"))
                        {
                            attributes[i] = string.Format("CompileFlags:{0}\n", flags);
                        }
                    }

                    updatedData += string.Format("{0} ", attributes[i]);
                }

                File.WriteAllText(lib, updatedData);
            }
        }
        libs.Clear();
    }