제가 인텐트에 ACTION_VIDEO_CAPTURE 을 사용해서 비디오 촬영 한걸 sd카드에 저장을 합니다.
그리고 콘텐트 프로바이더의 MEDIA_STORE 인가요 그걸 가지고
SD카드의 비디오 파일들을 쿼리를 통해 가져와서 리스트뷰에 나타내는데요.
아무리 해도 위에서 제가 만든 비디오 촬영한 파일은 리스트에 뜨질 않네요..
그냥 내장 카메라 APP으로 비디오 촬영한 파일은 바로 뜨는데
잘안되서 코드를 올려봅니다..
private File file = new File(
Environment.getExternalStorageDirectory(),"video.mp4");
-----------------------------------------------------------------------------------------------------
Intent intent = new Intent(
android.provider.MediaStore.ACTION_VIDEO_CAPTURE);
// // 저장될 위치 설정
intent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(file));
startActivityForResult(intent, VIDEO_CAPUTRE_REQUEST);
이제 이부분이 비디오 촬영을 하는 부분인데요. 위에보시면 SD카드에 video.mp4 파일로 저장을 해놓고
videoView 를 통해서 보여주는것이 하나있구요.
private ArrayList<FileItem> mVideoList;
private VideoView mVideoView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.videolist);
mVideoView = (VideoView)findViewById(R.id.videoView);
mVideoList = loadVideoFiles();
ArrayAdapter<FileItem> adapter = new ArrayAdapter<FileItem>(this,
android.R.layout.simple_list_item_1, mVideoList);
setListAdapter(adapter);
}
private ArrayList<FileItem> loadVideoFiles(){
ArrayList<FileItem> items = new ArrayList<FileItem>();
String[] proj = new String[]{
MediaStore.Video.Media._ID,
MediaStore.Video.Media.DISPLAY_NAME,
MediaStore.Video.Media.DATA};
Cursor cursor = managedQuery(
MediaStore.Video.Media.EXTERNAL_CONTENT_URI, proj,
null, null, null);
int indexName = cursor.getColumnIndex(MediaStore.Video.Media.DISPLAY_NAME);
int indexData = cursor.getColumnIndex(MediaStore.Video.Media.DATA);
if(cursor.moveToFirst()){
do{
items.add(new FileItem(cursor.getString(indexName),cursor.getString(indexData)));
}while(cursor.moveToNext());
}
cursor.close();
return items;
}
이런식으로 SD카드의 비디오 파일들을 모두 가져와서 어댑터에 담는 과정을 거칩니다.
제가 혹시나 라이프사이클이 문제인가하고 onCreate 에서 어댑터나 어레이리스트에 데이터들을 담는 과정때문에 안되는것 같에서
onResume에도 구현을 해봤는데 도무지 위에 비디오 촬영을 한 파일은 목록에 나오질 않더라구요.
그렇다고 sd카드에 저장이 안된것도 아니고 저장도 잘됬고 한데
유독 저 비디오촬영으로 저장된 파일은 리스트에 나오질 않는다는 것입니다.
근데 웃긴건 한참 지나고 자세히는 모르겠습니다만 어플을 삭제하거나 강제종료한 후에 다시 켰을때
리스트에 뜨는경우가 있더라구요.. 도대체 이유를 모르겠네요..




비디오 촬영하신 후에 미디어 스캐닝을 실행하셔야 할것 같은데..
그래야 MediaStore DB에 나타나게 됩니다~