問題タブ [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 - 結果のクラッシュに関する Samsung S3 ネイティブ カメラの奇妙な問題
私のアプリには、ネイティブ カメラからキャプチャを呼び出す次のコードがあります。startActivityForResult
nexus 5、HTC 1、nexus 7、Samsung S4、および Samsung S3 でテスト済みです。S3を除くすべてのデバイスでうまく機能します。S3 では、開始アクティビティに戻るとアプリがクラッシュしました
クラッシュ:
私のコード
私の onActivityResult は次のようになります。
android - Android DownloadManager とメディア スキャナー
ギャラリー アプリに表示するために DownloadManager 経由で画像をダウンロードしようとしていますが、うまくいきません。ドキュメントによると、次のコードで十分だと思いました。
ただし、ファイルをダウンロードしても、ギャラリー アプリには表示されません。そこで、次のように、ダウンロード レシーバーを手動で追加しようとしました。
それもうまくいきません。「filename」タグで出力された URI は、ダウンロードされた実際のファイルの名前ではなく、「content://downloads/my_downloads/97」のようなものです。ダウンロード アプリでは、ファイル名はサーバー上にあったものと同じです。「Media Scanner」タグで記録された URI が null です。
ここで簡単なものが欠けていますか?私はこれで数時間髪を引っ張っています。
android - Phonegap 3.3.0 は、ダウンロードしたファイル cdvfile の URL をメディア スキャナーに渡します
ファイルをローカル ストレージにダウンロードできましたが、そのパスをメディア スキャナーに渡すことができず、ギャラリーに追加されません。
メディア スキャナーを機能させるプラグインを追加しました。トリックを実行しようとする関数はこれです。
絶対パス パラメータは、javascript の file.toURL() です。こんな感じのURLです。cdvfile://localhost/persistent/Download/13republica_personal.jpg
/Download/13republica_personal.jpg に変更しようとしましたが、うまくいきません。
ファイルがギャラリーに追加されるように、ファイルの URL/場所をメディア スキャナーに渡すにはどうすればよいですか?
android - Android MediaScanner: ギャラリーから画像ファイルを削除する
ストックギャラリーアプリで画像ファイルを非表示にするアプリを開発しています。同じように、.nomediaファイルを作成し、MediaScanner に更新を依頼しています。
この手法は、隠しファイルを表示する必要がある場合、つまり .nomedia ファイルを削除し、そのフォルダーに存在するすべてのファイルをスキャンしてギャラリーに表示する必要がある場合に有効です。しかし、画像を非表示にしたい場合、.nomedia ファイルを配置してから、MediaScanner にそのフォルダー内のすべてのファイルをスキャンするように要求しても、それらの写真はギャラリーから非表示になりません。
次のコードを使用してファイルをスキャンしています
私はそれを正しい方法でやっていますか?または、メディア ストアからファイルを削除するには、他のものが必要ですか?
テスト端末: Nexus 5 (4.4.2)
ありがとう。
java - 同じボタン クリック イベントでカウントされると、作成されたにもかかわらずフォルダーが検出されない
ボタンのクリックでフォルダーが生成され、フォルダー内のいくつかのファイルが生成されるAndroidアクティビティがあります。現在、そのフォルダー内のファイル数をプログラムで取得しようとしています。私のアルゴリズムは次のようになります。
この場合、countFilesInFolder()を使用してファイルをカウントしようとすると、フォルダーとファイルが実際に正常に作成されているにもかかわらず、ゼロになります。
しかし、代わりにこれを行い、最初のボタンの後に 2 番目のボタンを押すと、
ファイル数もちゃんとカウントしてくれます。後で countFilesInFolder() 関数を確認したところ、フォルダー自体の作成が検出されていないため、すべてがゼロになっていることがわかりました。
この問題を解決するために、次のメディア スキャナー クラスを使用してみましたが、うまくいきませんでした。
最初のアルゴリズムで説明したように、ファイルの作成とカウントの両方が同じボタンのクリックで発生する必要があります。どうすればいいですか?上記の疑似関数はすべて正しいと仮定してください。これは、2 番目のアルゴリズムで適切に動作することを確認したためです。
android - イメージが MTP 経由でデバイスにコピーされたときに通知を受け取る方法
ギャラリーのようなアプリを書いています。
イメージが MTP 経由でデバイスにコピーされたときに通知を受け取りたいです。
メディア スキャナの終了アクションをリッスンするブロードキャスト レシーバを登録しようとしましたが、呼び出されませんでした。AndroidManifest.xml に登録するか、Java コードに登録しようとしましたが、どちらも機能しません。
または以下のようにJAVAコードを使用する
上記のいずれも機能しません。
私のコードの何が問題なのですか? 新しい画像がコピーされるたびに、ギャラリー アプリに表示されることがわかります。コンテンツ オブザーバーを使用してメディア ストア データベースを監視している可能性がありますが、これは望ましくありません。
新しいイメージが MTP 経由でデバイス ストレージに追加されたときに通知を受け取りたいだけです。メディア スキャナによって実行される必要があるメディア ストアに追加されるため、アプリがブロードキャスト インテントをキャプチャできないのはなぜですか? これでも正しくない場合は、タイトルとして投稿した答えを知りたいです。
android - ギャラリーのサムネイルが更新されていません
だからここにシナリオがあります
フォルダーを反復処理し、すべての画像を別の画像セットに置き換えます。
私が期待すること: サムネイルだけでなく、ギャラリーでも画像が更新されます。
得られるもの : ギャラリーを開くと、古い画像のサムネイルがまだ残っています。画像を開くと、その画像の置き換えられたバージョンが表示されます。さらに奇妙なことに、いくつかの画像を開くと、以前の元の画像がすばやく点滅し、その後に置き換えられたバージョンが表示されます。その写真を拡大すると、「驚き」、古い写真です。もう一度(注:これは一部の画像のみです。すべてではありません)。ただし、すべての画像のサムネイルは更新されていません。
10 分ほど待つと、すべての画像が更新され、古い元の画像の痕跡がなくなりました。
瞬時に実行しない理由はわかりません。
こちらの指示にも従いました。しかし、同じ問題が続きます。フォルダー全体のスキャンをトリガーする最新の API では、システムがそれを行う以外にフォルダー全体をスキャンすることはできません。
マイコード
android - MediaStore android で画像の名前を変更する
で画像の名前を変更するとfile.renameTo(file)
、ギャラリーで灰色になり、使用できなくなります。画像を再スキャンするためにあらゆる種類のインテントを試してみましたが、最終的には希望がありませんでした。古いバージョンで動作するものもあれば、まったく機能しないものもあるため、 を更新しようとしてMediaStore
いますが、その方法がわかりません。
これが私のコードの一部です
これは私の初期のアプローチの1つでした
もう一つ
これは19より前では機能しますが、キットカットでは機能しません
これは MediaStore のものです
このメソッドは、logcat でこの致命的ではない例外をスローします
07-04 02:37:18.448: W/MediaProvider(2947): java.lang.NumberFormatException: 無効な長さ:「メディア」 07-04 02:37:18.448: W/MediaProvider(2947): java.lang.Long で.invalidLong(Long.java:124) 07-04 02:37:18.448: W/MediaProvider(2947): java.lang.Long.parse(Long.java:361) 07-04 02:37:18.448: W /MediaProvider(2947): java.lang.Long.parseLong(Long.java:352) 07-04 02:37:18.448: W/MediaProvider(2947): java.lang.Long.parseLong(Long.java: 318) 07-04 02:37:18.448: W/MediaProvider(2947): android.content.ContentUris.parseId(ContentUris.java:86) 07-04 02:37:18.448: W/MediaProvider(2947): でcom.android.providers.media.MediaThumbRequest.(MediaThumbRequest.java:93) 07-04 02:37:18.448: W/MediaProvider(2947): com.android.providers.media.MediaProvider.requestMediaThumbnail(MediaProvider.java:3742) 07-04 02:37:18.448: W/MediaProvider(2947): com.android.providers.media.MediaProvider.update(MediaProvider.java:4353) 07-04 02:37:18.448: W/ MediaProvider(2947): android.content.ContentProvider$Transport.update(ContentProvider.java:287) 07-04 02:37:18.448: W/MediaProvider(2947): android.content.ContentProviderNative.onTransact(ContentProviderNative.java) :215) 07-04 02:37:18.448: W/MediaProvider (2947): android.os.Binder.execTransact (Binder.java:404) でContentProviderNative.onTransact (ContentProviderNative.java:215) 07-04 02:37:18.448: W/MediaProvider (2947): android.os.Binder.execTransact (Binder.java:404) でContentProviderNative.onTransact (ContentProviderNative.java:215) 07-04 02:37:18.448: W/MediaProvider (2947): android.os.Binder.execTransact (Binder.java:404) で
編集:これができると確信しています。メディアファイルの名前を変更または追加すると、ESファイルエクスプローラーを使用してそのメディアを含むフォルダーのパスを変更すると、それらがギャラリーに表示され、メディアストアに追加されるため、メディアが多い場合はサムネイルを再生成するのに時間がかかりますそのフォルダに。ちなみに、画像ファイルの名前を変更するときにlogcatを監視します。Media Provider object removed
次に、art
ビットマップの作成に関するタグが付いたlogcatがいくつかあります。これを行う唯一の方法は、MediaStoreを新しいデータとビットマップで更新することだと確信しています。以前のデータを見つけて削除し、新しいデータMediaStore
を追加する方法は? MediaStore から削除すると、そのファイルがディスクから削除されますか?
前もって感謝します