2017-01-07 3 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); 
    } 

Похоже, что ури не является правильным.

Спасибо.

+0

попробуйте этот способ. Это может сработать для вас http://stackoverflow.com/questions/13613443/android-mediastore-video-query-is-returning-null – Gautam

+0

@Gautam: нет. Это не работает. Я проверил эту ссылку. – Beena

ответ

0

Наконец-то получил ответ. Проблема была в моем URI. Идентификатор видео не был добавлен в URI. Поэтому мне удалось сначала получить идентификатор видео, а затем создатьURI. После использования этого 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); 

    } 
Смежные вопросы