ファイル名、ファイルパス、および実行された操作を使用して、オーディオファイルのAndroid SDカードの変更を検出する必要があるAndroidアプリを開発しています。SD カードにファイルを追加する場合の例を知りたい
- 追加するファイル名
- ファイルのパス
- 操作 -- 追加
以前にファイルオブザーバーを試しましたが、そのためにはすべてのディレクトリに適用する必要があります。そこで、他の解決策を探して、Audio.Media.EXTERNAL_CONTENT_URIに関する情報を取得しました。次に、このようなコンテンツオブザーバーを作成しました
UriObserver.java -- これはコンテンツ オブザーバーです。
class UriObserver extends ContentObserver {
public UriObserver(Handler handler) {
super(handler);
// TODO Auto-generated constructor stub
}
@Override
public void onChange(boolean selfChange) {
// TODO Auto-generated method stub
super.onChange(selfChange);
Log.d("INSTANT", "GETTING CHANGES");
}
}
これはその登録用のコードです
UriObserver observer = new UriObserver(new Handler());
Log.d("INSTANT", "registered content observer");
this.getApplicationContext()
.getContentResolver()
.registerContentObserver(
MediaStore.Images.Media.EXTERNAL_CONTENT_URI, false,
observer);
Log.d("INSTANT", "registered content observer");
音声ファイル関連のsdcardに一部変更があったことをお知らせいたします。ただし、どのファイルが追加、編集、または削除されたかについての情報は何も提供しません。
次に、解決策を検索し、この投稿を取得しました
Android: MTP 経由で接続したときに MediaStore の変更を検出する方法
この投稿では、いくつかのコードがBhieferによって回答として提供されていますが、これはうまくいくと思われるので、それを実装しようとしましたが、実装できませんでした。
これには何ができますか?
アップデート
Audio.Media.EXTERNAL_CONTENT_URI に最新の変更を問い合わせることはできますか? このコード:
mCursor = context.getContentResolver().query(
Audio.Media.EXTERNAL_CONTENT_URI, null, null, null, "_id");
mCursor.moveToLast();
最新の変更を提供しません。最新の変更を取得する他の方法はありますか?