Разработка для android на python


Как разрабатывать на Python под Android

Рассказывает Александр Тейлор, разработчик проекта Kivy

В последнее время появляется большое количество ресурсов по разработке на Python под Android. Все чаще упоминается предназначенный для этой задачи фреймворк Kivy (и его ответвления), ведь он является одним из самых проверенных временем и надежных проектов в этой области. Тем не менее, одну важную деталь незаслуженно обделяют вниманием — что вообще мы сможем делать после того, как Python станет запускаться на устройстве? Есть ли какие-то ограничения? Все ли библиотеки можно подключать? Возможно ли делать все то же, что и при написании приложения на Java? Данные вопросы волнуют многих, и они рассматриваются и решаются в рамках проекта Kivy. В этой статье я постараюсь рассмотреть наиболее интересные и важные детали.

Python-for-android

Прежде всего давайте посмотрим на то, с помощью чего Python получает возможность работать под Android — инструмент, названный, как ни странно, python-for-android. Его основная функция состоит в том, чтобы создать дистрибутив — папку проекта, содержащую все необходимое для запуска вашего приложения. А точнее, сам интерпретатор, Kivy и библиотеки, от которых он зависит: Pygame, SDL и несколько других. Также дистрибутив включает в себя загрузчик Java, отображающий OpenGL и выступающий в качестве посредника между Kivy и операционной системой. Затем вы добавляете ко всему этому свои скрипты, настройки вроде иконки и имени, компилируете с помощью Android NDK и вуаля — APK с вашим приложением готов!

И это всего лишь базовая процедура, на самом деле сгенерированный пакетный файл может включать (и включает) в себя гораздо больше. Вместе со всем прочим в APK вшивается большая часть стандартной библиотеки, а любой сторонний модуль, написанный на Python, может быть легко добавлен — все так же, как и при разработке десктоп-приложений. Добавка модулей с компилируемыми компонентами тоже не вызывает трудностей, необходимо лишь указать, как их нужно собирать. Как правило, это не представляет собой ничего сложного, достаточно лишь поставить пару галочек перед запуском процедуры сборки, хотя в редких отдельных случаях могут понадобиться дополнительные действия. Python-for-android уже включает в себя указания для компиляции таких популярных модулей, как: numpy, sqlite3, twisted и даже django!

Вышеописанные принципы лишь в общих словах объясняют, как работает python-for-android. В любой момент вы можете получить больше информации на данную тему, заглянув в документацию Kivy. Я рекомендую вам Buildozer — надстройку для python-for-android, предоставляющую собой удобный интерфейс и автоматическое разрешение некоторых зависимостей. Мы стараемся сделать так, чтобы написанная выше цепочка действий использовалась не только в Kivy, но и в других проектах. Основной процесс сборки останется таким же, но нужда в загрузчике Java отпадет, так как он необходим только для поддержки некоторых специфичных нужд фреймворка.

Обращение к Android API с помощью PyJNIus

Взаимодействие с Android API: получение информации с сенсоров, создание уведомлений, вибрация, пауза и перезапуск, да что угодно — важная часть вашего приложения. Kivy за вас позаботится об основном, но многими вещами вы захотите управлять сами. Для этого создан PyJNIus — инструмент, автоматически оборачивающий код на Java в интерфейс Python.

В качестве простого примера приведем программу, которая заставит телефон вибрировать на протяжении 10 секунд:

from jnius import autoclass # Для начала нам нужна ссылка на Java Activity, в которой # запущено приложение, она хранится в загрузчике Kivy PythonActivity PythonActivity = autoclass('org.renpy.android.PythonActivity') activity = PythonActivity.mActivity Context = autoclass('android.content.Context') vibrator = activity.getSystemService(Context.VIBRATOR_SERVICE) vibrator.vibrate(10000) # аргумент указывается в миллисекундах

Если вы знакомы с Android API, то без труда заметите, что код выше очень похож на аналогичный на Java — PyJNIus просто позволяет нам обращаться к тому же API, но прямо из Python. Большая часть Android API может быть вызвана подобным образом, что позволяет достичь того же функционала, что и при разработке на Java.

Главный минус PyJNIus в том, что он требует неплохого понимания структуры Android API, а код выходит громоздким, хотя его эквивалент на Java выглядит точно так же. Для решения этой проблемы Kivy включает в себя Plyer.

Plyer: кроссплатформенное API для платформоспецифичных задач

Проект Plyer ставит себе цель создать простой «питоничный» интерфейс для функций, которые присутствуют на большинстве платформ. Например, код выше легким движением руки превращается в…

from plyer.vibrator import vibrate vibrate(10) # В Plyer аргументы указываются в секундах

Более того, написанный код попытается выполнить свою задачу на всех поддерживаемых Plyer платформах — на данный момент это: Android, iOS, Linux, Windows и OS X (для iOS также существует аналог PyJNIus, называемая PyOBJus). На самом деле, вибрация — не самый лучший пример, потому что сейчас она реализована только для Android, но такие функции как проверка уровня заряда батареи:

from plyer import battery; print(battery.status)

или text-to-speech:

from plyer import tts; tts.speak('hello world')

— работают как в десктопных, так и в мобильных приложениях, а получение данных с компаса/гироскопа и отправка SMS без проблем реализуются на Android и iOS.

Plyer находится на начальной стадии развития, так что любая помощь в разработке приветствуется. Также, мы участвуем с ним в Google Summer of Code в этом году.

Не только ради Kivy

Все вышеперечисленные инструменты были разработаны для нашего фреймворка, но на самом деле они больше предназначены для разработки под Python в целом. В Plyer мы специально избегаем какой-либо зависимости от Kivy, а PyJNIus нужен лишь для доступа к Android JNI. Искренне надеемся, что эти инструменты станут полезны для любого, кто пишет на Python под Android. Вы уже можете попробовать PyJNIus, используя QPython. Python-for-android больше завязан на взаимодействии с Kivy, но мы будем рады обсудить этот вопрос.

Многое можно реализовать при разработке на Android с помощью Python, несмотря на все различия с Java, которая предназначена для этого, но эти возможности могут быть расширены еще больше в ближайшем будущем. И если вы заинтересовались описанными выше проектами, то самое время присоединиться к нашей команде!

Перевод статьи «Python on Android»

 

tproger.ru

Урок #1 — Использование акселерометра / Песочница / Хабрахабр

Представляю перевод цикла статей по написанию приложений для Android на языке Python. Оригинал можно найти здесь.

Итак, сегодня я хочу начать серию уроков по разработке мобильных приложений с помощью Python. В данном цикле статей я буду писать приложение для Android, но с помощью данного руководства вы также сможете писать для IOS. Этот курс поможет вам быстро освоить Python — замечательный язык для создания приложений для мобильных устройств. В первом уроке я расскажу вам о использовании акселерометра.

1. Об уроках
Я покажу вам, как использовать мобильные API, такие как компас, фотокамера, сенсор, звук и т.п. После ознакомления с API мы приступим к тестированию некоторых Python библиотек: PyGame и OpenCV. Я буду использовать Anroid с buildozer, но несколько библиотек совместимы и с IOS (в ходе обучения буду оповещать вас о совместимости тех или иных библиотек).

Перед стартом посмотрите ссылки ниже:

2. Содержание
  • Tutorial #1 – Акселерометр
  • Tutorial #2 – Камера
  • Tutorial #3 – Kivy Designer
  • Tutorial #4 – Отладка
  • Tutorial #5 – Android и iOS игры с Python
  • Tutorial #6 – Чтение и сохранение информации пользователей
