特定のアプリケーションでのみSDカードから読み取られる画像があるので、画像ギャラリーから非表示にします。.nomediaファイルを入れましたが、このファイルは無視され、画像はまだギャラリーに表示されています。「。」で入れました。初めに。まだ動作していません。何か案は?
9 に答える
.nomedia
それまでは正常に機能していた Android 4.0 を使用していると思います。この問題に関する AOSPバグ レポートでは、次のように説明されています。
MediaScanner
Android 4.0 では、ファイルに遭遇したときに既にインデックス付けされたファイルを忘れる.nomedia
ことはできませんが、最初のパスに存在する場合はそれを尊重します。したがって、回避策は単にディレクトリの名前を変更することです。もちろん、必要に応じて、次のスキャン後に名前を元に戻すことができます。
更新: 完全な解決策は、ディレクトリの名前を変更した後に実際にメディア スキャンを強制することだと思います。試したことはありませんが、次のような方法でうまくいくはずです。
sendBroadcast(new Intent(Intent.ACTION_MEDIA_MOUNTED, Uri.parse("file://" +
Environment.getExternalStorageDirectory())));
.nomedia バグは正しく、既存のイメージ フォルダーに追加できます。
フォルダの名前を変更して.nomediaファイルを作成した後、ギャラリーを強制的に再インデックス化することができます.
携帯電話で動作することを確認するために、もう一度やり直しました。アンドロイド 4.0.4。
ここに私が見つけたものがあります:
ただし、その方法を少し変更します。
- SDRescanアプリをダウンロードしてインストールする
- ギャラリー アプリのデータを消去する
- Media Storage アプリのデータを消去する
- 手順 1 でダウンロードした SDRescan アプリを開く
SDCard を再スキャンし、この時点で .nomedia ファイルを含むすべてのディレクトリを無視する必要があります。
私のメモリーカードには、メディアスキャナーを圧倒する何千枚もの写真があります。次に、メモリカードのルートフォルダで、「RootFolder」から「.RootFolder」に名前を変更しました
隠しディレクトリになり、それ以上の.nomediaを使用しない
これを試して。
この.nomedia
ファイルは (Android 4.0 の場合) 治癒ではなく予防であり、バグです。ファイルが.nomedia
あり、画像が既に含まれている場合でも、Gallery は画像を検索します。
画像を入れる前に.nomedia
ファイルを作成する必要があります。
編集: ドットで始まるすべてのフォルダーはスキャンされません (非表示のため)。
ギャラリーはそれほど頻繁に更新されず、一部のサムネイルはまだ表示されています。このためには、電話を再起動するか、次のコードでギャラリーをプログラムで更新する必要があります。
/**
* This method is must to reflect changes on gallery, if some file is
* deleted or moved, <b> no updation is shown on gallery till phone is
* rebooted </b> or <i>till this method UpdateGallery(Activity activity) is
* called</i> UpdateGallery
*/
public static void UpdateGallery(Activity activity) {
activity.sendBroadcast(new Intent(Intent.ACTION_MEDIA_MOUNTED, Uri
.parse("file://" + Environment.getExternalStorageDirectory())));
}
APK 拡張 Zip ライブラリ (API レベル 5 以上が必要) を使用して、Zip アーカイブの一部として SD カードにインストールするファイルを読み取ることを検討してください。このライブラリの説明は、次の場所にあります。
http://developer.android.com/guide/market/expansion-files.html#ZipLib
おそらく、SD カードの ZIP アーカイブに保存されているファイルは、ギャラリーでは表示されません。
さらに、アプリが SD カードから読み取る(書き込みはしない)画像があり、それを自分のアプリでのみ使用でき、アプリのインストールまたは更新時に配信できる場合、新しい Google Play 機能を利用して、アプリのインストール時にそれらをアプリの一部として組み込むことは理にかなっています。
画像が大きすぎて APK ファイルに収まらないため、画像を SD カードに保存していると思います (バッファリングの問題により、特定のデバイスで実際に使用されているサイズよりもさらに小さい 50MB のサイズ制限を考えると)。
その場合、Google Play は 2012 年 3 月 5 日現在、それぞれ最大 2 ギガバイトの「拡張ファイル」を 2 つまで (アプリへの) 添付をサポートしていると考えることができます。APK の最大容量は引き続き 50 MB ですが、拡張ファイルにより、使用可能な合計ストレージが 4 GB を超えます。これらの拡張ファイルは Google によって提供され、アプリ固有の特定の SD カード フォルダーに保持され、ダウンローダー ライブラリによって提供される API を使用してアクセスできます (API レベル 5 以上が必要です)。
この変更に関する Google の発表は次のとおりです。
http://android-developers.blogspot.in/2012/03/android-apps-break-50mb-barrier.html
そして、ここに施設の詳細な説明があります:
http://developer.android.com/guide/market/expansion-files.html
この機能は新しいものですが、ライブラリは以前の API レベルで使用するために Android SDK で提供されていることに注意してください。たとえば、私のインストールでは、ここに API-8 バージョンがあります。
<Android SDK base folder>\extras\google\play_apk_expansion\
同じフォルダーの zip_file サブフォルダーには、前述の APK 拡張 Zip ライブラリが含まれています。
私はまだこの機能を個人的に使用したことがないので、引用された参考文献のみに基づいてこれを説明しています.