К сожалению, не существует метода, вызвав который, можно было бы выяснить, какой каталог может использоваться внутри DCIM для хранения изображений с камеры. Однако доступна пара методов, которые сообщат, где находится корневой каталог карты SD. Первый из них — Environment. getExternalStorageDirectory — возвращает объект File, представляющий каталог верхнего уровня SD-карты. На устройствах с версиями Android, предшествующими., этим каталогом был, как правило, /sdcard, хотя и не на всех устройствах. Начиная с Android., большинство устройств имеют каталог /mnt/sdcard. И гораздо лучше воспользоваться этим методом Environment, чем предполагать, что вы знаете имя корневого каталога SD-карты. Второй метод обсуждается ниже.
Начиная с версии Android. (Froyo), в классе Environment появился ряд новых констант для нахождения каталогов, а также новый метод этого класса, предназначенный для тех же целей. Ранее SD-карты предоставляли определенную степень свободы, не имея стандартизированных имен каталогов кроме DCIM.
В Froyo появилось несколько стандартизированных имен каталогов, которые описаны в табл. В третьей колонке этой таблицы указано имя каталога, используемое в эмуляторе, при этом корневым каталогом SD-карты, скорее всего, будет /mnt/sdcard (но может варьироваться в зависимости от устройства). Вариации в каталогах — причина, по которой всегда следует применять метод Environment для нахождения нужного каталога на SD-карте.
Новым методом для нахождения каталогов является Environment.getExternal StoragePublicDirectory(String type), где параметр type принимает значение одной из констант, перечисленных в табл. Метод возвращает объект File, представляющий запрошенный каталог. Этот метод отсутствует в более старых устройствах (предшествовавших Froyo), но даже на более новых устройствах вы можете столкнуться с необходимостью учета отличий. Например, компания Samsung предлагает устройства с двумя SD-картами, так что этих методов недостаточно для нахождения всех внешних хранилищ.
И, наконец, несколько слов о безопасности. Чтобы приложение могло выполнять запись на SD-карту, http://www.дариано-порте.рф/ в файл манифеста должно быть добавлено следующее право:
Теперь, зная основы организации SD-карт, давайте займемся аудио.
Для начала посмотрим, как построить простое приложение, воспроизводящее MP-файл из Интернета ( ). Затем будет, как использовать метод setDataSource класса MediaPlayer для воспроизведения контента из файла.ark или SD-карты. Поскольку MediaPlayer — не единственный способ воспроизведения аудио контента, мы рассмотрим и класс SoundPool, а также классы JetPlayer, AsyncPlayer вместе с классом AudioTrack, предназначенным для работы с аудио на самом низком уровне. Затем мы обсудим некоторые недостатки класса MediaPlayer. Наконец, мы разберемся, как воспроизводить видео контент.
|