2017-09-05 13 views
2

私は継続時間を得るために答えをthisでしたが、それは私のために働いていません。問題が何であるか教えてもらえますか?MediaStoreからビデオの長さを取得する方法は?

何か助けていただければ幸いです。

Uri uri = MediaStore.Video.Media.EXTERNAL_CONTENT_URI; 
      String[] columns = {MediaStore.Video.VideoColumns.DURATION}; 
      String selection = MediaStore.Video.VideoColumns.DATA + "=?"; 
      String selectionArgs[] = {"/data/data/com.test.test/files/video1.mp4"}; 
      Cursor cursor = context.getContentResolver().query(uri, columns, selection, selectionArgs, null); 
      if (cursor != null) { 
       if (cursor.moveToFirst()) { 
        String duration = cursor.getString(cursor.getColumnIndex(MediaStore.Video.VideoColumns.DURATION)); 
       } 
       cursor.close(); 
      } 
+1

ビデオがデータベースに存在しないか、何らかの理由でDATA列があなたのパスに正確に一致しません。何が起こっているのかを理解するために、選択とselectionArgsを削除して、 'MediaStore.Video.Media.EXTERNAL_CONTENT_URI'のすべてのエントリを取得するようにしてください。 DATA列と場合によってはIDを含むように列を変更し、DatabaseUtils.dumpCursorを使用して内容をlogcatに書き込むことができます。 – cwbowron

+0

@cwbowron thxさんのヘルプ。 –

答えて

1

:それはこのようになりますメディアプレイヤーを使用している場合...

0

すでにビデオにU​​RIまたはファイルパスを持っていれば、MediaMetadataRetrieverクラスを使用する方が簡単かもしれません。メディアストアがわからないdevices.I内部と外部ストレージの両方で利用可能なすべてのメディアのためのメタデータが含まれているメディア・プロバイダである、しかし、あなたが使用しているパスがそうでないかもしれないです

MediaMetadataRetriever r = new MediaMetadataRetriever(); 
r.setDataSource(filePath); 
String durString = r.extractMetadata(MediaMetadataRetriever.METADATA_KEY_DURATION); 
int duration = Integer.parseInt(durString); 
+0

レスポンスのThxですが、実際にこのようにする必要があります。 –

関連する問題