3. Создаем наше приложение
Создайте новую папку и в ней создайте новый файл с именем main.py. Теперь откройте командную строку и выполните команду, приведенную ниже, чтобы создать buildozer файл.$ buildozer init

Откройте buildozer.spec и отредактируйте его. В этом уроке мы будем использовать Plyer, поэтому убедитесь, что есть следующая строка:

requirements = kivy, plyer

Вот так выглядит моя версия:

[app] title = Python Accelerometer package.name = accelerometer package.domain = com.wordpress.bytedebugger source.dir =. source.include_exts = py,png,jpg,kv,atlas version = '1.0' requirements = kivy, plyer fullscreen = 1 [buildozer] log_level = 1
4. Давайте писать код
Сначала, делаем импорт:from kivy.app import App #for the main app from kivy.uix.floatlayout import FloatLayout #the UI layout from kivy.uix.label import Label #a label to show information from plyer import accelerometer #object to read the accelerometer from kivy.clock import Clock #clock to schedule a method

Теперь создем UI:

class UI(FloatLayout):#the app ui def __init__(self, **kwargs): super(UI, self).__init__(**kwargs) self.lblAcce = Label(text='Accelerometer: ') #create a label at the center self.add_widget(self.lblAcce) #add the label at the screen try: accelerometer.enable() #enable the accelerometer #if you want do disable it, just run: accelerometer.disable() except: self.lblAcce.text = "Failed to start accelerometer" #error

Clock.schedule_interval(self.update, 1.0/24) #24 calls per second

