Как сделать приложение для чтения книг
Всё больше пользователей отдают предпочтение электронным версиям книг. Это и понятно - вместо того, чтобы покупать толстые бумажные бестселлеры, полезные руководства или классические произведения, можно скачать их в цифровом варианте за пару секунд, не вставая с кресла. Да и читать с ноутбука, например, вполне удобно. Как правило, электронные книги идут в определенных форматах и чтобы их открыть, нужны специальные программы-читалки (ридеры). Хорошая читалка для Windows обладает многочисленными функциями, которые обеспечивают комфортное чтение с экрана без особой нагрузки на глаза. Ниже представлены программы для чтения книг с экрана компьютера. Рассмотрим же лучшие из них.
Вопросы:
Бесплатное приложение для чтения книг на компьютере, созданное разработчиками самого Microsoft. Поддерживает все популярные форматы (PDF, ePub, FB2). С Либерти вы сможете загружать чтиво прямо из SkyDrive или DropBox, а также получите доступ к большой онлайн-библиотеке Майкрософт. В ней представлена как платная, так и бесплатная литература. Особенно радует то, что в свободном доступе классика и бестселлеры.
Разработчики предусмотрели систему рекомендаций, которая отслеживает загружаемые и открываемые пользователем книги и предлагает что-то в таком же духе. Меню программки также позволяет создать свою библиотеку и структурировать каталог так, как будет удобно (по жанру, алфавиту, дате). Среди дополнительных возможностей стоит отметить переход к фрагментам текста, поиск слова или фразы, написание заметок, выбор шрифта и вариантов перелистывания.
Эта программа бесплатна для граждан СНГ. Работает на всей линейке Windows, поддерживает 73 языка и более 80 разнообразных скинов. Программа сразу же подкупает настраиваемым приятным интерфейсом и поддержкой огромного количества текстовых форматов.
Особое внимание разработчики приложения уделили защите зрения пользователей: функция сглаживания текста, настройка скроллинга, настраиваемое изменение скорости чтения, возможность чтения с большого расстояния - всё это присутствует. Предусмотрен «книжный» вариант чтения, а также очень полезные свойства – возможность чтения прямо из архивов и конвертацию в другие форматы. Хорошо реализован поиск – скорость достигает 30 страниц в секунду. Настройка программы даст возможность наладить работу по своему усмотрению. ICE Book Reader Professional на сегодняшний день является одной из лучших бесплатных программ для чтения.
Данная программа уникальна по нескольким показателям. Во-первых, она не требует установки и регистрации. Во-вторых, кроме чтения электронных текстов доступно создание и управление коллекциями - не только электронных книг, но и других файлов. Также пользователю предоставляется возможность переименования, перемещения и удаления файлов.
В настоящее время наиболее популярными и удобными способами чтения являются электронные книги. Их можно взять с собой куда угодно, они экономят бумагу, отображение текста в них можно настраивать так, как удобно читателю. По этим причинам появилось множество форматов электронных книг, основные из которых это EPUB, FB2 и MOBI. Всем известные DOC и TXT тоже являются форматами электронных книг, однако их возможности по сравнению с вышеуказанными весьма ограничены. У каждого из форматов есть свои преимущества, однако наиболее часто используемыми являются EPUB и FB2, причём второй популярен только у нас в России.
Одной из особенностей этих форматов является то, что для них нужна специальная программа, которая может работать с конкретным форматом. Поэтому в App Store или Google Play можно найти большое количество разнообразных читалок под все известные форматы. В этой статье мы попробуем написать свою собственную читалку электронных книг. Для этой цели мы воспользуемся специальной SDK от разработчиков FBReader, который доступен по следующей ссылке.
В сентябре этого года FBReader выпустили свой собственный SDK для Android, позволяющий создавать свои собственные читалки на его основе. FBReader SDK обладает большим функционалом, который включает в себя следующие возможности:
- Открытие любых файлов электронных книг (ePub, fb2, mobi, и так далее)
- Чтение метаданных из файла книги
- Особенности движка FBReader
- Возможность менять стиль текста книги
Кроме того, библиотека предоставляет и различные дополнительные возможности для реализации в приложениях, такие как:
- Выделение текста
- Закладки
- Поиск по тексту
- Оглавление
- Дополнительная навигация по тексту
- Поддержка сносок и гиперссылок
- Настройка яркости
Отдельно стоит отметить, что, хоть FBReader SDK и можно скачать с сайта бесплатно, после встраивания в приложение она будет работать в демо-режиме, который имеет полный функционал, но показывает только несколько первых страниц книги. Для того, чтобы получить полную версию библиотеки, нужно купить её на сайте разработчика и, следуя инструкциям, получить специальный ключ SDK, который затем добавляется в приложение.
В этой статье мы рассмотрим, как на основе FBReader SDK создать свою собственную читалку электронных книг и посмотрим её возможности.
Начнём с добавления SDK в свой проект. Для этого создадим новый проект с пустой активностью. В качестве минимального API укажем API 16.
В файле build.gradle модуля проекта добавим в блок allprojects ссылку для скачивания нужных нам библиотек.
Затем в файле build.gradle модуля приложения добавим зависимости с библиотеками в блок dependencies.
Библиотек, входящих в FBReader SDK довольно много, однако они разделены так, чтобы можно было подключать только те, которые нужны для конкретного случая.
В этом же файле в блок android добавим следующие строки, которые должны обеспечить успешную сборку проекта.
На сайте SDK разработчики также предоставляют исходный код различных компонентов, которые упрощают реализацию интерфейса. Скачаем его и добавим в проект. Для этого перенесём оттуда папку fbreader в папку своего проекта. После этого в файле settings.gradle пропишем эту папку и пути до нужных модулей.
Теперь добавим зависимости с ними в файле build.gradle модуля приложения.
Когда IDE пересоберёт проект, мы увидим добавленные модули в списке слева.
На этом подключение SDK завершено и можно приступать к непосредственно созданию приложения. В конце статьи у нас должна получиться простая читалка с двумя активностями, одна из которых будет отображать список электронных книг на устройстве, а вторая открывать выбранный файл.
Начнём с разметки. Для MainActivity добавим на экран компонент RecyclerView, который будет содержать собственно список файлов. Для этого добавим в файл layout/activity_main.xml следующий код.
Теперь инициализируем этот объект в коде активности. Откроем файл MainActivity.java и добавим следующий код.
Для того, чтобы работать с файлами, хранящимися на устройстве, нам потребуется запрашивать специальное разрешение. Добавим в манифест приложения AndroidManifest.xml следующие разрешения.
Начиная с API 23 это разрешение необходимо запрашивать у пользователя в рантайме. Для этого при запуске приложения будем проверять версию Android на устройстве и при необходимости отправлять пользователю запрос на получение разрешения.
Получить результат запроса можно, переопределив метод активности onRequestPermissionResult(). Если разрешение приложению было предоставлено, продолжаем дальнейшую работу.
В методе generateList() мы будем искать нужные файлы на устройстве и отображать их в списке приложения. Для этого создадим AsyncTask, который будет выполнять всю работу в отдельном потоке и возвращать готовый список с найденными файлами. Добавим следующий код в MainActivity.
Полученный результат нужно отобразить. Для этого нам понадобится адаптер для RecyclerView и модель, в которой будут храниться данные элементов списка. Создадим простой класс BookFile, в котором мы будем хранить имя файла и путь до него на устройстве.
Теперь нам нужен адаптер, в который мы будем загружать список. Добавим разметку для элемента списка, для этого создадим файл layout/file_list_item.xml и добавим в него следующий код.
Теперь создадим класс BooksAdapter, который будет наследовать от RecyclerView.Adapter<>. В нём нам нужно инициализировать элементы списка, загружая в них пути и имена файлов электронных книг. Таким образом, код адаптера будет выглядеть следующим образом.
Кроме того, между активностью и адаптером пробрасывается интерфейс, с помощью которого мы будем передавать в активность файл, который пользователь хочет открыть.
Вернёмся в главную активность. В методе generateList() мы запускаем AsyncTask и привязываем к нему слушатель, который должен вызывать метод onTaskCompleted() при завершении работы. В этом методе нам нужно составить список, отсортировать его по имени и передать в адаптер. Добавим сюда следующий код:
Теперь, запустив приложение, мы можем увидеть список файлов электронных книг, которые есть на устройстве.
Однако нам нужно этот файл открыть и прочитать, в этом нам и поможет FBReader SDK. Создадим новую активность, назовём её ReaderActivity. Теперь из скачанного исходного кода нам понадобится несколько классов. Откроем в папке с исходным кодом samples/extensions/src/main и скопируем себе в проект целиком папку res, за исключением res/layout/main.xml, и из java/org/fbreader/sample/extensions скопируем все классы, кроме MainActivity.java. Эти классы содержат готовые компоненты, которые помогут нам в создании читалки, при желании их можно модифицировать в соответствии с потребностями.
Теперь откроем layout/reader_activity.xml и добавим в него следующий код разметки.
TextWidgetExt является обёрткой класса библиотеки TextWidget, этот класс является основным и именно он отображает содержимое книги.
Инициализируем теперь эти объекты в коде активности ReaderActivity.java.
Мы должны получить от главной активности путь до файла, который пользователь хочет открыть. Для этого мы будем передавать интент из одной активности в другую, содержащий нужный путь. Вернёмся в MainActivity.java и добавим код создания интента в метод onBookOpen() интерфейса адаптера.
После этого отправленный интент нам нужен получить в ReaderActivity.java при старте активности. Добавим в onCreate() запись пути файла.
Полученный путь мы передаём в метод setBook() у объекта TextWidgetExt. После этого он должен нам вернуть объект Book, который можно получить с помощью метода TextWidgetExt controller(). Если объект не будет равен null, значит загрузка содержимого прошла успешно и можно показать книгу пользователю.
Теперь, если запустить приложение, мы уже можем видеть содержимое книги, пролистывать его и работать с ним.
Однако это не весь функционал, на который способна данная SDK. Ранее мы добавляли файлы ресурсов: различные разметки, иконки и меню. Добавим меню в наше приложение, для этого в ReaderActivity.java переопределим метод onCreateOptionsMenu() и добавим в него следующий код.
Также переопределим методы onPrepareOptionsMenu() и onOptionsItemSelected() для работы с этим меню.
Таким образом мы добавим в читалку меню, позволяющее нам:
- Менять размер текста
- Менять стиль текста
- Искать по тексту
- Открывать оглавление
По поводу оглавления стоит сказать отдельно. В коде, взятом из библиотеки, оглавление представлено в виде отдельной активности, мы её скопировали ранее, но не добавили в манифест. Поэтому откроем файл манифеста AndroidManifest.xml и зарегистрируем в нём новую активность.
Теперь при открытии оглавления через меню у нас будет запускаться новая активность, содержащая в себе оглавление открытой книги. Стоит отметить, что не все книги содержат такое оглавление, поэтому в таких случаях кнопка меню будет неактивна.
При выборе главы обратно в ReaderActivity будет возвращаться номер страницы, на которую нужно перейти. Чтобы получить этот результат, в ReaderActivity.java мы переопределим метод onActivityResult(), в который добавим следующий код.
Как можно увидеть, библиотека предоставляет разработчикам весь свой функционал, единственным ограничением бесплатной версии здесь является то, что она открывает только первые несколько страниц книги, о чём говорится при открытии книги.
Если вы купили ключ SDK и хотите добавить его в своё приложение, вам понадобится в файле build.gradle модуля приложения добавить в блоке buildTypes следующий код.
Не смотря на то, что движок FBReader достаточно мощный, а также учитывая графические ресурсы, добавляемые вместе с библиотекой, итоговый APK получился небольшого размера, что говорит о хорошей оптимизации библиотеки.
Итак, с помощью FBReader SDK и небольшого количества кода мы смогли создать простую читалку для электронных книг. Можно уже оставить как есть, либо продолжить модифицировать, изменяя интерфейс и дизайн так, как нужно разработчику. Пока что SDK есть только на Android, но разработчики планируют к концу года выпустить версию и для iOS.
Пишем читалку электронных книг на Android с помощью FBReader SDK : 4 комментария
В начале написали бы что SDK платная )) причем оочень дорогая ))
Так писали же, что платная.
А есть альтернативы?
SDK не только платная, но еще и очень дорогая. 1000 долларов за лицензию на одно приложение это уж слишком.
Осенью 2016 года хороший друг нашей студии Аскар Жумагалиев, рассказал во время обеда о том, как он начал изучать казахский язык при помощи книг на казахском языке. Он также поделился мнением, что ему было бы удобнее читать их в приложении на своем телефоне, и при нажатии на неизвестное слово на казахском, видеть его перевод на русский язык, тем самым расширяя свой словарный запас. Так обед плавно превратился в обсуждение идеи и дальнейшую четырехмесячную разработку мобильного приложения-читалки книг, со встроенной библиотекой и словарем языковых пар казахский-русский.
По ходу обсуждений миссией приложения мы выбрали следующее: сделать казахскую литературу доступной даже для тех, кто только изучает казахский язык или знает его на бытовом уровне. Бонусом к этому, была возможность изучать казахский язык при помощи книг.
Когда мы делали приложение, мы как-то и не задумались о том, что нам потребуются авторские права на использование книг в своем мобильном приложении. Чуть позже на финишной прямой мы все таки смогли получить разрешение на использование книг от Нұрбека Матжани, президента Фонда WikiBilim любезно предоставившего нам как права на использование книг, так и словарь казахского языка хорошего качества.
В целом, мы видели потребность в казахских книгах в виде мобильного приложения. В том же Google Play мы нашли приложение со сборником стихов Мұқағали Мақатаева (казахский писатель). Там было больше полумиллиона скачиваний. Дизайн был ужасным, навигация не совсем удобной, но люди все равно продолжали скачивать приложение и оставлять хорошие отзывы. Поэтому во время обсуждения дизайна мы решили не заморачиваться а сделать так, как нам понравится. Итог вы сможете видеть на скриншотах ниже.
Первым прототипом приложения была читалка написанная на React Native, выпущенная для платформ Android и iOS и с одной книгой: роман-эпопея Путь Абая, под авторством Мұхтара Ауезова. Тут стоит особо отметить о том, как мы потеряли два месяца работая над тупиковым путем, выбрав писать на React Native, взамен нативной разработке на Swift/Objective-C и Java. Как оказалось некоторые вещи, которые нам нужны в приложении не было возможно реализовать при помощи React Native. Потому что, пока нужных библиотек для корректной работы с форматом электронных книг Epub в React Native нет.
Поэтому через два месяца разработки нам пришлось свернуть проект на React Native и начать нативную разработку на обе платформы.
К концу разработки мы начали думать о названии приложения. И почему-то нам оно легко далось. Есть замечательное стихотворение казахского писателя Міржақыпа Дулатова - "Оян, қазақ". Слово "Оян" с казахского переводится как "Проснись". Вот так мы и решили назвать наше приложение Оян, написав его на латинице - Oyan.
После нескольких версий приложения мы решили пора рассказать о себе миру! И написали один пост на фейсбуке. Который разлетелся по всему казахстанскому сегменту интернета. Ну и не для кого секрет, что социальные проекты люди любят больше и шейря больше. Мы получили большой охват в СМИ и смогли выйти на пару дней в ТОП бесплатных приложений на AppStore и Google Play. Также слово Oyan было в топе поисковых запросов AppStore.
В данный момент в приложении вы найдете порядка 170 книг знаменитых казахских авторов. Но самое главное - наведя на любое слово, вы сможете увидеть его перевод, определение, а также объяснения сложных фраз, добавленные другими пользователями.
Особо стоит отметить о переводах добавленных пользователями. Этот канал очень активно нами используется для наполнения нашего словаря и без поддержки волонтеров этого не получилось бы.
Выводы которые наша студия сделала это основное: не начинать работу на React Native пока досконально не изучишь все моменты, которые необходимы для твоего мобильного приложения. Присмотритесь, возможно то что вам нужно реализовать невозможно сделать на React Native.
Многие современные электронные книги работают под операционной системой Android, что позволяет, помимо использования штатного программного обеспечения электронных книг, устанавливать и дополнительное ПО. В этом – одно из преимуществ электронных книг, работающих под ОС Android. Но воспользоваться им не всегда легко и просто.
К сожалению, из-за ужесточения политики сертификации Google, производители электронных книг перестали устанавливать на них сервисы Google, включая магазин приложений Google Play. Альтернативные же магазины приложений зачастую неудобны и содержат малое количество приложений (по сравнению с Google).
Но, по большому счету, даже работающий магазин Google Play не стал бы панацеей, а обрёк бы пользователя на долгий подбор подходящих приложений.
Эта проблема связана с тем, что не любое приложение будет корректно работать на электронных книгах.
Для успешной работы приложения необходимо соблюдение нескольких условий:
1. Приложение должно подходить для работы на чёрно-белом экране, отображение цвета не должно быть принципиально важным;
2. Приложение не должно содержать быстро меняющихся изображений, по крайней мере, в своей основной смысловой части;
3. Приложение не должно быть платным (установка платных приложений на устройства c ОС Android, не имеющих установленного магазина приложений Play Google, легальными способами невозможна);
4. Приложение должно быть в принципе совместимым с электронными книгами (даже при соблюдении трёх предыдущих условий не все приложения оказываются работоспособными).
И, наоборот, не всякая электронная книга сможет работать с дополнительно установленными пользователем приложениями.
Для этого тоже должны соблюдаться некоторые условия:
1. Электронная книга должна иметь сенсорный экран (недорогие книги имеют кнопочное управление);
2. Для работы приложений, требующих выхода в Интернет, электронная книга должна иметь модуль беспроводной сети Wi-Fi;
3. Для работы аудиоплееров в электронной книге должен быть аудиотракт или модуль связи Bluetooth, допускающий сопряжение с беспроводными наушниками.
В связи со всем вышесказанным, наилучший вариант установки приложений – это установка заранее протестированных приложений из установочных файлов APK.
Компания МакЦентр провела работу по отбору приложений, которые могут успешно работать на электронных книгах (хотя и в разной степени успешно). Эти приложения поделены по нескольким категориям в зависимости от назначения. Возможные проблемы указаны в примечаниях.
Приложения, в зависимости от требуемой версии Android, проверялись на электронных книгах ONYX BOOX с версиями Android 4.4 и 6.0 (в зависимости от требований приложения). Перед установкой приложения пользователю необходимо удостовериться в совместимости приложения с той версией Android, под которой работает его электронная книга.
В описании приложений указаны следующие данные:
- наименование (в точности так, как оно указано в магазине Play Google; даже если там содержатся орфографические ошибки);
- разработчик (иногда приложения с одним наименованием могут быть выпущены разными разработчиками);
- назначение приложения;
- требуемая версия Android;
- ссылка на данное приложение в магазине Play Google (для более подробного ознакомления с приложением и отзывами; скачать установочный файл APK там нельзя);
- ссылка на скачивание установочного файла APK приложения из альтернативного источника (там могут найтись более свежие, но не проверенные версии);
- ссылка на готовый файл APK, проверенный в МакЦентре;
- примечание с указанием возможных особенностей приложения;
- несколько скриншотов работающего приложения.
1. Офисные приложения
2. Книжные магазины
3. Альтернативные приложения для чтения книг
4. Альтернативные словари
5. Заметки, дневники, планировщики
6. Игры
7. Облачные хранилища
8. Плееры
9. Дополнительно – список бесплатных библиотек с каталогами OPDS
В сегодняшней части материала будет рассмотрена категория «Офисные приложения».
Офисные приложения
Список протестированных офисных приложений:
1. Microsoft Word
2. Microsoft Excel
3. Microsoft PowerPoint
4. Polaris Office — Word, Docs, Sheets, Slide, PDF
5. Polaris Viewer — PDF, Docs, Sheets, Slide Reader
6. OfficeSuite + PDF Editor
7. Thinkfree Office viewer
8. PDF Viewer & Reader
9. Open Office Viewer
10. Foxit Mobile PDF — Edit and Convert
Теперь — вперёд по списку.
Назначение: Офисное приложение.
Требуемая версия Android: >=4.4 (до 06.2019), после 06.2019 — 6.0 и выше
Ссылка на готовый файл APK
Ссылка на приложение в Google Play
Примечание: Классический Word от Microsoft.
Вид документа может не полностью совпадать с видом на компьютере.
Масштаб отображения может регулироваться двумя пальцами.
Анимация («приближение» текста при редактировании) может раздражать.
Назначение: Офисное приложение.
Требуемая версия Android: >=4.4 (до 06.2019), после 06.2019 — 6.0 и выше
Ссылка на готовый файл APK
Ссылка на приложение в Google Play
Примечание: Классический Excel от Microsoft.
Масштаб отображения на сенсорных экранах может регулироваться двумя пальцами.
Назначение: Офисное приложение.
Требуемая версия Android: >=4.4 (до 06.2019), после 06.2019 — 6.0 и выше
Ссылка на готовый файл APK
Ссылка на приложение в Google Play
Примечание: Классическая программа от Microsoft для создания и редактирования презентаций.
Не слишком подходит для работы на ридерах из-за отсутствия цвета в иллюстрациях, но работа возможна.
Разработчик: Infraware Inc.
Назначение: Офисное приложение.
Требуемая версия Android: >=4.1
Ссылка на готовый файл APK
Ссылка на приложение в Google Play
Примечание: Можно работать без входа в учетную запись, нажав на фразу «Создать учетную запись позже».
Работает с разнообразными типами документов (перечислены в названии).
Пользователи жалуются на навязчивую рекламу (при подключенном интернете).
Разработчик: Infraware Inc.
Назначение: Офисное приложение (только просмотр документов).
Требуемая версия Android: >=4.1
Ссылка на готовый файл APK
Ссылка на приложение в Google Play
Примечание: Можно работать без входа в учетную запись, нажав на фразу «Создать учетную запись позже».
Работает с разнообразными типами документов (перечислены в названии).
Пользователи жалуются на навязчивую рекламу (при подключенном интернете).
Разработчик: MobiSystems
Назначение: Офисное приложение.
Требуемая версия Android: >=4.1
Ссылка на готовый файл APK
Ссылка на приложение в Google Play
Примечание: PDF работает только на просмотр!
Навязчиво предлагает установить премиум-версию и скачать платные шрифты, но пользоваться можно и без этого.
Разработчик: Hancom Inc.
Назначение: Офисное приложение.
Требуемая версия Android: >=4.0
Ссылка на готовый файл APK
Ссылка на приложение в Google Play
Примечание: Работает на просмотр документов в стандартных офисных форматах, включая PDF.
Разработчик: Easy inc.
Назначение: Офисное приложение для просмотра PDF.
Требуемая версия Android: >=4.0
Ссылка на готовый файл APK
Ссылка на приложение в Google Play
Примечание: Только просмотр PDF.
Разработчик: nTools
Назначение: Офисное приложение (просмотр документов форматов Open Office).
Требуемая версия Android: >=4.4
Ссылка на готовый файл APK
Ссылка на приложение в Google Play
Примечание: Работает на просмотр документов в форматах Open Office (odt, ods, odp) и pdf.
Назначение: Офисное приложение для работы с PDF.
Требуемая версия Android: >=4.1
Ссылка на готовый файл APK
Ссылка на приложение в Google Play
Примечание: Работа с PDF — просмотр документов и заполнение форм.
По итогам тестирования этой группы приложений надо отметить как проблемы, происходящие от природы электронных книг; так и проблемы самих приложений безотносительно устройства, на котором они запускаются.
К первым проблемам надо отнести отсутствие цветопередачи, что может обесценивать работу с изображениями (особенно — в Microsoft PowerPoint), и затрудняет в работу с диаграммами.
Ко вторым проблемам надо отнести «рекламные» наименования приложений, не соответствующие их реальным возможностям. Например, фраза в наименовании «PDF — Edit and Convert» на самом деле может означать всего лишь, что в этом приложении можно заполнить какой-либо бланк, составленный в формате PDF.
Читайте также: