как вы успели заметить из заголовка статьи речь пойдет о питон на андроиде.
содержание статьи:
-установка и обзор sl4a
-пишем простое приложение из под sl4a
-прикручиваем графический интерфейс
главным достоинством python на андроид я считаю возможность писать несложные приложения
непосредственно на своем смартфоне. чтобы иметь такую возможность нам
пригодится 1. сам питон 2. оболочка для запуска пользовательских скриптов sl4a.
официальная страница проекта на гуглокоде. оттуда качаем последнюю версию sl4a и
устанавливаем на свой девайс. следующим шагом будет установка самого интерпретатора
python. далее по пунктам:
-запускаем sl4a
-нажимаем клавишу меню
-в открывшемся меню жмем пункт view
-в контекстном меню выбираем первый пункт interpreters
-попадаем в список установленных интерпретаторов. жмем клавишу меню, выбираем пункт add
-в появившемся меню выбираем python 2.6.2
далее нам будет предложено чем качать апк файл питона. он весит около 124 кб. скачиваем
его, устанавливаем. в меню появится знакомая иконка, запускаем и жмем первый
пункт. начнется закачка всех необходимый компонентов(все это дело весит порядка
10мб). после закачки из приложения можно выйти, о нем можно забыть. при
запуске sl4a перед нами появляется список скриптов- примеров использования
питон. можно посмотреть их содержание, запустить, попробовать добавить ярлык на
рабочий стол.
тапнем по любому скрипту - перед нами всплывает небольшая менюшка- на ней расположены
следующие функции:
1.запустить в консоли. 2.запуск как демона. 3.редактировать скрипт. 4.сохранение под новым именем. 5.удалить
Написанные скрипты можно добавить на рабочий стол. Долгий тап на рабочем столе, затем жмем ярлыки потом выбираем пункт «script» из списка добавляем необходимый нам скрипт.
Мы установили питон sl4a, получили первоначальные навыки по работе с оболочкой приступим к самому интересному - напишем простой скрипт, который допустим будет здороваться с пользователем. Для написания скриптов можно использовать как встроенный в оболочку браузер так и сторонний. Встроенный имеет одну очень полезную штуку- АПИ браузер, в котором мы можем посмотреть и вставить все доступные нам методы. Выберем в меню соответствующий пункт добавим скрипт, назовем его hello.py. поскольку все апи операционной системы андроид доступны нам в одном модуле первым делом импортируем его.
Import android
droid = android.Android()#инициализируем наш класс.
droid.makeToast('Hello')#выводим сообщение в небольшем прозрачном окне
Результат ниже
Тут все просто . Попробуем усложнить. Сделаем так что бы программа выводила текст который мы сами введем. И делала это на русском языке.
По поводу второго пункта достаточно одной строки в начале скрипта.
# -*- 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)#выводим результат
Согласитесь программа, выполняющая одну функцию - приветствие или вывод набранного текста будет нам не очень полезна. "Куда полезнее будет обработка кода изображения для форума", подумал я и за пару минут переделал скрипт . Код ниже :
# -*- 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()
Вот так у нас с вами получилось более или менее полезная программка.Далее оговорю несколько моментов которые нужно знать. Если мы используя наше приложение нажмем стрелку – назад то увидим наш скрипт не закрывается и сервис sl4a продолжает работать, запустив программу снова мы создаем еще один такой же процесс. Закрыть их можно перейдя в скрипт монитор долгим тапом по процессу и выбором пункта стоп. Что крайне неудобно. Выход – после выполненного действия закрывать процесс – sys.exit(). Простые же ява скрипты данной «неудобностью» не обладают.
Рис.8 погодный информер на яваСкрипт
есть возможность писать и запускать из под sl4a простые яваСкрипты. Так же их можно добавить на рабочий стол для удобства использования. Не долго думая написал простенький погодный информер, там дальше понеслась- и секундомер с записью результатов и отправлялку ссылок ко мне почту и т.д. Конечно, этих погодных информеров в макете хоть отбавляй, но у всех большой недостаток - моего скромного поселка городского типа в их списке нет. Да и согласитесь гораздо приятнее лицезреть на рабочем столе сделанное своими руками…если конечно же это не пролитый кофе ))))))). Всем спасибо за внимание, с наступающим всех вас и до новых встреч .
Прикрепленный файл #1:
Молодец, спасибо разжевал все, не такое оно и страшное как я думал
0 ответить