Exemple #1
0
 public override void OnEvent([GeneratedEnum] FileObserverEvents e, string path)
 {
     if (EventFired != null)
     {
         EventFired(this, new PlatformFileSystemWatcherChanged(e, path));
     }
 }
        private void CreateFileObserver(string path)
        {
            // FileObserverEvents.Create | FileObserverEvents.Delete | FileObserverEvents.MovedFrom | FileObserverEvents.MovedTo;
            const FileObserverEvents Mask = FileObserverEvents.Create | FileObserverEvents.Delete | FileObserverEvents.MovedFrom | FileObserverEvents.MovedTo | (FileObserverEvents)0x40000000;

            Console.WriteLine(Mask.ToString());
            fileObserver              = new FilePickerFileObserver(path, Mask);
            fileObserver.OnFileEvent += (events, s) =>
            {
                LogDebug(string.Format("FileObserver event received - {0}", events));
                if ((events & (FileObserverEvents)0x40000000) == (FileObserverEvents)0x40000000)
                {
                    Console.WriteLine("Folder event");
                }
                events &= FileObserverEvents.AllEvents;
                var eventName = Enum.GetName(typeof(FileObserverEvents), events);
                Console.WriteLine(eventName);
                if ((events & Mask) == events)
                {
                    if (Activity != null)
                    {
                        Activity.RunOnUiThread(RefreshFilesList);
                    }
                }
            };
        }
 public RecursiveFileObserver(string path, OnFileObserverEvent ev,
                              FileObserverEvents mask = FileObserverEvents.AllEvents) : base(path, mask)
 {
     mPath  = path;
     mMask  = mask;
     mEvent = ev;
 }
 public override void OnEvent(FileObserverEvents ev, string path)
 {
     Log.Debug(Tag, "StartWatchingFileObserver: OnEvent " + ev + " " + path);
     if ((ev & FileObserverEvents.Create) != 0 && path.Equals("Screenshots", StringComparison.InvariantCultureIgnoreCase))
     {
         Log.Debug(Tag, "StartWatchingFileObserver: OnEvent " + ev + " " + path + " started watching");
         this.fileObserver.StartWatching();
     }
 }
 public override void OnEvent(FileObserverEvents e, String path)
 {
     //Android.Util.Log.Info("File event", String.Format("{0}:{1}", path, e));
     if ((e & Events) != 0)
     {
         lock (DirDictLock)
         {
             StopWatching();
             _dirDict = null;
         }
     }
 }
 public override void OnEvent(FileObserverEvents ev, string path)
 {
     Log.Debug(Tag, "UploadFileObserver: OnEvent " + ev + " " + path);
     if ((ev & FileObserverEvents.CloseWrite) != 0)
     {
         string screenshotFile = this.ssFolder + sep + path;
         Log.Debug(Tag, "UploadFileObserver: OnEvent " + ev + " at " + screenshotFile);
         if (!(new Java.IO.File(screenshotFile)).Exists())
         {
             return;
         }
         Log.Debug(Tag, "UploadFileObserver: OnEvent " + ev + " " + path + " started bitmapping");
         SmartPrintScreen.Upload(this.service, screenshotFile);
     }
 }
        private void WriteAndSend(NotificationSender sender, string path, FileObserverEvents events)
        {
            string message     = string.Format(GetString(Resource.String.category_system_notif_modification_detected), events, path);
            string fullMessage = $"{new Date().GetFormattedDateTime()} : {message}";

            using (StreamWriter writer = new StreamWriter(OpenFileOutput(LogFile, FileCreationMode.Append)))
            {
                writer.WriteLine(fullMessage);
            }

            using (StreamWriter writer = new StreamWriter(OpenFileOutput(AlarmReceiver.CurrentSummaryFile, FileCreationMode.Append)))
            {
                writer.WriteLine(fullMessage);
            }

            sender.PutNormalizeExtra(ExtraFilePath, path);
            sender.PutNormalizeExtra(ExtraFileEvent, events.ToString());
            sender.Send(NotificationType.WarningNotification, message);
        }
            public override void OnEvent([GeneratedEnum] FileObserverEvents e, string pathRelativeToWatcher)
            {
                System.Diagnostics.Debug.WriteLine($"ANDROID FILEOBSERVER: {e}: {pathRelativeToWatcher}");

                bool found = _storedObservables.TryGetValue(_watchedPath, out Subject <FileChangedEvent> observable);

                string name     = Path.GetFileNameWithoutExtension(pathRelativeToWatcher);
                string fullPath = Path.Combine(_watchedPath, pathRelativeToWatcher);

                switch (e)
                {
                case FileObserverEvents.Create:
                    observable.OnNext(new FileChangedEvent(fullPath, name, WatcherChangeTypes.Created));
                    break;

                case FileObserverEvents.Delete:
                    observable.OnNext(new FileChangedEvent(fullPath, name, WatcherChangeTypes.Deleted));
                    break;

                case FileObserverEvents.Modify:
                    observable.OnNext(new FileChangedEvent(fullPath, name, WatcherChangeTypes.Changed));
                    break;

                // Android doesn't have a rename event--instead, it fires a MovedFrom, followed by a MovedTo.
                // There's no way reliably track a file from one folder to the next, so treat MovedFrom as a Delete,
                // and MovedTo as a Create.
                case FileObserverEvents.MovedFrom:
                    observable.OnNext(new FileChangedEvent(fullPath, name, WatcherChangeTypes.Deleted));
                    break;

                case FileObserverEvents.MovedTo:
                    observable.OnNext(new FileChangedEvent(fullPath, name, WatcherChangeTypes.Created));
                    break;

                default:
                    break;
                }
            }
        public override void OnEvent([GeneratedEnum] FileObserverEvents e, string path)
        {
            if (string.IsNullOrWhiteSpace(path) == false)
            {
                string fullPath = Path.Combine(_path, path);

                if (e == FileObserverEvents.Create)
                {
                    _paths.Add(fullPath);
                }
                else if (e == FileObserverEvents.MovedTo || _paths.Contains(fullPath))
                {
                    _paths.Remove(fullPath);

                    try
                    {
                        ICursor  cursor        = null;
                        string   fileExtension = MimeTypeMap.GetFileExtensionFromUrl(path);
                        string   mimeType      = MimeTypeMap.Singleton.GetMimeTypeFromExtension(fileExtension);
                        DateTime timestamp     = DateTime.UtcNow;
                        bool     createDatum   = false;

                        if (mimeType != null)
                        {
                            // check if the file is an image or a video and then query the appropriate content uri
                            if (mimeType.StartsWith(ImageMetadataProbe.IMAGE_DISCRETE_TYPE))
                            {
                                cursor = Application.Context.ContentResolver.Query(MediaStore.Images.Media.ExternalContentUri, new string[] { MediaStore.Images.Media.InterfaceConsts.DateTaken }, MediaStore.Images.Media.InterfaceConsts.Data + $" = ?", new string[] { fullPath }, MediaStore.Images.Media.InterfaceConsts.DateTaken + " DESC LIMIT 1");

                                createDatum = cursor.MoveToNext();

                                if (createDatum)
                                {
                                    timestamp = DateTimeOffset.FromUnixTimeMilliseconds(cursor.GetLong(cursor.GetColumnIndex(MediaStore.Images.Media.InterfaceConsts.DateTaken))).DateTime;
                                }
                            }
                            else if (mimeType.StartsWith(ImageMetadataProbe.VIDEO_DISCRETE_TYPE))
                            {
                                cursor = Application.Context.ContentResolver.Query(MediaStore.Video.Media.ExternalContentUri, new string[] { MediaStore.Video.Media.InterfaceConsts.DateTaken }, MediaStore.Video.Media.InterfaceConsts.Data + $" = ?", new string[] { fullPath }, MediaStore.Video.Media.InterfaceConsts.DateTaken + " DESC LIMIT 1");

                                createDatum = cursor.MoveToNext();

                                if (createDatum)
                                {
                                    timestamp = DateTimeOffset.FromUnixTimeMilliseconds(cursor.GetLong(cursor.GetColumnIndex(MediaStore.Video.Media.InterfaceConsts.DateTaken))).DateTime;
                                }
                            }

                            if (createDatum)
                            {
                                Task.Run(async() =>
                                {
                                    await _probe.CreateAndStoreDatumAsync(fullPath, mimeType, timestamp);
                                });
                            }
                        }
                    }
                    catch (AggregateException ex)
                    {
                        SensusServiceHelper.Get().Logger.Log("Exception while querying images:  " + ex.Flatten().InnerExceptions.First().Message, LoggingLevel.Normal, GetType());
                    }
                    catch (Exception ex)
                    {
                        SensusServiceHelper.Get().Logger.Log("Exception while querying images:  " + ex.Message, LoggingLevel.Normal, GetType());
                    }
                }
            }
        }
 /// <inheritdoc />
 public FilePickerFileObserver(string path, FileObserverEvents mask)
     : base(path, mask)
 {
 }
 /// <inheritdoc />
 public override void OnEvent(FileObserverEvents e, string path)
 {
     OnFileEvent(e, path);
 }
 /// <inheritdoc />
 public FilePickerFileObserver(string path, FileObserverEvents mask)
     : base(path, mask)
 {
 }
 /// <inheritdoc />
 public override void OnEvent(FileObserverEvents e, string path)
 {
     OnFileEvent(e, path);
 }
 public override void OnEvent(FileObserverEvents ev, string path)
 {
     mRecursiveFileObserver.OnEvent(ev, mPath + "/" + path);
 }
