Доступ до зовнішнього сховища – РОЗРОБКА ІГОР ДЛЯ ОС ANDROID

Хоча ресурси прекрасно підходять для зберігання зображень і звуків нашого застосування, іноді необхідно зберігати інформацію і пізніше завантажувати її знову Простий приклад – робота з таблицею кращих результатів

Android пропонує різні способи для реалізації цього ви можете використовувати загальні налаштування програми, маленьку базу даних SQLite і т д У всіх цих можливостей є спільна риса – вони не обробляють великі двійкові файли Для чого нам це може знадобитися Хоча ми можемо вказати системі, щоб вона встановлювала додаток у зовнішнє сховище (і таким чином не витрачати память внутрішнього сховища), це буде працювати тільки у версіях Android починаючи з 22 У більш старих версіях ОС всі дані програми будуть зберігатися у внутрішній памяті пристрою Теоретично ми могли б включити код нашого додатки в АРК-файл і завантажувати всі ресурси з сервера на карту памяті SD при першому запуску програми Багато відомих ігри для Android так і роблять

Існують і інші сценарії, в яких нам необхідний доступ до карти памяті (яка, загалом-то, є синонімом терміна зовнішнє сховище для сучасних пристроїв) Ми могли б дозволити нашим користувачам створювати власні рівні у внутрішньому редакторі Після створення нам буде необхідно їх десь зберігати, і SD-карта прекрасно для цього підходить Отже, ми не будемо використовувати незвичайні механізми, пропоновані Android для зберігання налаштувань програми, і розглянемо замість цього механізм реалізації читання і запису файлів на карті SD

Перше, що нам необхідно зробити, – запросити дозвіл на доступ до зовнішнього сховища Це робиться у файлі маніфесту за допомогою вже розглянутого нами елемента

Далі потрібно перевірити, чи доступне нам у даний момент зовнішнє сховище Наприклад, при роботі з AVD у вас є можливість обійтися без емулювання наявності картки памяті – тоді додаток нічого не зможе туди записувати Інша причина не отримувати доступ до SD-карті – його зайнятість іншим процесом (наприклад, перегляду його користувачем через USB) Ось так ми перевіряємо стан карти памяті

У результаті ми отримуємо рядок Клас Environment визначає набір констант, одна з яких називається Environment MEDI AMOUNTED (її значення – теж рядок) Якщо вищевказаний метод повертає саме цю константу, це означає, що ми маємо повний доступ (читання і запис) до зовнішнього сховища Зверніть увагу – насправді вам необхідно використовувати метод equals для порівняння двох рядків оператор рівності в таких випадках не завжди дає вірні результати

Отже, ми дізналися, що володіємо повним доступом до зовнішнього сховища, і тепер нам необхідно отримати назву його кореневої директорії Якщо нам потрібен доступ до певного файлу, шлях до нього необхідно визначати щодо кореневого каталогу Для цього ми застосуємо інший статичний метод класу Environment:

З цього моменту ми можемо використовувати стандартні Java-класи для читання і запису файлів Створимо невеликий приклад, який реалізує запис файлу на карту памяті, його читання, демонстрацію його вмісту в TextView і видалення його з карти У лістингу 48 показаний початковий код для цього

Лістинг 48 Активність ExternalStorageTest package combadogi сandroi dgames

Спочатку ми перевіряємо фізичну доступність SD-карти (якщо перевірка не вдалася, на цьому все і закінчується) Далі отримуємо кореневої каталог сховища і створюємо новий екземпляр обєкта File, який вказує на файл, який ми створимо в наступному вираженні Метод writeTextFi 1е використовує стандартні Java-класи введення-виведення для реалізації наших цілей Якщо файл ще не існує, метод створить її в іншому випадку він перепише існуючий Після успішного запису тексту у файл на карті ми знову його зчитуємо звідти і встановлюємо в якості вмісту TextVi ew Фінальний крок – видалення файлу зі зовнішнього сховища Всі дії відбуваються з дотриманням необхідних запобіжних заходів, завдяки яким повідомлення про проблеми також виводяться в TextView Малюнок 411 демонструє висновок активності

З цього уроку необхідно витягти наступні моменти

Чи не працюйте з файлами, які вам не належать Користувачі дуже розгніваються, якщо ви видалите фотографії з їх останньої вечірки

Завжди перевіряйте доступність зовнішнього сховища

Не звязуйтеся із службовими файлами в зовнішньому сховищі Я серйозно

Рис 411 Послання від веселого Роджера

Побачивши, як легко видалити всі файли з зовнішнього сховища, ви повинні подумати двічі, створюючи і розміщуючи на Android Market додаток, запитуюча доступ до карти SD, – адже після інсталяції воно буде мати повний доступ до всіх файлів

Обробка звуку

Android пропонує прості в застосуванні API для відтворення звукових ефектів і музичних файлів – якраз те, що нам потрібно для написання гри Розглянемо їх

Джерело: Mario Zechner / Маріо Цехнер, «Програмування ігор під Android», пров Єгор Сидорович, Євген зазноби, Видавництво «Пітер»

Схожі статті:


Сподобалася стаття? Ви можете залишити відгук або підписатися на RSS , щоб автоматично отримувати інформацію про нові статтях.

Коментарів поки що немає.

Ваш отзыв

Поділ на параграфи відбувається автоматично, адреса електронної пошти ніколи не буде опублікований, допустимий HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

*

*