Просто попробую ответить на ваш вопрос, но вы, вероятно, сможете определить тип носителя по расширению файла - что, я думаю, MediaFile может вам помочь. Что касается продолжительности, я считаю, что метод getDuration () на самом деле является собственным вызовом, поэтому я не знаю, сможете ли вы сделать это намного быстрее.