private Task ExternalDeviceService_MustIndexExternalDevice(string deviceId) { return(Task.Run(async() => { await DispatchHelper.InvokeAsync(CoreDispatcherPriority.Low, () => MediaLibraryIndexingState = LoadingState.Loading); StorageFolder folder; // Windows.Devices.Portable.StorageDevice.FromId blocks forever on Xbox... so work around if (Helpers.DeviceHelper.GetDeviceType() != DeviceTypeEnum.Xbox && Helpers.DeviceHelper.GetDeviceType() != DeviceTypeEnum.Phone) { folder = Windows.Devices.Portable.StorageDevice.FromId(deviceId); } else { var devices = KnownFolders.RemovableDevices; var allFolders = await devices.GetFoldersAsync(); folder = allFolders.Last(); } if (!StorageApplicationPermissions.FutureAccessList.CheckAccess(folder)) { StorageApplicationPermissions.FutureAccessList.Add(folder); } await MediaLibraryHelper.ForeachSupportedFile(folder, async(IReadOnlyList <StorageFile> files) => await DiscoverMediaItems(files)); await DispatchHelper.InvokeAsync(CoreDispatcherPriority.Low, () => MediaLibraryIndexingState = LoadingState.Loaded); })); }
//TODO: Move to a service public override async void Execute(object parameter) { try { if (parameter is VLCStorageFile) { // Copy the selected file. var file = parameter as VLCStorageFile; StorageFile f = await StorageFile.GetFileFromPathAsync(file.StorageItem.Path); CopyMediaFileToLocalStorage(f); } else if (parameter is VLCStorageFolder) { // Copy all media files in the selected folder. var folder = parameter as VLCStorageFolder; StorageFolder d = await StorageFolder.GetFolderFromPathAsync(folder.StorageItem.Path); await MediaLibraryHelper.ForeachSupportedFile(d, (IReadOnlyList <StorageFile> files) => { foreach (var f in files) { CopyMediaFileToLocalStorage(f); } return(Task.FromResult(true)); }); } } catch (Exception e) { LogHelper.Log(e.Message); } }
async Task PerformMediaLibraryIndexing() { await DispatchHelper.InvokeAsync(CoreDispatcherPriority.Low, () => MediaLibraryIndexingState = LoadingState.Loading); StorageFolder folder = await FileUtils.GetLocalStorageMediaFolder(); await MediaLibraryHelper.ForeachSupportedFile(folder, async (IReadOnlyList <StorageFile> files) => await DiscoverMediaItems(files)); await MediaLibraryHelper.ForeachSupportedFile(KnownFolders.VideosLibrary, async (IReadOnlyList <StorageFile> files) => await DiscoverMediaItems(files)); await MediaLibraryHelper.ForeachSupportedFile(KnownFolders.MusicLibrary, async (IReadOnlyList <StorageFile> files) => await DiscoverMediaItems(files)); await MediaLibraryHelper.ForeachSupportedFile(KnownFolders.CameraRoll, async (IReadOnlyList <StorageFile> files) => await DiscoverMediaItems(files, true)); // Cortana gets all those artists, albums, songs names var artists = LoadArtists(null); if (artists != null) { await CortanaHelper.SetPhraseList("artistName", artists.Where(x => !string.IsNullOrEmpty(x.Name)).Select(x => x.Name).ToList()); } var albums = LoadAlbums(null); if (albums != null) { await CortanaHelper.SetPhraseList("albumName", albums.Where(x => !string.IsNullOrEmpty(x.Name)).Select(x => x.Name).ToList()); } await DispatchHelper.InvokeAsync(CoreDispatcherPriority.Low, () => MediaLibraryIndexingState = LoadingState.Loaded); }