这个问题是this问题的扩展。发布另一个问题,因为这是封闭的。
我正在实现FileObserver类,正如@SushiHangover提到的那样,但是当事件(OnEvent)被触发时,路径的值为null,e的值为1073741856。
这就是我按照FileObserver的建议初始化@SushiHangover的方式。
[Activity(Label = "Main Menu")]
public class MainView : MvxActivity
{
public MusicFolderObserver MusicFolderObserver;
protected override void OnViewModelSet()
{
File musicFolder = new File(Environment.GetExternalStoragePublicDirectory(Environment.DirectoryMusic), "/MyFolder");
MusicFolderObserver = new MusicFolderObserver (musicFolder.AbsolutePath);
MusicFolderObserver.StartWatching();
SetContentView(Resource.Layout.View_Main);
}
}下面是文件观察者类
public class MusicFolderObserver : FileObserver
{
static FileObserverEvents _Events = (FileObserverEvents.AllEvents);
const string tag = "StackoverFlow";
public MusicFolderObserver (String rootPath) : base(rootPath, _Events)
{
Log.Info(tag, String.Format("Watching : {0}", rootPath));
}
public MusicFolderObserver (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)
{
Log.Info(tag, String.Format("{0}:{1}", path, e));
}
}请让我知道如何使这个观察者在整个应用程序运行期间活动。我正在尝试制作一个24/7活动的应用程序,如果观察到的音乐文件夹中有任何更改,就会触发
发布于 2017-09-08 05:11:10
FileObserverEvents of 1073741856 包含aFileObserverEvents.Open标志:
if (e.HasFlag(FileObserverEvents.Open))
{
Log.Debug(tag, $"File Opened : {path}");
}当Android ( Linux )操作目录中的一个文件时,您可能会看到一系列事件,因为它更改了目录的内容,许多这些操作(FileObserverEvents)将没有附加到它们的路径,在您的情况下,这些操作可以被忽略(如果您在获得空路径时需要所有事件标志的详细信息,请参阅Linux文件系统引用)。
OnEvent重写示例:
public override void OnEvent(FileObserverEvents e, String path)
{
if (path == null) return;
Log.Debug(tag, $"{path} : {e}");
}Touch一个新文件:
adb shell touch /sdcard/Music/MyFolder/BohemianRhapsody100.mp3在以下方面的成果:
SO : BohemianRhapsody100.mp3 : Create
SO : BohemianRhapsody100.mp3 : Open
SO : BohemianRhapsody100.mp3 : CloseNowrite移动文件:
adb shell mv /sdcard/Music/MyFolder/BohemianRhapsody100.mp3 /sdcard/Music/MyFolder/BohemianRhapsody101.mp3在以下方面的成果:
SO : BohemianRhapsody100.mp3 : MovedFrom
SO : BohemianRhapsody101.mp3 : MovedTo删除文件:
adb shell rm /sdcard/Music/MyFolder/BohemianRhapsody101.mp3在以下方面的成果:
SO : BohemianRhapsody101.mp3 : Delete等等..。
https://stackoverflow.com/questions/46108418
复制相似问题