категории | RSS
  

питон на андроид. начало


python на андроид. начало.

как вы успели заметить из заголовка статьи речь пойдет о питон на андроиде.
содержание статьи:
-установка и обзор sl4a
-пишем простое приложение из под sl4a
-прикручиваем графический интерфейс
установка и обзор sl4a и python

главным достоинством python на андроид я считаю возможность писать несложные приложения
непосредственно на своем смартфоне. чтобы иметь такую возможность нам
пригодится 1. сам питон 2. оболочка для запуска пользовательских скриптов sl4a.
официальная страница проекта на гуглокоде. оттуда качаем последнюю версию sl4a и
устанавливаем на свой девайс. следующим шагом будет установка самого интерпретатора
python. далее по пунктам:
-запускаем sl4a
-нажимаем клавишу меню
-в открывшемся меню жмем пункт view
-в контекстном меню выбираем первый пункт interpreters
-попадаем в список установленных интерпретаторов. жмем клавишу меню, выбираем пункт add
-в появившемся меню выбираем python 2.6.2

Рис.1 ставим питон

далее нам будет предложено чем качать апк файл питона. он весит около 124 кб. скачиваем
его, устанавливаем. в меню появится знакомая иконка, запускаем и жмем первый
пункт. начнется закачка всех необходимый компонентов(все это дело весит порядка
10мб). после закачки из приложения можно выйти, о нем можно забыть. при
запуске sl4a перед нами появляется список скриптов- примеров использования
питон. можно посмотреть их содержание, запустить, попробовать добавить ярлык на
рабочий стол.
тапнем по любому скрипту - перед нами всплывает небольшая менюшка- на ней расположены
следующие функции:

Рис.2 "панель с основными функциями”.

1.запустить в консоли. 2.запуск как демона. 3.редактировать скрипт. 4.сохранение под новым именем. 5.удалить
Написанные скрипты можно добавить на рабочий стол. Долгий тап на рабочем столе, затем жмем ярлыки потом выбираем пункт «script» из списка добавляем необходимый нам скрипт.
Пишем первое приложение.

Мы установили питон sl4a, получили первоначальные навыки по работе с оболочкой приступим к самому интересному - напишем простой скрипт, который допустим будет здороваться с пользователем. Для написания скриптов можно использовать как встроенный в оболочку браузер так и сторонний. Встроенный имеет одну очень полезную штуку- АПИ браузер, в котором мы можем посмотреть и вставить все доступные нам методы. Выберем в меню соответствующий пункт добавим скрипт, назовем его hello.py. поскольку все апи операционной системы андроид доступны нам в одном модуле первым делом импортируем его.
Import android
droid = android.Android()#инициализируем наш класс.
droid.makeToast('Hello')#выводим сообщение в небольшем прозрачном окне

Результат ниже

Рис.3 результат работы метода "makeToast"

Тут все просто . Попробуем усложнить. Сделаем так что бы программа выводила текст который мы сами введем. И делала это на русском языке.
По поводу второго пункта достаточно одной строки в начале скрипта.
# -*- coding: utf-8 -*-
Теперь реализуем первоначальный пункт поставленной задачи-реализуем ввод текста.
tags=droid.dialogGetInput("привет", "вводи текст").result#переменной tags присвоим значение передаваемое методом dialogGetInput - диалоговое окно для ввода текста.Первый аргумент - сообщение,
отображаемое в заголовке, второй - текст ниже заголовка.
Код нашего скрипта-
# -*- coding: utf-8 -*-
import android
droid = android.Android()
tags=droid.dialogGetInput("привет", "вводи текст").result#диалоговое окно
droid.dialogDismiss() #скрываем диалог
droid.makeToast(tags)#выводим результат


рис.4 после небольшой доработки

Согласитесь программа, выполняющая одну функцию - приветствие или вывод набранного текста будет нам не очень полезна. "Куда полезнее будет обработка кода изображения для форума", подумал я и за пару минут переделал скрипт . Код ниже :
# -*- coding: utf-8 -*-
import android
droid = android.Android()
tags=droid.dialogGetInput("код изображение", "вставьте ссылку").result
droid.dialogDismiss()
image='[img]' tags['data'] '[/img] [!!!]'#обрабатываем код
droid.setClipboard(image)#копируем обработанный код в буфер обмена
droid.vibrate(300)#короткая вибрация, сигнализирующая об успешной операции
droid.makeToast("код скопирован")
прикручиваем GUI.

Алгоритм нашей программы построен, основные функции реализованы, перейдем к доработке а именно к графической части программы. Наверное, всем нам приятно пользоваться софтом интерфейс, которого не только удобен и прост, но и красив.Приступим к верстке нашего интерфейса. Весь код располагается в html страничке. В питон годе нам останется обработать событие и выполнить нужную нам функцию. В данном случае - скопировать текст в буфер смартфона.
Код html страницы – лицо нашего приложения.