Exemple #15
0
 public override void OnEvent(FileObserverEvents e, string path)
 {
     _owner.FileChanged(File.ReadAllText(_owner._path));
 }
Exemple #16
0
 public override void OnEvent(FileObserverEvents e, String path)
 {
     // Log.Info(tag, String.Format("{0}:{1}", path, e));
     MessagingCenter.Send(this, "FechaBD", "33");
 }
 public PlatformFileSystemWatcherChanged(FileObserverEvents fileObserverEvent, string path)
 {
     this.fileObserverEvent = fileObserverEvent;
     this.path = path;
 }
 public CrossPlatFileObserver(string path, FileObserverEvents events) : base(path, events)
 {
     _watchedPath = path;
 }
 public override void OnEvent(FileObserverEvents e, string path)
 {
     if (Event != null) Event(this, path);
 }
 public CustomFileObserver(string path, FileObserverEvents mask)
     : base(path, mask)
 {
 }
Exemple #21
0
 public MyPathObserver(String rootPath, FileObserverEvents events) : base(rootPath, events)
 {
     Log.Info(tag, String.Format("Watching : {0} : {1}", rootPath, events));
 }
 public override void OnEvent(FileObserverEvents e, string path)
 {
     mEvent?.Invoke(e, path);
 }
Exemple #23
0
 public override void OnEvent(FileObserverEvents e, String path)
 {
     Log.Info(tag, String.Format("{0}:{1}", path, e));
 }
 public SingleFileObserver(RecursiveFileObserver parent, string path, FileObserverEvents mask)
     : base(path, mask)
 {
     mRecursiveFileObserver = parent;
     mPath = path;
 }