問題タブ [fileobserver]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
4 に答える
6552 参照

android - ファイルオブザーバーはしばらくすると動作を停止します

ファイルシステムで発生した変更をリッスンしたい.私はFileObserverを使用しています.Hereは私のコードです:

コード:

しばらくすると停止します。正確な時間はわかりませんが、常に機能するとは限りませんが、sdcardのすべてのフォルダーに対して実行され、それぞれに対して startWatching() を呼び出すループ内でサービスで startWatching() を呼び出します。予期しない動作を示し、一部のフォルダーのリッスンを停止し、他のフォルダーに対しては完全に実行されます。

皆さんが私を助けてくれることを願っています。私は多くの方法を試しましたが、完全には機能しません。私は何か間違ったことをしていますか?または、これを行う他の方法があります。

0 投票する
2 に答える
3144 参照

android - FileObserverインスタンスがガベージコレクションされています

ファイルを開いたときに(FileObserver.OPEN)、フォルダー内のすべてのファイルを監視する必要があります。メソッドを実行したい。問題は時々、FileObserverインスタンスがGCによって収集されることです。私はこれを試しました:

しかし、収集されています。問題は、FileObserverのインスタンスが収集されないための最良の解決策は何ですか?

tks !!!

0 投票する
1 に答える
1056 参照

android - Android FileObserver が USB 大容量ストレージ モードで onEvent を呼び出さない

FileObserver を /mnt/sdcard/X の特定のディレクトリとその子孫に再帰的にフックしています。このディレクトリのコンテンツを電話自体から (ギャラリー アプリなどから) 変更すると、FileObserver の onEvent() が正しく呼び出され、すべて正常に動作します。

USB 経由でコンピューターに接続し、大容量ストレージ モードに切り替えると、コンピューター経由で同じディレクトリに対して行われたすべての変更が、FileObserver へのイベントに変換されません。USB 大容量ストレージで動作しないという FileObserver の制限はありますか?

「adb push xx /mnt/sdcard/X/xx」を試しましたが、この変更も正しく記録されます。

0 投票する
1 に答える
1408 参照

android - SDカードをマウント後、FileObserverを登録

私のアプリケーションでは、写真がキャプチャされたときに写真の数を増やす必要があります。に を設定しFileObserverましたDCIM directory。キャプチャされた写真を監視します。

ただし、 SD カードが存在しないFileObserverため、SD カードをアンマウントすると監視が停止します。DCIM directorySDカードをマウントしたら、思い立ったのでFileObserverもう一度登録してみましandroid.intent.action.EXTERNAL_APPLICATIONS_AVAILABLEた。しかし、FileObserver登録されていません。

私の質問は次のとおりです。

  1. FileObserverSDカードをマウントした後、時計を作る方法はありますか?
  2. 一部のデバイス (HTC) では、SD カードをマウントした後、インテントが得られません。その場合、どのような方法を使用できますか?
  3. ユーザーが内蔵のソフトボタンカメラで撮影した写真を聞く他の方法はありますか? カメラを自作するつもりはありません。

    /li>
0 投票する
1 に答える
1759 参照

android - Androidでファイルオブザーバーを使用してファイルを削除するには?

ファイルオブザーバーを使用してファイルを削除しようとしています。私のコードでは、ファイルが SD カードにプッシュされると、create イベントが発生します。そのイベントで、そのファイルを削除したいと思います。以下のコードを試していますが、ファイルのコピーが行われているため、ファイルを削除できません。そのため、ファイルがSDカードに正常にコピーされたら、ファイルを削除したいと思います。

ファイルが SD カードに正常にコピーされたときに発生するイベントの通知はありますか?

私を助けてください。前もって感謝します。

0 投票する
1 に答える
3933 参照

android - File Observer がインテント サービスから動作しない

抽象ファイル オブザーバー クラスを拡張する優れたクラスを見つけました...

次のように、IntentService の onCreate でこれらのオブザーバーを 3 つ作成します。

オブザーバーが機能していないだけでなく、mkdir 関数も機能していません。

何か案は?ありがとう!

0 投票する
2 に答える
364 参照

android - ファイル オブザーバーはデバッグ モードで動作しますが、イベントはデバッガーなしではトリガーされません

