Service
を起動してFileObserver
を使用するようにAndroidアプリを構成すると、監視対象のディレクトリが変更されたとき(つまりユーザーが写真を撮るとき)に他のコードが実行されます。デバッグするとき、onEventメソッドは決してトリガされません。どのようにAndroidサービスからFileObserverを実装するのですか
ここに私のサービスで持っているonStartイベントがあります。用Toast
火災
public final String TAG = "DEBUG";
public static FileObserver observer;
@Override
public void onStart(Intent intent, int startid) {
Log.d(TAG, "onStart");
final String pathToWatch = android.os.Environment.getExternalStorageDirectory().toString() + "/DCIM/Camera/";
Toast.makeText(this, "My Service Started and trying to watch " + pathToWatch, Toast.LENGTH_LONG).show();
observer = new FileObserver(pathToWatch) { // set up a file observer to watch this directory on sd card
@Override
public void onEvent(int event, String file) {
//if(event == FileObserver.CREATE && !file.equals(".probe")){ // check if its a "create" and not equal to .probe because thats created every time camera is launched
Log.d(TAG, "File created [" + pathToWatch + file + "]");
Toast.makeText(getBaseContext(), file + " was saved!", Toast.LENGTH_LONG);
//}
}
};
}
「私のサービスが...開始」しかし、私は写真を撮る場合に乾杯した後、のonEventは発火しません。これはデバッグによって決定されます。そのブレークポイントには決して打たれず、トーストは決して発動しません。
このディレクトリを参照すると、新しいイメージがそこに保存されます。
Service
でFileObserver
はどのように機能しますか?
を選択したディレクトリの下にあるすべてのディレクトリを再帰的にある高度なFileObserverとしてオープンソースRecursiveFileObserver作用することは、それを解決したことがあるので、私は答えのためにあなたのクレジットを与えます私のサンプルコードに基づいています。私は実際にあなたが参照している投稿から私のソリューションをまとめましたが、それでも動作しませんでした。私はstartWatching()メソッドを見逃している可能性がありますが、どちらの方法でも私の解決策はこの例を使用することでした:http://www.roman10.net/?p=457 – shanabus