示例#1
0
        private void CreateTree(MTPFileNode parentNode, IPortableDeviceContent content, IPortableDeviceProperties properties, IAsyncProgress asyn)
        {
            List <string> objectsId = GetChildrenObjectIds(content, parentNode.Id);

            if (objectsId != null && objectsId.Count > 0)
            {
                foreach (string objectId in objectsId)
                {
                    IPortableDeviceValues objectValues;
                    properties.GetValues(objectId, null, out objectValues);
                    MTPFileNode fileNode = new MTPFileNode()
                    {
                        Type = GetFileTypeProperty(objectValues),
                        Name = GetFullNameProperty(objectValues),
                        //FileSize = GetFileSizeProperty(objectValues),
                        Id        = objectId,
                        Childrens = new List <MTPFileNode>(),
                        Parent    = parentNode,
                        //Level = parentNode.Level + 1
                    };

                    parentNode.Childrens.Add(fileNode);

                    //asyn.Advance(0, string.Format(LanguageHelper.Get("LANGKEY_HuoQuJieDian_00555"), fileNode.Name));

                    if (fileNode.Type != MTPFileNodeType.File)
                    {
                        CreateTree(fileNode, content, properties, asyn);
                    }
                }
            }
        }
示例#2
0
        public void GetDate(MTPDevice device, MTPFileNode fileNode)
        {
            IPortableDeviceContent content = GetDeviceContent(device.DeviceId);

            IPortableDeviceProperties properties;

            content.Properties(out properties);

            IPortableDeviceValues objectValues;

            properties.GetValues(fileNode.Id, null, out objectValues);

            //暂时只获取文件的创建、修改、最后访问时间
            //由于不用手机设备对MTP协议的支持程度不同,导致不同设备可能获取到的多少不一致
            fileNode.DateCreated  = GetFileDateCreatedProperty(objectValues);
            fileNode.DateModified = GetFileDateModifiedProperty(objectValues);
            fileNode.DateAuthored = GetFileDateAuthoredProperty(objectValues);
        }
示例#3
0
 /// <summary>
 /// 从设备复制文件到本地
 /// </summary>
 /// <param name="device"></param>
 /// <param name="file"></param>
 /// <param name="dstPath"></param>
 public bool CopyFileFromDevice(MTPDevice device, MTPFileNode file, string dstPath)
 {
     return(TransferContentFromDevice(Path.Combine(dstPath, file.Name), device.DeviceId, file.Id) == string.Empty);
 }
示例#4
0
        public MTPFileNode GetRootFileNode(MTPDevice device, IAsyncProgress asyn)
        {
            MTPFileNode root = new MTPFileNode()
            {
                Type = MTPFileNodeType.Root, Name = "Root", Childrens = new List <MTPFileNode>(), Level = -1
            };

            IPortableDeviceContent content = GetDeviceContent(device.DeviceId);

            IPortableDeviceProperties properties;

            content.Properties(out properties);

            IPortableDeviceValues deviceValues;

            properties.GetValues("DEVICE", null, out deviceValues);

            List <string> storagesId = GetChildrenObjectIds(content, "DEVICE"); //获取存储卡设备

            //asyn.Advance(0, string.Format("获取到{0}个存储设备", storagesId.Count));

            foreach (string storageId in storagesId)
            {
                MTPFileNode deviceNode = new MTPFileNode()
                {
                    Type      = MTPFileNodeType.Device,
                    Name      = GetNameById(storageId, properties),
                    Id        = storageId,
                    Childrens = new List <MTPFileNode>(),
                    Parent    = root,
                    //Level = 0
                };
                root.Childrens.Add(deviceNode);
            }

            foreach (var parentNode in root.Childrens)
            {
                //asyn.Advance(0, string.Format(LanguageHelper.Get("LANGKEY_KaiShiHuoQuDeWenJianXiTong_00553"), parentNode.Name));

                List <string> objectsId = GetChildrenObjectIds(content, parentNode.Id);
                if (objectsId != null && objectsId.Count > 0)
                {
                    foreach (string objectId in objectsId)
                    {
                        IPortableDeviceValues objectValues;
                        properties.GetValues(objectId, null, out objectValues);
                        MTPFileNode fileNode = new MTPFileNode()
                        {
                            Type = GetFileTypeProperty(objectValues),
                            Name = GetFullNameProperty(objectValues),
                            //FileSize = GetFileSizeProperty(objectValues),
                            Id        = objectId,
                            Childrens = new List <MTPFileNode>(),
                            Parent    = parentNode,
                            //Level = parentNode.Level + 1
                        };

                        parentNode.Childrens.Add(fileNode);

                        //asyn.Advance(10.0 / root.Childrens.Count / objectsId.Count, string.Format(LanguageHelper.Get("LANGKEY_HuoQuJieDian_00554"), fileNode.Name));

                        if (fileNode.Type != MTPFileNodeType.File)
                        {
                            CreateTree(fileNode, content, properties, asyn);
                        }
                    }
                }
            }

            return(root);
        }
        /// <summary>
        /// 获取MTP设备文件系统树
        /// </summary>
        /// <param name="device"></param>
        /// <param name="asyn"></param>
        /// <returns>根节点</returns>
        public MTPFileNode GetRootFileNode(MTPDevice device, IAsyncTaskProgress asyn)
        {
            MTPFileNode root = new MTPFileNode()
            {
                Type = MTPFileNodeType.Root, Name = "Root", Childrens = new List <MTPFileNode>(), Level = -1
            };

            IPortableDeviceContent content = GetDeviceContent(device.DeviceId);

            IPortableDeviceProperties properties;

            content.Properties(out properties);

            IPortableDeviceValues deviceValues;

            properties.GetValues("DEVICE", null, out deviceValues);

            List <string> storagesId = GetChildrenObjectIds(content, "DEVICE"); //获取存储卡设备

            foreach (string storageId in storagesId)
            {
                MTPFileNode deviceNode = new MTPFileNode()
                {
                    Type      = MTPFileNodeType.Device,
                    Name      = GetNameById(storageId, properties),
                    Id        = storageId,
                    Childrens = new List <MTPFileNode>(),
                    Parent    = root,
                    //Level = 0
                };
                root.Childrens.Add(deviceNode);
            }

            foreach (var parentNode in root.Childrens)
            {
                List <string> objectsId = GetChildrenObjectIds(content, parentNode.Id);
                if (objectsId != null && objectsId.Count > 0)
                {
                    foreach (string objectId in objectsId)
                    {
                        IPortableDeviceValues objectValues;
                        properties.GetValues(objectId, null, out objectValues);
                        MTPFileNode fileNode = new MTPFileNode()
                        {
                            Type = GetFileTypeProperty(objectValues),
                            Name = GetFullNameProperty(objectValues),
                            //FileSize = GetFileSizeProperty(objectValues),
                            Id        = objectId,
                            Childrens = new List <MTPFileNode>(),
                            Parent    = parentNode,
                            //Level = parentNode.Level + 1
                        };

                        parentNode.Childrens.Add(fileNode);

                        if (fileNode.Type != MTPFileNodeType.File)
                        {
                            CreateTree(fileNode, content, properties, asyn);
                        }
                    }
                }
            }

            return(root);
        }