問題タブ [android-mediascanner]
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.
android - メディア スキャナが特定のデバイスで画像を取得しない
私は、デバイスのギャラリー/フォト ライブラリに表示されるように、MediaScanner で取得したい sdcard のディレクトリに画像を保存するアプリケーションを持っています。
私の問題
私の現在のソリューションは、Galaxy S3、Galaxy Ace、Sony Xperia U で正しく動作します。動作しないのは HTC Hero です。
コンテンツを更新する唯一の方法は、デバイスを再起動することです。コンテンツリゾルバーに追加したために、他のデバイスが追加されたときにそれを取得します。私のコードを以下に示します。
私の質問
デバイスを再起動せずに、そのディレクトリに新しく追加された画像が HTC Hero のフォト ギャラリーに表示されるように、MediaScanner の再スキャンまたは更新を強制するにはどうすればよいですか?
前もって感謝します
android - MediaScanner、onScanCompleted は呼び出されません
MediaScanner に問題があります。これを使用して、次のコードで単一のファイルをスキャンします。
アクティビティ (onCreate) の開始時にファイルをスキャンすると、完全に機能します。スキャナーを接続し、ファイルをスキャンして完了です。
しかし、スキャナーを呼び出してから別のアクティビティに移動すると、MediaScanner は onScanCompleted メソッドを呼び出さないため、メモリ リークが発生します。また、アクティビティを終了する前にスキャナーで unbindService() を使用すると、スキャナーが機能しません (ファイルがギャラリー アプリに表示されません)。
アクティビティを終了するときにスキャナーを使用する必要があります。私に何ができる?
android - メディア スキャナの実行中
私のアプリケーションでは、ユーザーはカメラ機能を介して画像をキャプチャします。その後、グリッド ビューで画像を更新します。しかし、長い検索の後、それらは更新されません。メディア スキャナを手動で実行する必要があることがわかりました。そのためのコードを記述します。画像が繰り返し表示されるとエラーが発生します。以下に、ログの猫のエラーを投稿しました....
以下に、これを実行するコードを投稿し、コメントですべてのステップを説明しています。
//この撮影した写真では、メディア スキャナーのコードを書きました
私も試してみました
しかし、SDカード全体をスキャンするのが遅いと思います。メディアスキャナーの実行方法と、コードのどこで実行できるかを教えてください。たくさん検索しましたが、それらは私のニーズを満たしていません。
android - Androidでメディアスキャナーを実行する方法
画像のキャプチャ中にメディア スキャナを実行したい。キャプチャ後、画像はグリッド ビューで更新されます。そのためには、メディア スキャナーを実行する必要があります。メディア スキャナーを実行する 2 つのソリューションを見つけました。1つはブロードキャスト イベントで、もう 1 つはメディアスキャナー クラスを実行しています。Ice Cream Sandwich (4.0) では、メディア スキャナ クラスが導入されていると思います。以前のバージョンでは、メディア スキャナを実行するためのブロードキャスト イベントを設定する必要があります。
メディア スキャナを正しい方法で実行する方法を教えてください。
android - Androidでさまざまな種類のメモリをスキャンする
他の人にも役立つかもしれないいくつかのクエリがあります。android 4.0以降では、
1)外部SDカードのサポートがあるかどうかを確認する方法は?
2)Mediascanを内部メモリと外部メモリの両方で強制的に実行するにはどうすればよいですか?
3)SDカードまたは内部メモリのみをMediascanする方法は?
java - 単一のディレクトリで MediaScanner を呼び出す (android)
MediaScanner に 1 つのディレクトリだけをスキャンさせようとすると問題が発生します。
私のアプリは写真を撮り、それらを sd-card/DCIM/AppPictures/ に保存します。明らかに、写真をギャラリー アプリに表示するには、MediaScanner を呼び出す必要があります。次のコードは私の目的のために機能します:
しかし、それはとても無駄に思えます!ファイルの場所が正確にわかっている場合、SD カード全体をスキャンしようとしてリソースを使用したくありません。私も次のことを試しました:
しかし、これでは結果が得られません。誰かがこれを行うための適切な方法を教えてもらえますか?
android - DownloadManager はダウンロード後に MediaScanner を実行しますが、すべきではありません
MediaScanner は、スキャンしないように指示したファイルをスキャンしようとしているようです。なぜだろう。
私のアプリは、サーバーからいくつかのメディア ファイルをダウンロードし、後でそれらをプレイリストと共に表示します。
そのために、アプリは Android システムのDownloadManagerを使用してメディア ファイルを取得します。
Request.setDestinationUri()を使用すると、ダウンロードは「pending」という名前のgetExternalCacheDir()のサブディレクトリに保存されます。
ダウンロードが完了すると、Android DownloadManager はACTION_DOWNLOAD_COMPLETEブロードキャストを送信します。私のアプリのブロードキャスト リスナーは、その完了したダウンロードを取得し、「保留中」フォルダーから「メディア」という名前の別のフォルダーに移動します。
これはすべて意図したとおりに機能します。
ただし、システム ログには次のようなメッセージがいっぱいです。
どうやら、私のアプリはDownloadManagerに画像/ビデオを「保留中」ディレクトリにダウンロードするように指示しています。言われたとおりに「ダウンロードを完了しました」ブロードキャストを送信します。私のアプリはブロードキャストを受信し、完全なファイルを「メディア」ディレクトリに移動します。しばらくして、MediaScanner (またはその他のもの) は、「保留中」フォルダー内の完成したファイルをスキャンし、システム ログに barfs しようとします。
MediaScanner がこれらのファイルを読み込もうとしているのはなぜですか?
setDestinationUriの Android API ドキュメントによると、「ダウンロードしたファイルは MediaScanner によってスキャンされません。ただし、allowScanningByMediaScanner() を呼び出すことでスキャン可能にすることができます。」私はそのメソッドを呼び出していないので、ダウンロードしたファイルはスキャンされるべきではありません。
次に、アプリのキャッシュ ディレクトリに空の.ignoreを配置しようとしましたが、 ACTION_MEDIA_SCANNER_SCAN_FILEを介して MediaScanner に .ignore-file の存在を思い出させましたが、エラー メッセージは残ります。
さらに不思議なことに、ファイルはシステムのギャラリーやビデオ アプリには表示されないため、メディア スキャナーはファイルを無視します。しかし、それでも: 読む必要がないのに、なぜ読もうとするのでしょうか? MediaScanner ですか、それとも他のシステム サービスですか?
android - ファイル名に Android の MIME タイプ拡張子が含まれていない場合、オーディオ ファイルの形式を特定するにはどうすればよいですか?
この投稿のために名前を付けた拡張子のないファイルがあります。MyAudioFile
このオーディオ ファイルの拡張子が format であることは知っていますがaac
(名前の付いたプログラムで解析しましたGSpot
)、ファイルに拡張子がないため、MIME
そのファイルのタイプを判別するために Android で使用可能なメソッドのいずれかを使用します。
Android
私が気付いていない、オーディオ ファイルのヘッダー情報を読み取って、拡張子またはファイルの種類を吐き出す組み込みのユーティリティ メソッドはMIME
ありますか?
私はすでに試してみMediaMetaDataRetriever
ましたがMimeTypeMap
失敗しました。ここで使用できる他のクラスを見逃していませんか?
SOX
とを除く他の外部ライブラリを使用することは可能FFMPeg
ですか?
android - Nexus 7でMediaScanをトリガーする方法は?
再起動せずにMediaStoreに最新の情報があることを確認したいので、SOで見つけた一般的な方法を使用してMediaScannerをトリガーしたいと思います。
これは、Samsung S2 w / ICSでは正常に機能しますが、Nexus 7 w/JellyBeanでは機能しません。Logcatは私のNexus7でこれを示しています:
最後の行は理論的には有望に聞こえますが、新しいファイルがSDカードにプッシュされた後でも(adb pushを介して)値は常に0です。私の古いデバイス(S2)では、SDカードを再マウントします。
AndroidManifest.xmlに次のアクセス許可を追加しましたが、これらのアクセス許可がない場合と同じように動作します。
アイデア/代替案はありますか?
編集1:
新規または変更または削除されたファイルのファイルパスがわからないことに注意してください。MediaStoreが最新であることを確認したいだけです。
android - ファイルを移動すると、メディア プロバイダーからの音楽 ID は変更されますか?
このファイル/sdcard/music/file.mp3
とそれに対応する ID がMediaStore
isにあり1
ます。ID は次の場合に変更されますか?
- ファイルが移動されます。
/sdcard/music2/file.mp3
- ファイルの名前が変更されます (上記と同じかもしれません)
メディア スキャナが再スキャンを完了した後ですか?
明確にするために更新して、私の目的を確認してください。
以下は実際には私の本当の目的ではありませんが、考え方は同じです:
各 mp3 ファイルを URL (歌詞と言う) に関連付けたいと思います。私はそれを自分のsqliteデータベースに保存します。私のsqliteデータベースにはID列とURL列があり、ID列はメディアプロバイダーの同じIDです。