def update(self, dt): txt = '' try: txt = 'Accelerometer:\nX = %.2f\nY = %.2f\nZ = %2.f ' %( accelerometer.acceleration[0], #read the X value accelerometer.acceleration[1], # Y accelerometer.acceleration[2]) # Z except: txt = 'Cannot read accelerometer!' #error self.lblAcce.text = txt #add the correct text

И, наконец-то, создаем главный файл приложения:

class Accelerometer(App): #our app def build(self): ui = UI()# create the UI return ui #show it

Запускаем его:

Accelerometer().run() #start our app

И вот оно. Ниже приведен скриншот того, что мы получим на выходе:

Полный код вы сможете скачать по этой ссылке, а apk — тут.

Вот и все, первый урок подошел к концу. Он достаточно простой, но именно это и было моей главной задачей. Я буду продолжать писать простые уроки, похожие на этот, и поэтому, если вам нужно будет работать со специфическим функционалом, здесь вы сможете найти все необходимое.

habrahabr.ru

10 приложений для изучения Python на Android-устройствах / Хабрахабр

В процессе изучения языка мы обычно пользуемся ПК для работы с соответствующими приложениями, средами, программами, читаем книги, используем массовые онлайн курсы. Сейчас, когда смартфоны с нами всегда и везде, грех не воспользоваться их возможностями для усвоения знаний по программированию или их усовершенствования.В процессе изучения языка программирования, в частности Python, я считаю, что нужна погружаться в него полностью. Лозунг: «Ни дня без кода!» я дополняю, ну если ни кодить, то хотя бы почитать об этом. Для того чтобы не выходить из ритма в условиях, когда нужно в жизни сделать многое, но некогда, а хотелось бы учить Python, мобильный приложения помогут не тратить зря время в транспорте, во время ожиданий и т.д.Предлагаю список приложений из Google Play для изучения Python на Android-устройствах, которые помогут не только получить знания, но и проверить свой уровень по Python.Три из ниже перечисленных приложений я обязательно советую студентам при изучении Python: Learn Python, Quiz&Learn Python и Python Challenge. Ну теперь подробнее.1. Learn Pythonрейтинг 4,8 на 20.10.2015Одно из лучших, симпатичное приложение: интерфейс сразу порадовал. Содержит короткие уроки и тесты, контролирующие процесс изучения Python. Есть элемент азарта – набираете очки, за прохождение занятий и тестов. По окончании курса можете получить сертификат. Приложение охватывает следующие темы: основы Python, типы данных, управляющие структуры, функции и модули, работа с файлами, функциональное программирование, объектно-ориентированное программирование, регулярные выражения. 2. QPython — Python for Android рейтинг 4,4 на 19.10.2015QPython это скрипт, который запускает Python на Android устройствах, позволяет выполнить сценарии и проекты. QPython содержит интерпретатор Python, консоль, редактор, и SL4A-библиотеку (позволяет не всегда создание и запуск скриптов, написанных на различных языках сценариев прямо на Android-устройствах. SL4A предназначен для разработчиков и все ещё находится на стадии альфа-тестирования — https://ru.wikipedia.org/wiki/SL4A) для Android. Таким образом, приложение предлагает комплект разработчика, который позволяет легко создавать проекты и сценарии Python на Android-устройствах. Основные характеристики
  • поддержка программирования Python на Android, в том числе веб-приложений, игр и SL4A-программирования и т.д.
  • выполнение Python сценариев / проектов на устройствах Android
  • можно выполнить Python код & файлы с QRCode
  • QEdit позволяет легко создавать/ редактировать на Python скрипты / проекты
  • включает в себя множество полезных библиотек Python
  • поддержка pip (система управления пакетами используется для установки и управления программных пакетов, написанных на Python https://en.wikipedia.org/wiki/Pip_(package_manager))
  • поддержка SL4A программирование для доступа к функциям Android: сеть, Bluetooth, GPS и др.
Есть также приложение QPython3, которое в отличие от QPython имеет поддержку python3. 3. Python Documentationрейтинг 4,4 на 19.10.2015Удобное и стильное приложение с документацией по Python 3.5 на английском языке, полностью Offline. Имеет улучшенный поиск, простую навигацию, мобильный формат чтения, удобный интерфейс. В содержание документации входят такие разделы:
  • Что нового в Python?
  • Учебник Python
  • библиотеке ссылок Python
  • справочник по языку Python
  • Python настройка и использовании
  • Python HOWTOs
  • Расширения и вложения
  • Python / C API
  • Установка Python модулей
  • Деинсталяция Python модулей
  • FAQs
4. Quiz&Learn PythonРейтинг 4.1 на 19.10.2015Приложение Quiz&Learn Python для тестирования и улучшения знаний и понятий Python (версия 2.7). Вопросы варьируются от основ программирования на языке Python до очень конкретных, возможно, неожиданных способов написания кода. В зависимости от прогресса вопросы могут усложнятся. Чем быстрее вы отвечаете, тем больше очков вы получите. Можно удалить два неправильных ответа, пропустить вопрос, остановить таймер, или отладить код. Сайт разработчиков http://mobileicecube.com/quiz-learn-python.5. Python interview questionsРейтинг 4,0 на 20.10.2015Интересное приложение. Помогает проверить знании языка Python в виде интервью.6. Python ChallengeРейтинг 3,9 на 19.10.2015Это приложение представляет собой тест на английском языке для пользователей, которые хотели бы узнать и испытать свои знания по программированию на Python. Приложение имеет два основных режима: Challenge Mode и Practice Mode. Challenge Mode состоит из 20 вопросов. Очки начисляются на основе учета времени, необходимого для решения каждого вопроса. Тест заканчивается, когда пользователь выбирает неправильный ответ или завершает все 20 вопросов.В Practice Mode вопросы сортируются по разным темам. Пользователь может сам их выбрать. Предлагается 10 вопросов. Пользователь может продолжать тест, даже если он даст не правильный ответ. Все вопросы и ответы будут показаны в конце тренировки.7. Python GuideРейтинг 3,9 на 19.10.2015Это приложение представляет собой краткое руководство для Python. Руководство будет особенно полезно для новичков, которые хотят ознакомиться с правилами синтаксиса Python. Руководство охватывает основы программирования Python, так что пользователи будут иметь достаточно знаний, чтобы создать какое-нибудь простое и продуктивное приложение. Руководство состоит из следующих тем: переменные, условия, функции, циклы, списки, строки, словари. Небольшой список. Хотелось бы большего.8. Python Programming in a dayрейтинг 3,0 на 20.10.2015Разработчики приложения советуют нам пропустить длинные, сложные книги по Phyton. Для того, чтобы научиться программировать на Phyton 3.0 быстрее они предлагают короткое и лаконичное приложение, которое научит всему необходимому для Phyton программирования. Эта книга написана для людей, которые не имеют никакого знания в программировании или являются новичками. Она фокусирует на самых важных понятиях с примерами. 9. Learn Python & Python Django рейтинг 3,0 (возможно из-за того, что приложение достаточно свеженькое) на 20.10.2015Это приложение наконец-то отличается от предыдущих тем, что затрагивает не только сам Python, но и Django. Это по сути обучалка на английском языке по Python и Django на платформе Udemy. В ее содержание входят такие темы: Python и Hello World, обзор и история Python, функции, классы, базы данных, модули и пакеты, JSON, установка Django, интерфейс администратора, язык шаблонов Django и др… В приложении 18 лекций, более 4-х часов высококачественного контента, сообщество, видео и аудио лекции, презентации, статьи, можно сохранить курсы для просмотра в автономном режиме. 10. Учебник Python рейтинг 4,0 на 20.10.2015Сборник тьюториалов по Python 2 и 3. Расскажет о истории и философии Python, как установить Python, работать с числами и строками в Python, о типах данных и переменных, функциях и т.д… Мне не понравился тем, что немного не подстроен под возможности мобильных телефонов – шрифты кое-где маленькие.Название на русском меня воодушевило, что тьюториал мог быть на русском языке – ан нет!В общем, я не нашла приложений на русском. Еще можно назвать приложения такие как:
  • Dive Into Python 3 — книга Марка Пилгрима, рейтинг 3,8, имеет проблемы с растягивание интерфейса.
  • Python For Android — Python IDE, рейтинг 3,3 из-за навязчивой рекламы
  • Python Tutorial — учебник по программированию на Python 2.6, рейтинг 3,8
  • Python Programming Tutorial – учебник по Python 2.7, рейтинг 3,6

habrahabr.ru

Как писать простенькие приложения для Android, используя яп Python?

Python-for-android Прежде всего давайте посмотрим на то, с помощью чего Python получает возможность работать под Android — инструмент, названный, как ни странно, python-for-android. Его основная функция состоит в том, чтобы создать дистрибутив — папку проекта, содержащую все необходимое для запуска вашего приложения. А точнее, сам интерпретатор, Kivy и библиотеки, от которых он зависит: Pygame, SDL и несколько других. Также дистрибутив включает в себя загрузчик Java, отображающий OpenGL и выступающий в качестве посредника между Kivy и операционной системой. Затем вы добавляете ко всему этому свои скрипты, настройки вроде иконки и имени, компилируете с помощью Android NDK и вуаля — APK с вашим приложением готов!

И это всего лишь базовая процедура, на самом деле сгенерированный пакетный файл может включать (и включает) в себя гораздо больше. Вместе со всем прочим в APK вшивается большая часть стандартной библиотеки, а любой сторонний модуль, написанный на Python, может быть легко добавлен — все так же, как и при разработке десктоп-приложений. Добавка модулей с компилируемыми компонентами тоже не вызывает трудностей, необходимо лишь указать, как их нужно собирать. Как правило, это не представляет собой ничего сложного, достаточно лишь поставить пару галочек перед запуском процедуры сборки, хотя в редких отдельных случаях могут понадобиться дополнительные действия. Python-for-android уже включает в себя указания для компиляции таких популярных модулей, как: numpy, sqlite3, twisted и даже django!

Вышеописанные принципы лишь в общих словах объясняют, как работает python-for-android. В любой момент вы можете получить больше информации на данную тему, заглянув в документацию Kivy. Я рекомендую вам Buildozer — надстройку для python-for-android, предоставляющую собой удобный интерфейс и автоматическое разрешение некоторых зависимостей. Мы стараемся сделать так, чтобы написанная выше цепочка действий использовалась не только в Kivy, но и в других проектах. Основной процесс сборки останется таким же, но нужда в загрузчике Java отпадет, так как он необходим только для поддержки некоторых специфичных нужд фреймворка.

Обращение к Android API с помощью PyJNIus Взаимодействие с Android API: получение информации с сенсоров, создание уведомлений, вибрация, пауза и перезапуск, да что угодно — важная часть вашего приложения. Kivy за вас позаботится об основном, но многими вещами вы захотите управлять сами. Для этого создан PyJNIus — инструмент, автоматически оборачивающий код на Java в интерфейс Python.

В качестве простого примера приведем программу, которая заставит телефон вибрировать на протяжении 10 секунд:

from jnius import autoclass # Для начала нам нужна ссылка на Java Activity, в которой # запущено приложение, она хранится в загрузчике Kivy PythonActivity PythonActivity = autoclass('org.renpy.android.PythonActivity') activity = PythonActivity.mActivity Context = autoclass('android.content.Context') vibrator = activity.getSystemService(Context.VIBRATOR_SERVICE) vibrator.vibrate(10000) # аргумент указывается в миллисекундах

Если вы знакомы с Android API, то без труда заметите, что код выше очень похож на аналогичный на Java — PyJNIus просто позволяет нам обращаться к тому же API, но прямо из Python. Большая часть Android API может быть вызвана подобным образом, что позволяет достичь того же функционала, что и при разработке на Java.

Главный минус PyJNIus в том, что он требует неплохого понимания структуры Android API, а код выходит громоздким, хотя его эквивалент на Java выглядит точно так же. Для решения этой проблемы Kivy включает в себя Plyer.

Plyer: кроссплатформенное API для платформоспецифичных задач Проект Plyer ставит себе цель создать простой «питоничный» интерфейс для функций, которые присутствуют на большинстве платформ. Например, код выше легким движением руки превращается в…

from plyer.vibrator import vibrate vibrate(10) # В Plyer аргументы указываются в секундах

Более того, написанный код попытается выполнить свою задачу на всех поддерживаемых Plyer платформах — на данный момент это: Android, iOS, Linux, Windows и OS X (для iOS также существует аналог PyJNIus, называемая PyOBJus). На самом деле, вибрация — не самый лучший пример, потому что сейчас она реализована только для Android, но такие функции как проверка уровня заряда батареи:

from plyer import battery; print(battery.status)

или text-to-speech:

from plyer import tts; tts.speak('hello world')

— работают как в десктопных, так и в мобильных приложениях, а получение данных с компаса/гироскопа и отправка SMS без проблем реализуются на Android и iOS.

Plyer находится на начальной стадии развития, так что любая помощь в разработке приветствуется. Также, мы участвуем с ним в Google Summer of Code в этом году.

Не только ради Kivy Все вышеперечисленные инструменты были разработаны для нашего фреймворка, но на самом деле они больше предназначены для разработки под Python в целом. В Plyer мы специально избегаем какой-либо зависимости от Kivy, а PyJNIus нужен лишь для доступа к Android JNI. Искренне надеемся, что эти инструменты станут полезны для любого, кто пишет на Python под Android. Вы уже можете попробовать PyJNIus, используя QPython. Python-for-android больше завязан на взаимодействии с Kivy, но мы будем рады обсудить этот вопрос.

Многое можно реализовать при разработке на Android с помощью Python, несмотря на все различия с Java, которая предназначена для этого, но эти возможности могут быть расширены еще больше в ближайшем будущем. И если вы заинтересовались описанными выше проектами, то самое время присоединиться к нашей команде!

Оригинальная статья "Kivy Planet"Русский источник "Как разрабатывать на Python под Android"

ru.stackoverflow.com

Часть 1. Построение среды разработки

Создание Android-приложений с использованием Python и SL4A

Конфигурирование рабочей станции под управлением Windows для исполнения системы Scripting Layer for Android

Пол Ферилл (Paul Ferrill)Опубликовано 17.12.2013

Серия контента:

Этот контент является частью # из серии # статей: Создание Android-приложений с использованием Python и SL4A

https://www.ibm.com/developerworks/ru/views/global/libraryview.jsp?series_title_by=Создание+android-приложений+с+использованием+python+и+sl4a

Следите за выходом новых статей этой серии.

Этот контент является частью серии:Создание Android-приложений с использованием Python и SL4A

Следите за выходом новых статей этой серии.

Об этом цикле статей

Эта статья, первая в цикле, демонстрирует читателю, как установить все необходимые компоненты, чтобы приступить к написанию Python-скриптов для Android-устройства. Во второй статье цикла будут представлены примеры практически полезных скриптов. В ней также будут рассмотрены некоторые доступные для использования вызовы Android API, в том числе различные окна. И, наконец, в статьях цикла будет описан процесс построения полного пользовательского интерфейса — примерно так, как это делалось бы в языке Java.

Согласно распространенному заблуждению относительно разработки для платформы Google Android, программный для нее должен быть написан на языке Java™. В действительности имеется множество различных возможностей, реализуемых в рамках проекта SL4A (Scripting Layer for Android). Проект SL4A был начат сотрудником компании Google Деймоном Колером (Damon Kohler) в рамках 20-процентной квоты (Google официально разрешает своим разработчикам до 20% рабочего времени тратить на "инициативные" проекты). Это было почти два года назад. За это время было выпущено четыре этапные версии.

SL4A предоставляет платформу для нескольких скриптовых языков, включая Beanshell, Lua, Perl, Python и Rhino. Кроме того, поддерживаются базовые скрипты оболочки. В настоящее время работы по языку Python, проводившиеся в рамках проекта SL4A, выделилась в собственный отдельный проект. В значительной степени это произошло благодаря популярности Python и потребности в отделении выпусков новой функциональности Python от основного цикла выпусков системы SL4A.

В данной статье основное внимание уделяется применению языка Python при написании приложений для платформы Android. Python – это превосходный инструмент для написания как простых скриптов, так и сложных многопоточных приложений. Поддержка Python на платформе Android важна потому, что позволяет использовать огромные объемы уже написанного и находящегося в свободном доступе программного кода. Язык Python прост в изучении даже для абсолютных новичков, к тому же в Интернете имеется множество ресурсов, помогающих ускорить его освоение.

Установка и настройка

Прежде чем вы сможете приступить к разработке с помощью SL4A, необходимо загрузить и установить несколько обязательных компонентов. Первым их них является полный комплект разработчика Java Development Kit (JDK). Его последнюю версию можно найти на сайте Oracle для разработчиков.

Затем вам потребуется комплект Android software development kit (SDK). На основном сайте для Android-разработчиков имеется два варианта загрузки: в виде zip-файла и в виде exe-файла. Если вы загрузите этот exe-файл и запустите его на исполнение, на экране появится окно, в котором вы должны выбрать, какие версии SDK и файлов поддержки вы хотите установить (см. рис. 1).

Рисунок 1. Выбор нужных опций Android SDK для загрузки

Все необходимое для этой статьи я установил и протестировал на машине под управлением 64-разрядной версии Windows® 7.

Эта статья посвящена разработке приложений для платформы Android с помощью языка Python, поэтому вполне очевидно, что вам необходимо установить Python на своей машине разработки. На Windows-компьютерах язык Python изначально не установлен. На момент написания этой статьи актуальная версия пакета SL4A Python имела номер 2.6.2. Для обеспечения совместимости со своей системой загрузите соответствующую версию Python 2.6 — 32-разрядную или 64-разрядную.

Рекомендуется добавить несколько ссылок на Android SDK в директиве PATH— это упростит запуск SDK Manager и других инструментов. Чтобы сделать это в среде Windows 7, выполните следующие шаги.

  1. Нажмите клавишу Windows, а затем нажмите Search.
  2. В текстовом поле введите Environment.
  3. Нажмите на Edit the system environment variables.
  4. В открывшемся окне нажмите Environment Variables, а затем выберите переменную PATH в списке User variables.
  5. Нажмите Edit, а затем добавьте соответствующий маршрут к своему каталогу инструментов Android SDK.

Строка, которую необходимо добавить, имеет следующий вид

;C:\Users\paul\Downloads\android-sdk-windows\platform-tools

Необходимо поставить точку с запятой (;) перед новым маршрутом для добавления нового каталога. После того как вы введете соответствующую строку, нажмите OK три раза.

Избегайте пробелов в именах каталогов

Некоторые инструменты, например эмулятор, могут не запуститься, если вы установите SDK в каталог, имя которого имеет пробелы. Это относится и к местоположению по умолчанию: C:\Program Files\android-sdk-windows.

Процесс установки SL4A на Android-устройстве подобен процессу установки любого другого Android-приложения. Вы можете просканировать QR- код на основном сайте проекта SL4A с помощью своего устройства, чтобы загрузить SL4A installation file. После завершения загрузки этого файла он должен запуститься автоматически. В этот момент вы должны увидеть экран установки, показанный на рисунке 2.

Рисунок 2. Экран установки SL4A

Нажмите Install для запуска процесса.

Заключительный шаг состоит в установке интерпретатора Python на вашем устройстве. Это можно сделать с использованием любого из нескольких методов. Из эмулятора вы можете ввести текст sl4a download в поисковом поле браузера (рис. 3).

Рисунок 3. Экран загрузки SL4A

Нажмите на ссылку PythonForAndroid_r4.apk для запуска процесса загрузки. Чтобы действительно запустить установщик, просмотрите экран уведомления, для чего нажмите на него и переместитесь по нему от верхней до нижней части экрана. Нажмите на сообщение Download complete для запуска установщика Python for Android (рис. 4).

Рисунок 4. Начальный экран установки Python for Android

Нажмите Install для запуска процесса, который загружает и распаковывает несколько zip-файлов. В данном случае просто нажмите Install на основном экране установки (рис. 5).

Рисунок 5. Основной экран установки Python for Android

Вы должны увидеть три отдельных окна хода выполнения. Первое окно демонстрирует процесс загрузки, а затем извлечения файлов на SD-карту. Если все прошло нормально, появится сообщение "Installation Successful".

Основы Android SDK

Есть два основных метода для тестирования Python-кода с помощью SL4A: с использованием эмулятора или с использованием реального физического устройства. Android SDK предоставляет базовые возможности эмулятора и инструменты для создания эмулированного устройства с такими же характеристиками, как у соответствующего физического устройства. В некоторых случаях, например, при создании дополнительных модулей для планшетов Samsung, вы можете воспользоваться готовым эмулятором.

Инструмент SDK Manager действует в качестве менеджера обновлений и инструмента для создания виртуального устройства. При каждом запуске инструмента SDK Manager он подключается к сайту для Android-разработчиков с целью проверки на наличие новых выпусков (вы можете пропустить этот процесс, нажав на Cancel). В этой точке вы должны видеть окно Android SDK and AVD Manager (см. рис. 6).

Рисунок 6. Окно Android SDK and AVD Manager

Выберите Virtual devices в дереве каталогов для отображения всех ранее определенных виртуальных Android-устройств (AVD — Android virtual device) в панели подробностей. Чтобы создать новый эмулятор устройства, нажмите New. В окне Create New Android Virtual Device (AVD) введите необходимую информацию в полях Name, Target и SD Card Size. На рисунке 7 показаны параметры моего тестового устройства. Имя устройства не должно содержать пробелов; для хранения данных необходимо выделить не менее 100 МБ. Выберите соответствующий номер версии Android для своего целевого устройства. Этот ниспадающий список отображает только доступные опции, загруженные ранее.

Рисунок 7. Мастер создания нового AVD-устройства

Теперь нажмите Create AVD. Появится всплывающее окно со сведениями о вашем новом устройстве. Чтобы запустить любой из доступных образов эмулятора, выберите требуемую цель, а затем нажмите Start. В окне Launch Options можно оставить значения по умолчанию для размеров экрана или поставить флажок в контрольном окошке Scale display to real size (Масштабировать экран до реального размера) и указать иные размеры экрана. Значение "7" меня полностью устраивает (см. рис. 8). Чтобы запустить эмулятор "с чистого листа", поставьте флажок в контрольном окошке Wipe user data (Стереть данные пользователя).

Рисунок 8. Опции запуска AVD-устройства

В состав Android SDK входит еще один обязательный инструмент под названием ADB (Android Device Bridge). Этот инструмент поддерживает такие функции, как установка приложений (apk-файлы), копирование файлов на устройство или с устройства, выдача команд оболочки на устройство. Кроме того, инструмент ADB используется для запуска SL4A на устройстве, что позволяет разработчику запускать программы на исполнение с рабочей станции. Чтобы установить коммуникационный канал между хостом (рабочей станцией) разработчика и устройством, необходимо с помощью ADB перенаправить TCP/IP-трафик с порта 9999 на конкретный порт на этом устройстве. Откройте командное окно и введите в него следующую командную строку:

$ adb forward tcp:9999 tcp:42306

Второй номер порта соответствует устройству. В последней версии SL4A этот номер можно задать в предпочтениях. В стандартном выпуске вы должны использовать номер, который предоставит вам SL4A.

Теперь запустите SL4A, а затем нажмите Menu. В области с шестью опциями в нижней части окна нажмите View, а затем нажмите Interpreters (рис. 9).

Рисунок 9. Запуск удаленного сервера из меню Interpreters системы SL4A

Нажмите еще раз Menu, а затем нажмите Private для запуска сервера в приватном режиме.

Для реального устройства различие состоит в том, что опция Private запускает сервер с использованием USB-порта, а опция Public использует Wi-Fi. Если вы снова посмотрите страницу уведомлений, то увидите, что сервис SL4A Service исполняется (рис. 10).

Рисунок 10. Экран уведомления Android

Нажмите на сообщение, чтобы увидеть фактический присвоенный номер порта. В нашем случае для второго значения TCP в команде adb forward мы используем номер порта 42306. Теперь вы готовы к тому, чтобы написать какой-либо Python-код и протестировать его на устройстве.

Программа Hello World на языке Python for Android

Практически в каждой вводной статье по программированию ее автор считает своим долгом написать программу "hello world". Я делаю это здесь для того, чтобы продемонстрировать несколько способов для написания и тестирования Python-кода с помощью SL4A. Мой код выглядит следующим образом.

import android droid = android.Android() result = droid.makeToast('Hello, world!')

Каждый скриптовый язык SL4A использует файл импорта — в случае Python это файл android.py — для формирования интерфейса между скриптом и поддерживающими API-интерфейсами Android. Этот код можно ввести непосредственно на своем устройстве в интерпретаторе (см. рисунок 9) или с помощью редактора. Чтобы использовать интерпретатор Python, запустите его на экране Interpreters, для чего выберите опцию Python 2.6.2. На появившемся в результате экране вы сможете ввести показанный выше код; после ввода последней строки вы должны увидеть всплывающее окно со словами: "Hello, world!"

Текстовый ввод как на эмулированном, так и на реальном устройстве может оказаться утомительным занятием. Python предоставляет среду IDLE (консоль/редактор), которая в сочетании с инструментом ADB очень удобна для написания кода на персональном компьютере и тестировании его на Android-устройстве. Вам потребуется лишь локальная копия файла android.py. Вы можете извлечь ее из файла python_extras_r14.zip, доступного на странице загрузки SL4A, или передать ее с устройства с помощью команды adb pull. Кроме того, весьма удобно иметь каталог с именем SDCARD в корне своего первичного системного диска для зеркалирования всего содержимого эмулируемого устройства. Это существенно упрощает маршрут к файлу при исполнении скрипта на локальной машине, которому необходимо обращаться к файловой системе. На рисунке 11 показан скрипт Hello World в консоли IDLE.

Рисунок 11. Скрипт Hello World в Python-консоли IDLE

Если вы запустили сервер и выполнили команду adb forward, то должны увидеть Toast-сообщение, показанное на рисунке 12, и не должны увидеть никаких ошибок.

Рисунок 12. Всплывающее сообщение Hello World

В Windows-системе для запуска окна редактирования в среде IDLE нажмите: File > New Window. Это окно предоставляет все необходимые средства для редактирования и тестирования эмулированного или реального Android-устройства на своей машине разработки.

Ресурсы для скачивания
Похожие темы
  • Оригинал статьи: Android applications using Python and SL4A, Part 1: Set up your development environment.
  • Посетите веб-сайт проекта SL4A Google Project.
  • Ознакомьтесь с различными группами проекта SL4A Google.
  • Ознакомьтесь с дополнительной информацией по проекту Python for Android Project .
  • Необходимые вам ресурсы по Python можно найти на сайте Python.org.
  • Загрузите SL4A или посетите сайт с неофициальными релизами.
  • Загрузите Python for Android.
  • Загрузите Android SDK.
  • Загрузите новейшую версию JDK.
  • Читайте другие статьи Пола Феррила на сайте developerWorks.
  • Раздел ПО с открытым исходным кодом на сайте developerWorks содержит сотни статей и руководств, а также материалы для загрузки, дискуссионные форумы и множествоо других ресурсов для разработчиков.
  • Другие статьи по Android на сайте developerWorks.
  • IBM WebSphere Application Server Feature Pack for Web 2.0 and Mobile: в состав этого пакета входят инструментарий IBM Dojo 1.7 Toolkit, новые стандартные блоки для построения мобильных приложений и RIA-приложений (rich Internet application) и компонент для построения схем на основе Dojo. Кроме того, в состав пакета входят инструменты Rational, позволяющие адаптировать к мобильным устройствам приложения WebSphere, изначально разработанные для настольных браузеров, а затем развертывать эти приложения на мобильных устройствах.
  • Оцените продукты IBM наиболее удобным для вас способом. Загрузите ознакомительные версии программных продуктов, воспользуйтесь их онлайновыми пробными версиями, поработайте с продуктами в облачной среде или обратитесь к ресурсу SOA Sandbox для изучения эффективной реализации решений на основе сервис-ориентированной архитектуры.

Подпишите меня на уведомления к комментариям

www.ibm.com

Полноценное python приложение на android

В этой статье я хотел бы рассказать о том, как создать полноценное приложение на python для android. Нет, это не очередной мануал для создания скрипта для sl4a, это мануал по созданию полноценного приложения с UI, возможностью собрать apk и выложить на android market. Заодно я хотел бы похвалиться своим первым приложением на google.play, это не hello world, а полезное приложение для фотографов, хотя и узко специализированное.

Начну рассказ пожалуй с самого приложения и завершу рассказам о том как оно делалось.

isortViewer

Мне как фотографу приходится тратить много времени на сортировку и отбор фотографий. Не всегда хочется сидеть за рабочим компьютером, когда под рукой есть ноутбук, смартфон или планшет, но копировать туда десятки гигабайт raw или jpeg файлов, а потом синхронизировать с рабочим компьютером — сомнительное удовольствие. Именно поэтому я создал программы isortManager и isortViewer, которые значительно облегчили мне работу по сортировке и отбору фотографий. Теперь заниматься отбором и сортировкой фотографий я могу лежа на пляже диване или скучая в пробке :)

Копипаст описания и пара скриншотов:isortViewer — программа для фотографов, которая позволяет легко и быстрой отбирать и сортировать тысячи фотографий (raw или jpg) с фотосессий на ваших android смартфонах и планшетах. При этом, нет необходимости копировать десятки гигабайт jpg или raw файлов на устройство. Просто воспользуйтесь бесплатной программой isortManager для компьютера, которая сохранит все в один небольшой файл проекта:1. Скачайте и запустите isortManager с официального сайта2. Создайте проект и добавьте папки с фотографиями. Поддерживаются форматы: jpg и raw (cr2, nef, orf и т.д.). В итоге у вас получится небольшой файл проекта (примерно 150 мб на несколько тысяч фотографий, будь то jpg или raw формат)3. Скопируйте на ваше android устройство файл проекта, откройте в isortViewer. Вы можете помечать фотографии «на удаление», а так же, ставить рейтинги от 1 до 5 звезд4. После этого, скопируйте файл проекта обратно и примените изменения в isortManager. Кроме удаления выбранных фотографий, вы можете копировать или перемещать отмеченные фотографии. Например, фотографии с «5 звезд» можно скопировать в папку «шедевры», а «1 звезда» переместить в папку «хлам» :)

Приложение абсолютно бесплатно и доступно на google.play, однако донейты приветствуются )

Исходники доступны на официальном сайте!

Как это делалось

Так как python лучший язык программирования в мире кроме python я ничего не знаю, решено было написать приложение на python.

isortManager

С isortManager для PC проблем не возникло, создание GUI сборки под windows уже давно обкатано и работает он очень просто: с помощью dcraw выдирает jpg превьюшки из raw файлов, ресайзит из с помощью PIL и складывает в один файл с достаточно простой структурой. Был изобретен свой весолипед с контейнером для хранения фотографий и метаданных (полный путь к фотографии, отметка «на удаление» и отметка рейтинга), так как, например, zip или tar формат, не могут изменять один файл в архиве (метаданные), требую перепаковки всех файлов. Файлы просто пишутся один за другим подряд и в блоке метаданных (обычный repr питоновского словаря) в конце сохраняется смещения начала файлов, плюс в конце файла пишется размер блока метаданных. GUI написано на Tkinter (люблю я его за быстроту написания и за малый размер итоговой сборки), вот собственно скриншот:

И да, все это работает и на linux, и даже быстрее чем на windows )

isortViewer для android

Всего я нашел два способа заставить python приложение работать как полноценное приложение на android, это pygame for android и проект kivy.Pygame — более низкоуровневый, все UI пришлось бы рисовать вручную, что отняло бы много времени, поэтому был выбран фреймворк kivy. Итак:

