2017-01-07 12 views
0

ビデオパスがあります。このパスを使用してビデオでビデオを読み込むことができます。ファイルパスからビデオ情報を取得

ここで私はdbからいくつかのビデオ情報が必要ですが、私のCursorは常にnullです。 以下は私のコードです。

String videoPath=Uri.fromFile(new File("/storage/emulated/0/Android/data/files/1483767006415.mp4") 
    final String[] projection = new String[]{MediaStore.Video.Media._ID, MediaStore.Video.Media.DISPLAY_NAME, MediaStore.Video.Media.DATA, 
      MediaStore.Video.Media.DURATION}; 
    CursorLoader loader = new CursorLoader(getActivity(), contentUri, projection, null, null, null); 
    Cursor cursor = loader.loadInBackground(); 
    if (cursor != null && cursor.moveToFirst()) { 
     long id = cursor.getLong(cursor.getColumnIndex(projection[0])); 
     String name = cursor.getString(cursor.getColumnIndex(projection[1])); 
     String path = cursor.getString(cursor.getColumnIndex(projection[2])); 
     long duration = cursor.getLong(cursor.getColumnIndex(projection[3])); 
     cursor.close(); 
     return new ImageObject(id, name, path, false, MEDIA_TYPE_VIDEO, duration); 
    } 

uriが適切でないようです。

ありがとうございました。

+0

このようにしてください。それはあなたのために働くかもしれませんhttp://stackoverflow.com/questions/13613443/android-mediastore-video-query-is-returning-null – Gautam

+0

@ Gautam:nope。動いていない。私はこのリンクをチェックした。 – Beena

答えて

0

最後に答えが得られました。 問題が私のURIにありました。動画IDはURIに追加されませんでした。だから私は最初にビデオIDを取得し、次にcreatedURIを取得することができました。このURIを使用した後、私はすべての情報を得ることができました。以下は同じコードです。

Uri mainUri; 
    Cursor cursor1 = getContentResolver().query(
      MediaStore.Video.Media.EXTERNAL_CONTENT_URI, 
      new String[]{MediaStore.Video.Media._ID}, 
      MediaStore.Video.Media.DATA + "=? ", 
      new String[]{pathMain}, null); 
    if (cursor1 != null && cursor1.moveToFirst()) { 
     int id = cursor1.getInt(cursor1.getColumnIndex(MediaStore.MediaColumns._ID)); 
     cursor1.close(); 
     mainUri = Uri.withAppendedPath(MediaStore.Video.Media.EXTERNAL_CONTENT_URI, "" + id); 
    } else { 
     ContentValues values = new ContentValues(); 
     values.put(MediaStore.Video.Media.DATA, pathMain); 
     mainUri = getContentResolver().insert(
       MediaStore.Video.Media.EXTERNAL_CONTENT_URI, values); 

    } 
    final String[] projection = new String[]{MediaStore.Video.Media._ID, MediaStore.Video.Media.DISPLAY_NAME, MediaStore.Video.Media.DATA, 
      MediaStore.Video.Media.DURATION}; 
    String selection = MediaStore.Video.Media.DATA + "=?"; 
    String selectionArgs[] = {pathMain}; 
    CursorLoader loader = new CursorLoader(getActivity(), mainUri, projection, selection, selectionArgs, null); 
    Cursor cursor = loader.loadInBackground(); 
    if (cursor != null && cursor.moveToFirst()) { 

     long id = cursor.getLong(cursor.getColumnIndex(projection[0])); 
     String name = cursor.getString(cursor.getColumnIndex(projection[1])); 
     String path = cursor.getString(cursor.getColumnIndex(projection[2])); 
     long duration = cursor.getLong(cursor.getColumnIndex(projection[3])); 
     cursor.close(); 
     return new ImageObject(id, name, path, false, MEDIA_TYPE_VIDEO, duration); 

    } 
関連する問題