再帰的なファイルオブザーバーとして機能するクラスがあります。親ディレクトリ内のすべてのディレクトリのファイル オブザーバーを作成し、それらの監視を開始します。デバッグモードでは、すべてのファイルの変更がlogcatに記録されるため、機能することはわかっています。しかし、デバッガーから切断してアプリを再起動すると、開始ログとセットアップ ログが作成されますが、ファイルの変更はキャッチされません。デバッガーがライブで監視されていないため、ガベージコレクターがクリーンアップしている可能性はありますか? それを実行する Intentservice は決して死ぬことはないので、それは真実ではないと思います。

編集:インテントサービスをノンストップインテントサービスに変更しましたが、同じことがまだ起こっています。したがって、サービスは破壊されません。

どう思いますか?

ありがとう

0 投票する
2 に答える
627 参照

android - Androidジェリービーンズは、動画が終了したときだけでなく、開始したときにCLOSE_WRITEイベントを送信します

私のコードは、FileObserverを使用してDCIMフォルダーをリッスンします。

私が使用したすべてのAndroidバージョンは、4.1.1を除いて、ビデオの撮影が終了したときに1つのイベントのみを送信しました。これは正しい動作だと思います。継続的に書き込み、終了したら閉じます。

ただし、4.1.1(GalaxyNexusおよびNexusS)では、イベントFileObserver.CLOSE_WRITEが2回送信され ます。つまり、ビデオの開始時と終了時です。

写真についても同じです-イベントは2回送信されます-それほど重要ではありませんが。

問題は、ビデオの開始イベントと終了イベントを区別できないことです。

ファイルのサイズを確認することはできますが、イベントが遅れている可能性があるため(デバイスが遅い/ビジー状態)、サイズがかなり大きい可能性があります。

なぜ振る舞いが変わったのか、何か考えはありますか?カメラのアプリのソースコードがどこにあるか知っていますか?私はそれを理解するために歴史を見てみることができます。

0 投票する
2 に答える
480 参照

java - FileObserver からの IntentService の開始

Androidでファイルオブザーバーを利用するアプリを書いています。とにかくファイルが変更された場合(作成など)、アップロードする必要があります。キューを実装し、スレッドなどを使用してメモリ不足にならないようにするために、IntentService を使用してファイルを 1 つずつアップロードし、失敗したときに実行しないようにして、ユーザーが接続を回復したときにそれを実行したいと考えています。アップロードします。しかし、ここに問題があります:

Intent に指定されたすべてのコンストラクター...

...動作しません。私は FileObserver の拡張機能で作業しているため、Intent をフィードできる受け入れ可能なコンテキストがありません。IntentService を開始するために String のみを使用できる方法はありますか? 何も返す必要はありません。機能させるには、いくつかの文字列(ファイル名など)を入力するだけです。または、IntentServiceを開始できる別の方法があります。これは本当に私を困惑させました。

高度な助けをありがとう!

編集:わかりました。私は多くのコンテキストを試しましたが、どれもうまくいきません。インテント サービスは、呼び出されたときにコンストラクターを介して渡されるサービス クラスのアプリケーションまたは基本コンテキストによって起動されていません。私のアプリの基本的なレイアウトは次のとおりです。

ログイン アクティビティはメニュー アクティビティに移動し、メニュー アクティビティはサービスを開始し、サービスはサービス ハンドラーを開始します (それが何であるかを確認するには、Android ドキュメントのサービスの例を参照してください)、コンストラクターを介してコンテキストを渡します。サービス ハンドラーは FileSync を開始し、コンストラクターを介してコンテキストを渡します。FileSync は、クラス変数でコンテキストを保持します。次に、FileSync はファイルが変更されるまで待機し、コンテキストを使用して IntentService を開始し、Intent を通じて要求されたファイルをアップロードします。とても複雑なことは承知していますが、現時点ではこれしか方法がありません。

0 投票する
1 に答える
1665 参照

java - Android:FileObserverはFSの変更について通知されません

受話器の起動直後から電源が切れるまで、ファイルシステム全体から削除された画像とビデオを常に追跡する必要があります(UIアプリが実行されていない場合でも)。この目的のために、私はサービスとFileObserverを使用しています。残念ながら、以下に添付されているコードは機能しません(私はデバッガーでメソッドを取得できません

public void onEvent(int event、String file)

FSにいくつかの変更を加えましたが...サービスが開始され、明らかにonStarted()メソッドが実行されます...

助けてください