Kivy

Это замечательный фрейморк для написания приложение для windows, linux, MacOS, android и iOS. Поддерживается мультитач, UI рисутется через OpenGL, значит должно работать аппаратное ускорение. Увидеть работу виджетов можно установив демонстрационное приложение Kivy Showcase. Есть возможность использования некоторых платформо специфичных функций, например, вибро или акселерометр, с помощью модуля android.

Для разработки я бы рекомендовал использовать linux, тем более, apk собираются именно в этой OS.

Hello World выглядит так:

import kivy kivy.require('1.0.6') # replace with your current kivy version ! from kivy.app import App from kivy.uix.button import Button class MyApp(App): def build(self): return Button(text='Hello World') if __name__ == '__main__': MyApp().run()

Причем этот код будет работать на всех заявленных платформах. Пропадает необходимость в тестировании приложения в эмуляторе. Достаточно запустить скрипт на исполнение в своей любимой IDE и увидеть результат на экране компьютера, без задержек на компиляцию, запуск эмулятора и пр. Если вы все же хотите увидеть как это будет выглядеть непосредственно на устройстве, просто установите Kivy Launcher, скопируйте файлы проекта на карту памяти и запустите. Дебажить при этом можно при помощи adb logcat.Если вы используете библиотеку android, которой нет на PC, но хочется запускать приложение не только на android, воспользуйте такой конструкцией:

try: import android except ImportError: android=None ... if android: android.vibrate(0.05)

Сборка apk достаточно проста и описана на этой странице. После сборки релиза, достаточно подписать свое приложение (я использовал этот мануал) и выложить в google play.

Плюсы kivy:

  • Быстрая разработка под различные платформы, практически без доработки кода.
  • Доступен широкий выбор виджетов
  • Высокая скорость работы. Весь ресурсоемкий вынесен в С модули. Сам интерпретатор python на android работает нативно.
  • Фремворк включает в себя множество инструментов, например анимация, кеширование и пр.

Минусы kivy:

  • Большой размер apk файла. Проект с 300 кб ресурсов (скрипты, графика) собирается в 7 мб apk. Хотя, думаю, есть возможность это как то оптимизировать.
  • Невозможность (пока), восстанавливать работу после сворачивания — приложение закрывается

В следующей своей статье, я расскажу более подробно о процессе написания приложения «с нуля», расжевывая каждую строчку кода.

Хотелось бы сразу пресечь холивары на тему «для android только java, python не нужен». Я считаю, не важно, какие технологии «под капотом», главное чтоб приложение было качественным. Сфера применения kivy может быть огромной. Сейчас на моем счету несколько приложений, написанных под заказ, где python с фремворком kivy показал себя с хорошей стороны. Например, ровно за один час, было написано приложение, для сети сервисных центров. Приложение работает в режиме киоска и установлено на дешевые китайские планшеты, которые висят в холле. Клиент набирает номер заказа, далее по WiFi планшет соединяется с сервером и сообщает статус заказа.

Автор: kAIST

www.pvsm.ru

Разработка приложений для Android на Python. Scripting Layer for Android (SL4A). Perl, JRuby, Lua, BeanShell, JavaScript и Tcl для Android

Apr 30, 2011 By Paul Barryin Mobile

Действительно ли Java - единственный игрок в этой игротеке (программирование приложений для Android)? Подумайте еще раз.

Разработка мобильных приложений для смартфонов - горячая тема. Больше нет сомнений, что в экосистеме Android в этом смысле развилась бешеная активность. Однако, когда мы приступаем к разработке "реального" приложения для Android, начинает казаться, что имеется одна единственная возможность: программить на Java (хотя не исключена возможность использовать C/C++ с Android Native Development Kit). Выбор Google - сделать базой популярную среди разработчиков технологию для своего Android SDK, который запускает специальным образом настроенную виртуальную машину.

В отличие от других популярных смартфонов, это, наверное, хорошая стратегия. Всё что вам нужно, это персональный компьютер или лэптоп с запущенным Linux, Windows или Mac OS X, с копией Java и свободно распространяемым Android SDK. Google предоставляет для скачивания эмулятор, поддерживающий все верси Андроида, имеется даже свободный плагин для Eclipse для облегчения старта и ориентирования в правильном направлении.

Это круто - в том, конечно, случае, если вы фанат Java. Если подобно мне, вы скорее станете жрать стекло, чем сядете кодить что-то на Java в Эклипсе, тогда вам снова не повезло. Это, однако, не конец. Имеется сравнительно удачный проект, который позволяет внести разработку на скриптовых языках в платформу Android. И это Scripting Layer for Android (SL4A), рабочая альтернатива разработке на Java.

В этой статье я пройдусь по шагам, необходимым для подготовки вашего компьютера для Android-разработки с помощью SL4A. Мой сценарий покажет вам, как написать, оттестировать и запустить простой скрипт на Python в вашем Android-устройстве.

Введение в SL4AScripting Layer for Android - один из многих проектов, помогающих видеть жизнь через призму результатов политики Google, поскольку внутри корпорации официально принято выделять разработчикам до 20% рабочего времени на так называемые "проекты - домашние любимцы". Damon Kohler работает на Google, и он создал SL4A в качестве побочного эффекта почесывания судящих мест относительно разработки для Android. SL4A предоставляет высокоуровневый интерфейс для нижележащих технологий Android Java, включая API для языков сценариев.

Python был одним из первых языков, поддержка которого появилась в SL4A, но соответствующие интерпретаторы теперь также доступны для Perl, JRuby, Lua, BeanShell, JavaScript и Tcl. В своём состоянии по умолчанию SL4A поступает с работающей версией shell. SL4A API дизайн отличается нацеливанием на возможность переносимости кода между разными языками сценариев. Поэтому, если бы я захотел показать Perl вместо Python в данной статье, вызовы API выглядели бы точно также. Но Python - это в некотором смысле стандарт SL4A и к тому же мой выбор.

Примите низкий стартДля начала нужно получить копию Android SDK, запущенную на вашем компьютере в виртуальной машине Java. Хотя мы и не собираемся программить на Java, JRE всё равно имеет место быть как требование, поверх среды работает эмулятор самого Android-а. Эмулятор является частью SDK. Эмулятор - это песочница, в которой мы играемся с тестами до переноса приложения в Android-устройство.

Прежде, чем начать, вы должны убедиться, что Java VM установлена в системе. В моей системе, установленной на свеженькой Xubuntu, я ввожу следующие команды и вижу, что Java недоступна:

$ javac -version$ java -version

Xubuntu предлагает установить соответствующие пакеты с помощью apt-get to install openjdk-6-jdk, так и делаем:

$ sudo apt-get openjdk-6-jdk

Если же вы работаете в дистрибутиве, который не является веткой Дебиана, поройтесь в своём репозитории пакетов в поиске аналогичного.

Установив Java, озаботимся Android SDK. Предлагаемые для скачивания сборки доступны для Mac OS X, Windows и Linux. Найдем последний тарболл для Linux и загрузим его.

Установка Android SDKКогда SDK загружен, просто распакуйте его в директорию по своему выбору (имя файла может отличаться от данного в примере):

$ tar zxvf android-sdk_r07-linux_x86.tgz

Эта команда создаст новый каталог, называющийся android-sdk-linux_x86, который я переименовал в просто Android. Для вас интерес представляет одна из поддиректорий с названием tools.

Подготовка Android EmulatorВнутри директории tools нас интересуют только две программы. Утилита adb помогает доставлять файлы внутрь эмулятора (и наоборот). Утилита android позволяет запускать эмулятор для любого номера версии Android, и сказать, что вы хотите делать дальше.

$ cd Android/tools$ ./android

Команда android запускает Android SDK и AVD Manager, это утилита, которая запускает эмулятор нужной версии в виде виртуального устройства. На данный момент у нас ни одного устройства нет, нужно его создать. Перед тем как это произойдёт, вы должны установить целевой пакет Android API. Для этого перейдите на вкладку Installed Packages и нажмите кнопку Update All. В диалоге, который после этого появится нажмите Accept All и далее Install. Время для закачки потребуется много, поэтому идите на кухню и выпейте кофе.

Когда загрузка завершится, давайте создадим Android Virtual Device (AVD). Выберите вкладку Virtual Devices и нажмите кнопку New. В появившемся диалоге установите свойства виртуального устройства. На рисунке 1 показаны: имя, которое я выбрал для устройства (LJapp), выбранная цель (API Level 7, что соответствует Android 2.1), установленная виртуальная карта памяти SD, которую я обозначил как 256 Мб. Когда выберите свои установки, нажмите кнопку Create AVD для инициализации устройства.

Figure 1. Setting the defaults for your emulated Android virtual device.

Если теперь вернуться на вкладку Virtual Devices, там должно появиться новое устройство LJapp. Выберите его и нажмите кнопку Sart в появившемся диалоге. Эмулятор начнёт загрузку и через несколько секунд вы увидите открытый экран вашего Android-устройства (рисунок 2). Имейте в виду, что эмулятор работает медленнее, чем реальный телефон, поэтому появление стартового экрана займет время, это время зависит от шустрости процессора ПК.

Figure 2. Your Android emulator is ready.

Для обозначения события щелчка мыши внутри экрана эмулятора я буду использовать термин "тап", поскольку в реальности это не мышиный клик, а нечто, что изображает нажатие пальцем.

Установка SL4AПолучение SL4A для эмулятора абсолютно прозрачно. Запустите браузер Android и перейдите на веб-сайт: code.google.com/p/android-scripting. Когда страница появится, тапните на квадратной картинке (QR Code) для доступа к ссылке на скачивание SL4A. Загрузка должна начаться немедленно. После ее завершения тапните на имени закачанного файла пакета, которое на время написания статьи sl4a_r3.apk, для установки. Для продолжения нажмём на кнопку Install, далее тапнем Open для старта приложения. Вы будете спрошены об участии в отслеживании использования, ваш выбор, можете участвовать или отказаться и затем SL4A информирует вас о том, что “No matches found” в вашем листинге скриптов. Это правильно, вы еще не установили ни одного скрипта. SL4A готов для Python.

Установка Python на AndroidВернитесь в браузер Android и дважды тапните на экране для увеличения веб-страницы. Найдите Featured Downloads на правой стороне страницы и тапните на стрелке загрузки пакета python_for_android_r1.apk. Как и раньше, дайте загрузке завершиться и тапните на загруженном пакете для установки. Для подтверждения установки - кнопка Install. После установки нужно будет нажать Open и большую кнопку install для завершения установки. Python for Android загрузит, раскроет и установит поддержку Python для SL4A с сайта SL4A и добавит к установленному пакету SL4A. Займет это всё пару минут. Если затянется, выдохните и вспомните, что эмулятор намного медленнее реального устройства.

После завершения инсталляции станет доступна кнопка Uninstall. Не нажимайте её! Вместо этого тапните на кнопке эмулятора в виде маленького домика для возвращения в главный экран Android. Тапните панель внизу экрана для просмотра списка установленных приложений, и убедитесь, что SL4A добавлен в ваш эмулятор, как на рисунке 3.

Figure 3. Your Android emulator has SL4A installed and is ready for action.

Далее жмём на иконку SL4A, которая теперь отобразит все установленные скрипты Python. Тапните на hello_world.py, это вызовет появление меню SL4A (рисунок 4).

При проходе слева направо иконки имеют следующий смысл: 1) запустить скрипт в командной строке Python; 2) запустить скрипт в "нативном" режиме; 3) редактировать скрипт во встроенном редакторе SL4A, он пригоден только для самой примитивной правки; 4) переименовать скрипт; 5) удалить скрипт. Для быстрой проверки своего приложения тапните вторую иконку в виде шестеренки. Через пару секунд появится сообщение “Hello, Android!”. Оно исчезнет также через две секунды.

Figure 4. SL4A Menu Icons

Если это всё работает, тапните скрипт test.py, затем шестеренку. Это запустит скрипт, который предоставляет вам ряд возможностей как разработчику для Android на Python. Опять-таки, держите в голове, что интерпретатор будет работать медленнее, чем в реальном устройстве. Будьте терпеливы и спокойно дожидайтесь появления различных элементов интерфейса Android.

