Comment obtenir la liste des fichiers vidéo dans un dossier spécifique dans android?
Comment obtenir la liste des fichiers vidéo stockés dans un dossier spécifique en utilisant mediastore? actuellement, je suis en utilisant ce code
package com.example.videolisttest;
import android.app.Activity;
import android.content.Context;
import android.database.Cursor;
import android.os.Bundle;
import android.provider.MediaStore;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.BaseAdapter;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.Toast;
public class MainActivity extends Activity {
private Cursor videocursor;
private int video_column_index;
ListView videolist;
int count;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
init_phone_video_grid();
}
private void init_phone_video_grid() {
System.gc();
String[] proj = { MediaStore.Video.Media._ID,
MediaStore.Video.Media.DATA,
MediaStore.Video.Media.DISPLAY_NAME,
MediaStore.Video.Media.SIZE };
videocursor = managedQuery(MediaStore.Video.Media.EXTERNAL_CONTENT_URI,
proj, null, null, null);
count = videocursor.getCount();
videolist = (ListView) findViewById(R.id.PhoneVideoList);
videolist.setAdapter(new VideoAdapter(getApplicationContext()));
videolist.setOnItemClickListener(videogridlistener);
}
private OnItemClickListener videogridlistener = new OnItemClickListener() {
public void onItemClick(AdapterView parent, View v, int position,
long id) {
System.gc();
video_column_index = videocursor
.getColumnIndexOrThrow(MediaStore.Video.Media.DATA);
videocursor.moveToPosition(position);
String filename = videocursor.getString(video_column_index);
/* Intent intent = new Intent(MainActivity.this, ViewVideo.class);
intent.putExtra("videofilename", filename);
startActivity(intent);*/
Toast.makeText(getApplicationContext(), filename, Toast.LENGTH_SHORT).show();
}
};
public class VideoAdapter extends BaseAdapter {
private Context vContext;
public VideoAdapter(Context c) {
vContext = c;
}
public int getCount() {
return count;
}
public Object getItem(int position) {
return position;
}
public long getItemId(int position) {
return position;
}
public View getView(int position, View convertView, ViewGroup parent) {
System.gc();
TextView tv = new TextView(vContext.getApplicationContext());
String id = null;
if (convertView == null) {
video_column_index = videocursor
.getColumnIndexOrThrow(MediaStore.Video.Media.DISPLAY_NAME);
videocursor.moveToPosition(position);
id = videocursor.getString(video_column_index);
video_column_index = videocursor
.getColumnIndexOrThrow(MediaStore.Video.Media.SIZE);
videocursor.moveToPosition(position);
id += " Size(KB):" + videocursor.getString(video_column_index);
tv.setText(id);
} else
tv = (TextView) convertView;
return tv;
}
}
}
Mais cette méthode d'analyse l'ensemble de la sdcard. je veux scanner un dossier spécifique. je ne veux pas utiliser le filefilter méthode. merci de partager tout méthode à l'aide de mediastore.
OriginalL'auteur Sujith Manjavana | 2013-11-15
Vous devez vous connecter pour publier un commentaire.
vous pouvez utiliser ce code pour obtenir des vidéos de dossier spécifique:
Sa fonctionne pour moi comme un charme.
String[] paramètres = { MediaStore.Vidéo.Médias._ID} et comme l'état pour sql où vous pouvez spécifier l'emplacement de données multimédia.Desc est pour la première à afficher dans la liste.
Mais nous ne pouvons pas faire confiance à ce, parce que c'est un mécanisme de recherche. Si vous avez deux répertoire avec presque le même nom, il va fusionner les résultats.
J'ai utilisé le même code ci-dessus et a remplacé le Nom du Dossier . où String[] paramètres = {MediaStore.Les Images.Médias._ID, MediaStore.Les Images.Médias.BUCKET_ID, MediaStore.Les Images.Médias.BUCKET_DISPLAY_NAME, MediaStore.Les Images.Médias.DONNÉES}; Mais j'en suis arriver la taille du curseur à 0
Le code ci-Dessus ne fonctionne pas si un dossier a été créé par programmation. En utilisant le Fichier mediaStorageDir = new File("/storage/emulated/0/MediaRecorderLocation");
OriginalL'auteur Deepak Jangir
Cette fonction est récursive, et de recherche de vidéos paramètre dans une liste, les vidéos sont recherchées à partir d'un especified dossier, si tu veux de recherche de vidéos sur la carte sd, utilisez:
Cette réponse pourrait vous aider: stackoverflow.com/questions/10503840/...
OriginalL'auteur Leonardo Sapuy
Si vous connaissez le dossier spécifique, utilisez:
OriginalL'auteur jasonflaherty