код для форума


var droid = new Android();
var image = function() {
droid.eventPost("tag", document.getElementById("tag").value);
}




введите ссылку на картинку







Тут все просто . var droid = new Android(); -инициализируем модуль для работы с телефоном. создаем событие которое будет отлавливаться эвенты и зарегистрируем его под именем tag. Для ввода текста создаем форму.
Питон код
# -*- coding: utf-8 -*-
import android
droid = android.Android()
droid.webViewShow('file:///sdcard/sl4a/scripts/tags.html')#показываем нашему приложению что его интерфейс html страница
while True:# создаем цикл в котором будут обрабатываться наши события
tags = droid.eventWaitFor("tag").result#переменная которая будет содержать результат обработанного события(введенный текст)
image='[img]' tags[\\"data\\"] '[/img]'#получаем введенный текст и добавляем к нему теги
droid.setClipboard(image)#копируем результат в буфер
droid.vibrate(300)#короткая вибрация
droid.makeToast("код скопирован в буфер")#сообщение об успешной операции


Рис.5 вот так преобразилось наше приложение

Рис.6 слегка подрисовал html тегами и добавил вторую форму
Иногда бывает нужно быстро глянуть что в буфере скопировано. Для себя я набросал простой скриптик.
 # -*- coding: utf-8 -*-
import android
droid = android.Android()
txt= droid.getClipboard().result#возвращает текст из буфера
droid.dialogCreateAlert('содержание буфера обмена', txt)
droid.dialogShow()


Рис.7 алерт окно в действии

Вот так у нас с вами получилось более или менее полезная программка.Далее оговорю несколько моментов которые нужно знать. Если мы используя наше приложение нажмем стрелку – назад то увидим наш скрипт не закрывается и сервис sl4a продолжает работать, запустив программу снова мы создаем еще один такой же процесс. Закрыть их можно перейдя в скрипт монитор долгим тапом по процессу и выбором пункта стоп. Что крайне неудобно. Выход – после выполненного действия закрывать процесс – sys.exit(). Простые же ява скрипты данной «неудобностью» не обладают.

Рис.8 погодный информер на яваСкрипт
есть возможность писать и запускать из под sl4a простые яваСкрипты. Так же их можно добавить на рабочий стол для удобства использования. Не долго думая написал простенький погодный информер, там дальше понеслась- и секундомер с записью результатов и отправлялку ссылок ко мне почту и т.д. Конечно, этих погодных информеров в макете хоть отбавляй, но у всех большой недостаток - моего скромного поселка городского типа в их списке нет. Да и согласитесь гораздо приятнее лицезреть на рабочем столе сделанное своими руками…если конечно же это не пролитый кофе ))))))). Всем спасибо за внимание, с наступающим всех вас и до новых встреч .

Прикрепленный файл #1:
Внимание! У вас нет прав, для просмотра скрытого текста.
(772 b)


Zaterehniy
2011-12-19T13:29:12Z
Здесь находятся
всего 0. За сутки здесь было 0 человек

Комментарии 15

#15   mavrikin    

Молодец, спасибо smile разжевал все, не такое оно и страшное как я думал


0 ответить

#15   Zaterehniy    

http://code.google.com/p/python-for-android/ сайт проекта. пробуйте.


0 ответить

#15   TAHKICT    

А можно компоненты для python где-то отдельно скачать? На планшете пока нет инета(, а питона хочется(


0 ответить

#15   Zaterehniy    

новый интерфейс это уже тема отдельной статьи . которую я к сожалению никак не нахожу времени дописать.


0 ответить

#15   WyTHuK    

Пора бы статью обновить, описать новые функции по созданию интерфейса


0 ответить

#15   Zaterehniy    

Что то новенькое спасибо огромное за ссылку. Пойду посмотрю.


0 ответить

#15   PapaRoach    

Вот некоторые новости про данное направление, если кому интересно http://habrahabr.ru/blogs/android_development/135902/


1 ответить

#15   Zaterehniy    

об этом я пока не думал. начало в названии означает - первые шаги в питон на андроид а не начало цикла статей по этому поводу. может напишу еще что нибудь в этом роде, не обещаю.
-------------
Добавлено в 00.55: форум съел весь код. смгтните прикрепленный архив.


0 ответить

#15   Kopol-xpoh    

питон на андроид. начало
А продолжение когда примерно ожидать?


0 ответить

#15   Zaterehniy    

не помешает в любом случае- минимум, для себя, разбирающемуся в питоне человеку. у остальных же всегда будет стоять этот вопрос.


* редактировал(а) Zaterehniy 17:14 21 дек 2011

0 ответить

Напомнить пароль