Создание скриптов для AndroidТеперь эмулятор полностью готов для запуска вашего собственного скрипта Python, так давайте создадим его. Перед тем, как мы этим займемся, имейте в виду, что SL4A API есть подмножество полного стека Android API. Но то, что есть - это более чем достаточно для создания полезных приложений Android.

Пример скриптаДля того, чтобы прочувствовать, что такое запуск программы Python в SL4A, портируем существующее приложение в телефон. Скрипт примера взят из второй части O'Reilly Media's Head First Programming, где я выступал соавтором для David Griffiths в 2009. Этот простой скрипт заходит на сайт фиктивной компании, называющейся Beans'R'Us, захватывает содержимое главной страницы, разбирает его, находя строку с текущей ценой кофе в зёрнах и выводит эту цену в сообщении. Код прозрачен:

from urllib import urlencodefrom urllib2 import urlopen

pg = urlopen("http://www.beans-r-us.biz/prices.html")

text = pg.read().decode("utf8")where = text.find('>$')start_of_price = where + 2end_of_price = start_of_price + 4price = float(text[start_of_price:end_of_price])

print "The current price of coffee is:", price

Это Python 2, что есть следствие недемократичного подхода к компонентам: с SL4A поставляется версия 2.6.2. Для выполнения программы поместите её в эмулятор или проверьте вначале в командной строке:

$ python LJapp-cmd.pyThe current price of coffee is: 5.52

Портирование простого скрипта в AndroidПревращение скрипта в приложение есть по сути добавление визуальных элементов, которые вы хотите привлечь для вывода сообщения. Смысловое ядро кода изменений не требует. Python внутри SL4A полнофункционален, поэтому возможно использование свойств стандартного Python.

Для приведения кода в более Android-like вид, отобразим дружественное приветствие при запуске и бай-бай при выходе. Этот функционал предоставляет makeToast() API.

Вызов dialogCreateSpinnerProgress() API позволит вам отобразить Android-диалог ожидания или прогресса. Для того, чтобы сделать его видимым, вызовем dialogShow(). Сначала вызовем диалог прогресса для ожидания результата запроса с сайта, затем подавим диалог с помощью вызова dialogDismiss() API, когда получим данные. В этой точке вызовем вибрацию телефона (для фана).

Для стадии завершения употребим dialogCreateAlert(), dialogSetItems() and dialogSetPositiveButtonText() API для отображения цены кофе-бобов. Для выхода потребуется тапнуть кнопку ОК.

Код с добавлением вызовов SL4A API будет следующий:

import android

from urllib import urlencodefrom urllib2 import urlopen

app = android.Android()

app.makeToast("Hello from LJapp")

appTitle = "LJapp"appMsg = "Checking the price of coffee..."

app.dialogCreateSpinnerProgress(appTitle, appMsg)app.dialogShow()

pg = urlopen("http://www.beans-r-us.biz/prices.html")text = pg.read().decode("utf8")where = text.find('>$')start_of_price = where + 2end_of_price = start_of_price + 4price = float(text[start_of_price:end_of_price])

app.dialogDismiss()app.vibrate()

appMsg = "The current price of coffee beans:"

app.dialogCreateAlert(appMsg)app.dialogSetItems([price])app.dialogSetPositiveButtonText('OK')app.dialogShow()resp = app.dialogGetResponse().result

app.makeToast("Bye!")

Кроме добавления визуальных элементов, других изменений не предусмотрено.

Помещение скрипта в эмуляторДля помещения скрипта в эмулятор, скопируем файл с кодом в каталог Android, затем зальём его, используя утилиту adb:

$ tools/adb push LJapp.py /sdcard/sl4a/scripts6 KB/s (748 bytes in 0.116s)

После трансфера файла, проверим список доступных скриптов из меню SL4A и убедимся, что LJapp.py где-то вверху списка.

Тестирование скриптаПродолжим. Тапните по имени приложения, затем шестерёнку. Спустя мгновение вы должны увидеть диалог прогресса, который будет висеть до получения данных с заглавной страницы Beans'R'Us, рисунок 5. Через пару секунд в другом диалоге мы увидим текущую цену на кофе, как показано на рисунке 6. Поздравляем, скрипт портирован в виртуальное устройство Android.

Figure 5. Your Python script is working.

Figure 6. And, there's the price of coffee beans. Is it time to place an order?

Теперь запустим на смартфонеДля запуска скрипта на Android-устройстве, установим в него SL4A вместе с Python, затем залейте скрипт. Для установки SL4A задействуйте опцию Unknown Sources в Application settings вашего устройства. Эта опция необходима для установки non-Market приложений на телефон. Когда это сделано, проделайте обычные шаги, как при установке в эмуляторе. Для некоторого ускорения процесса скачайте сканер штрих-кодов Barcode Scanner с Android Market и используйте его для "чтения" QR Codes с экрана десктопа.

Трансфер скрипта на девайсЕсть несколько способов для заливки скрипта на смартфон. Я полагаю, что что-нибудь вроде соединения Bluetooth или соединения USB-кабелем может сильно зависеть от конкретного оборудования. Что работает на одном телефоне, на другом может не работать, и наоборот. Я обычно делаю следующее: на ПК поднимаю ssh-сервер, затем использую приложение на смартфоне для закачки файлов - AndFTP и с помощью scp закачиваю на телефон файл. Однажды получив доступ к ПК через AndFTP, я уже могу осуществлять навигацию по файловой системе компьютера. Держите под контролем то обстоятельство, что файлы нам нужно закачивать в каталог/sdcard/sl4a/scripts на телефоне. Тогда имена скриптов будут появляться в списке SL4A.

Залив скрипт на девайс, запускаем его также, как указано выше. Ожидаем, что всё сработает так, как в эмуляторе, только существенно быстрее!

Создание пакета APKЭто может быть интересно для вас. Проект, содержащий черновые инструкции по созданию загружабельного пакета Android APK (см. ресурсы). Однажды созданный, пакет предоставляет ваш кастомизированный скрипт со средствами автоматической установки его на другие устройства с последующим запуском из главного меню приложений. Процесс создания пакета потребовал бы для описания отдельной статьи, это я оставляю для смелых из нас, кто способен освоить SL4A Wiki. Для "кое-чего почитать" по поводу успешного создания APK загляните на Split Hitter on the Web.

Несколько слов в заключениеПрограммирование приложений на Java есть не единственная опция для Android. Доступность SL4A также повышает нашу "хакеродоступность" относительно Android. Больше людей в разработке означает больше голов, а больше голов - это больше помощи и больше кода. Мы получим официальную поддержку Google, если сможем набрать критическую массу, которая сможет поднять профиль проекта во внутреннем рейтинге Google HQ. SL4A уже хорош, но официальный статус... пусть это наступит чем раньше тем лучше.

Resources

Google's Android SDK: developer.android.com/sdk

SL4A Project: code.google.com/p/android-scripting

SL4A API: code.google.com/p/android-scripting/wiki/ApiReference

AndFTP Home Page: www.lysesoft.com/products/andftp/index.html

Sharing SL4A Scripts as APKs: code.google.com/p/android-scripting/wiki/SharingScripts

Split Hitter: www.splithitter.com

Paul Barry ([email protected]) lectures at The Institute of Technology, Carlow, in Ireland. His latest book is Head First Python, which was published by O'Reilly Media in November 2010. Find out more about Paul at his Web site: paulbarry.itcarlow.ie.

Назад в тематический каталогНазад на страницу переводов из Linux Journal

www.lexpr.ru


Смотрите также