TB-LAB BLOG

坪川研究室ブログです!適当に更新します!

Androidアプリで撮った写真や動画を反映させる

なんかAndroidアプリで動画に関するアプリケーション作っているのですが,Galleryに反映させるようにするにはある記述を書かないとリアルタイムに反映されません.
わかりやすいサイトがちょっと少なかったのでまとめがてら...
今回はクラスにしておきました.(クラス化する必要もないけどね)

package test.preview.movie;

import android.content.Context;
import android.media.MediaScannerConnection;
import android.media.MediaScannerConnection.OnScanCompletedListener;
import android.net.Uri;
import android.util.Log;

public class MediaGalleryReflect {
    public MediaGalleryReflect(Context context, String[] paths, String[] mineType, String fileName) {
        OnScanCompletedListener mScanCompletedListener = new OnScanCompletedListener() {
            @Override
            public void onScanCompleted(String path, Uri uri) {
                Log.d("MediaScannerConnection", "-> Scanned path = " + path + ":");
                Log.d("MediaScannerConnection", "-> uri = " + uri);
            }
        };
        MediaScannerConnection.scanFile(context, paths, mineType,
                mScanCompletedListener);
    }
}

このクラスのオブジェクトを生成してください.

String[] paths = { Environment.getExternalStorageDirectory() + "/" + this.fileName };
String[] mineType = { "movie/mp4" };  //ここは自分が読み込ませたいTypeを記述するので各自調べて
new MediaGalleryReflect(this.context, paths, mineType, this.fileName);

基本的にはこれでpathが合ってればロードできます.
注意すべきことはcontextを場所で呼んであげることです.
context呼べない場所で使いたいんだけど!(つまり自分が作ったクラスとか)
そういう時はクラスのオブジェクトを生成する時に引数で渡すとかしてあげてください.
LogがLogCatとかに出力されてないときはスキャンされてませんので確認する必要があります.
pruneでした