#java #android
#java #Android
Вопрос:
Я работаю над приложением для Android, пожалуйста, скажите мне, как показать только папку с видео? этот код показывает всю папку на моем устройстве, но я хочу показать только папку с видео. Как это сделать?
вот мой код
public class MainActivity extends ListActivity {
private List<String> listfile = new ArrayList<String>();
@RequiresApi(api = Build.VERSION_CODES.KITKAT)
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// setContentView(R.layout.activity_main);
File fileroot = new File(Environment.getExternalStorageDirectory().getAbsolutePath());
File[] files = fileroot.listFiles();
FileFilter fileFilter = new FileFilter() {
public boolean accept(File file) {
return file.isDirectory();
}
};
files = fileroot.listFiles(fileFilter);
System.out.println(files.length);
if (files.length == 0) {
//
} else {
for (int i = 0; i < files.length; i ) {
listfile.add(files[i].getName());
}
ArrayAdapter <String> dis = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, listfile);
setListAdapter(dis);
}
}
}
Комментарии:
1. Вы должны заглянуть в каждую папку, чтобы увидеть, содержит ли она видеофайлы.
2. Я думаю, что видео может быть в любой папке, несмотря на имя каталога. Итак, вам нужно проверить каждую папку на наличие формата видеофайла. Если вы получаете один или несколько файлов, включите эту папку, в противном случае просто исключите ее и перейдите к следующему..
Ответ №1:
В Android нет простого способа сделать это. Ошибочно предполагать, что на конкретном устройстве будет только один каталог videos/
. Даже если она есть, вы не можете предположить, что видеофайлы будут храниться там и нигде больше.
Если вы действительно хотите сканировать только один каталог, то простой способ — запросить у пользователя местоположение при первом запуске вашего приложения и сохранить выбранное местоположение для дальнейшего использования. Многие приложения для Android, которые обрабатывают мультимедиа, на самом деле используют этот подход, хотя они могут позволить пользователю выбирать несколько местоположений.
Если вы хотите перечислить видеофайлы, а не содержимое определенного каталога, то способ сделать это — запросить Android Media Store. Это хранилище обновляется (или должно обновляться) всякий раз, когда файлы передаются на устройство. Каждый файл помечается различными атрибутами в соответствии с различными методами проверки, встроенными в Android. Современные версии Android довольно хорошо распознают видеофайлы, хотя это не всегда так.
Чтобы использовать хранилище мультимедиа, вы должны выполнить запрос ContentResolver
для определенного Context
, проверяя наличие флага, который указывает, что содержимое является видео. Затем вы повторяете результаты, извлекая различные фрагменты необходимой вам информации.
Честно говоря, я не использовал Android Media Store для видео, хотя у меня есть для аудио. Я думаю, что основные принципы будут теми же. У меня есть несколько примеров кода для аудио запросов здесь, если это поможет: