2012年12月24日月曜日

Android (4.0.4)のギャラリーとメディアストレージ

よく聞かれるのでメモ。
この情報は無保証、各自の責任でご利用ください。




ギャラリーがおかしくなった場合、ギャラリーの更新だけでは正常に戻らない。

コンテンツマネージャを開いて「アプリケーション設定」の「情報更新」によってそれらが改善される。


それで正常に戻らない場合は、ギャラリー等のキャッシュのクリアを行う必要があるが、それだけでは正常に戻らない。


メディアストレージサービスのキャッシュを削除し、再起動する必要がある。
(再起動は任意。各種データが使用中である可能性もあるので再起動を推奨する)

さらに、写真などがたくさんある場合は、メディアストレージサービスの処理が完了するまで数十分~1時間程度かかる。

その間、ギャラリーにアクセスしても写真が表示されなかったり、一部の写真しか表示されなかったりすると思うが、メディアストレージサービスの処理が完了すれば、きちんと表示されるはず。


手順としては、メディアストレージサービスを一旦無効化したほうが良いと思う。
勝手に動き出してしまうので整合性に問題がでてもおかしくない。
(ギャラリー等がメディアストレージサービスを参照する前に、ギャラリー等のデータ消去を行う必要がある)

(1)「端末設定」の「アプリケーション」から「メディアストレージサービス」を無効にして、キャッシュをクリアする。
(2)以下のもののデータを「端末設定」の「アプリケーション」からデータ消去またはキャッシュをクリアする
・おまかせアルバム (sharp製のみかもしれない)
・ギャラリー
・音楽・動画
・コンテンツマネージャー
(3)再起動
(4)メディアストレージサービスを有効にする。
(5)android.process.mediaが落ち着くまで待つ。
(数十分以上待たねばならないので、電源に接続しておいたほうがよい)

これによって写真などのファイル自体が削除されるという事は恐らく無い。
消えたという報告があるのは、他の事情な気がする。
(私はソースを見て言っているわけではないのでその辺は各自の責任で。)

写真のサムネイルは存在していたが、写真の実体であるファイルのほうが既に削除済みで合ったというようなものは失われる。
こういう状態の端末もしばしばある。

処理中、端末左上の通知エリアに更新中のアイコンが出る。
メディアストレージサービスの作業が完了したかどうかは、そのアイコンが消えたかどうかで判断できる。

または、その他の設定 - 開発者向けオプション - CPU使用状況を表示で

android.process.media

が上位から居なくなれば完了したと言える。
アイコンが表示されない場合もあるので、プロセスの状態を見たほうが確実。

(ちなみにタスク一覧表示系のアプリでは表示されない場合がある)

ちなみに .nomedia が有効に働かなくなった場合も、この方法でメディアストレージサービスの情報をゼロから再構築してやれば正常に機能する。

一旦、この作業を行えばしばらくは安定するはず。


メディアストレージサービスに依存しないアプリで写真の削除などを行った場合、メディアストレージサービス側がそれに追従しない場合が多々ある。

QuickPic 等はメディアストレージサービスの処理を呼び出してくれているように思うが、やってないアプリも多数あるので不整合が発生する。


とりあえず、コンテンツマネージャの「情報更新」、それで駄目ならキャッシュの再構築という感じか。

以上。

0 件のコメント:

コメントを投稿