Как сделать программу на питоне для Андроид

13:29 19-12-2011 Zaterehniy

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

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

python на андроид. начало.
установка и обзор sl4a и python

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

Как сделать игру на Python под Android? (PyGame)


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

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

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

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

Пишем первое приложение.

Мы установили питон sl4a, получили первоначальные навыки по работе с оболочкой приступим к самому интересному — напишем простой скрипт, который допустим будет здороваться с пользователем. Для написания скриптов можно использовать как встроенный в оболочку браузер так и сторонний. Встроенный имеет одну очень полезную штуку- АПИ браузер, в котором мы можем посмотреть и вставить все доступные нам методы. Выберем в меню соответствующий пункт добавим скрипт, назовем его hello.py. поскольку все апи операционной системы андроид доступны нам в одном модуле первым делом импортируем его.

Import android
droid = android.Android()#инициализируем наш класс.
droid.makeToast(‘Hello’)#выводим сообщение в небольшем прозрачном окне

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

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

Тут все просто . Попробуем усложнить. Сделаем так что бы программа выводила текст который мы сами введем. И делала это на русском языке.

Как сделать мобильное приложение на Python (Калькулятор)


По поводу второго пункта достаточно одной строки в начале скрипта.
# -*- 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 тегами и добавил вторую форму
Иногда бывает нужно быстро глянуть что в буфере скопировано. Для себя я набросал простой скриптик.

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

Вот так у нас с вами получилось более или менее полезная программка.Далее оговорю несколько моментов которые нужно знать. Если мы используя наше приложение нажмем стрелку – назад то увидим наш скрипт не закрывается и сервис sl4a продолжает работать, запустив программу снова мы создаем еще один такой же процесс.

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

Читайте также:
Как сделать ромб в программе кумир

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

Источник: dimonvideo.ru

Как сделать программу на питоне для андроид

Полный спектр компьютерных услуг!

Загрузка. Пожалуйста, подождите.

X

Сообщение сайта

(Сообщение закроется через 2 секунды)

Внимание!

Ремонт компьютеров в калуге Рекламное место сдается

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

Decker

Просмотр профиля

20.8.2012, 16:41

Группа: Главные администраторы
Сообщений: 14349
Регистрация: 12.10.2007
Из: Twilight Zone
Пользователь №: 1

В этой статье я хотел бы рассказать о том, как создать полноценное приложение на 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. Итак:

Это замечательный фрейморк для написания приложение для 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.

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

Минусы kivy:

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

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

Хотелось бы сразу пресечь холивары на тему «для android только java, python не нужен». Я считаю, не важно, какие технологии «под капотом», главное чтоб приложение было качественным.

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

Источник: dml.compkaluga.ru

Приложение на python kivy для разнообразия рациона питания. От кода и до получения .apk файла для Android

Компьюлента Orion - Hi-Tech новости со всего света

Изучаю python kivy и для себя решил написал маленькое приложение, чтобы разнообразить свое питание. Решил поделиться. Статья рассчитана на новичков в kivy. Приложение занимает около 100 строк кода.

Цель создания велосипеда приложения:

  1. Избежать частых повторений в питании. Чтобы не употреблять одно и то же блюдо слишком часто.
  2. Не забывать блюда, которые ел, потом забыл и годами к ним не возвращался, потому что банально не помнил. У меня такое бывает.

Интро

Можно не читать, в интро всякая лирика.

Обращался за медицинской помощью, хотя раньше никогда ничем подобным не страдал. Пришлось пожить в одной стране, в одной гостинице, где кормили ежедневно яйцами на завтрак и больше ничем, так через месяц начал чесаться. Это мой личный опыт, я просто рассказываю, без навязывания. Наученный горьким опытом после этого для себя решил допускать как можно меньше повторений в еде, чтобы ничего не успевало в организме накопиться. Возможно, нет правил без исключения, наверное, овсянку можно есть и каждый день на протяжении десятков лет.

Скриншоты

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

Исходный код и пояснения

Я сознательно не использовал kv файлы, так как код дан в учебных целях, для людей, которые знакомы с python. Все написано на голом python. В пояснениях я не буду останавливаться на объяснении python кода, а сразу перейду к специфическим фишкам Kivy.

  • class MenuScreen(Screen): Класс отвечает за запуск стартовой странички приложения, его можно назвать как угодно, например StartScreen. И наследует kivy модуль Screen. Приложение состоит из 3-х окон, вот эти окошки и создаются с помощью этого модуля
  • box = BoxLayout(orientation=’vertical’) BoxLayout делит экран на равные части, по умолчанию горизонтально, я написал orientation=’vertical’, чтобы делить вертикально
  • Button(text=’Дневник питания’, on_press=lambda x: set_screen(‘list_food’))
    Button — создает кнопки, в on_press задается, какая функция будет запущена при нажатии.
  • .add_widget() — добавляет кнопки в слои и в окна
  • self.layout = GridLayout(cols=1, spacing=10, size_hint_y=None) Grid Layout чем-то напоминает тег table в html, указывается cols — кол-во колонок или rows — кол-во строк. Можно указывать оба параметра или один параметр.
    Экран будет разделен на нужное кол-во отсеков.
  • root = RecycleView(size_hint=(1, None), size=(Window.width, Window.height)) RecycleView — модуль, с помощью которого создается вертикальная прокрутка в моем приложении. Особенность RecycleView в том, что он строит скролы с элементами одинаковой ширины и высоты. И работает быстро. А есть модуль ScrollView, он может строить прокрутки с элементами разных размеров, но работает медленнее, чем RecycleView
  • config.get(‘General’, ‘user_data’) — в коде часто встречаются такие строки. Я просто в качестве хранилища данных использовал родное хранилище Config kivy. Ну, пусть будет несколько тысяч блюд, нет смысла городить огород с sqlite и чем-то подобным. Все данные хранятся в одном файлике. Хранится этот файлик в той же папке, что и само приложение, если указать self.directory как в моем коде, но можно указать self.user_data_dir, чтобы этот файлик не уничтожался при перестановке или обновлениях.
Читайте также:
Программа для работы планшета как телефон

Запуск на windows macos

Принцип для всех операционок одинаковый:

  1. Ставим python3
  2. Ставим kivy
  3. Создаем файл main.py и втыкаем в него целиком вышеуказанный код
  4. Запускаем командой python3 main.py

Программа должна заработать.

Сборка apk файла и запуск на телефоне с андроид

Итак, у нас есть файл с кодом программы, написанный на python. Как теперь создать приложение, чтобы его можно было запустить на телефоне с андроидом? Раньше это был достаточно мудреный процесс, требующий навыков и танцев с бубном. Теперь это не проблема.
Вот пошаговая инструкция:

  1. Скачиваем готовую виртуальную машину от разработчиков kivy, в которой уже все настроено. https://github.com/Zen-CODE/kivybits/blob/master/KivyCompleteVM/ReadMe.txt. Пароль: kivy
  2. Запускаем ее в Virtual Box.
  3. Открываем терминал и вводим следующие команды: # Ставим последнюю версию python-for-android
    cd /home/kivy/Repos
    rm -fr python-for-android/
    git clone https://github.com/kivy/python-for-android.git
    cd ~
    mkdir Project
    cd Project
    git clone https://github.com/Alexmod/FoodOptions.git
    cd FoodOptions
    buildozer android debug
    # Первый раз эта команда будет долго тянуть 100500 всяких библиотек,
    # но в следующие разы выполняться за секунды.
  4. Последняя команда создает папку bin в той же директории, в bin вы найдете файл foodoptions-0.1-debug.apk, который можно закинуть на телефон, установить и наслаждаться приложением

Как закинуть apk файл на телефон?

Можно, конечно, сделать это как угодно, отправить себе по почте, куда-нибудь выложить, закинуть в телеграмм и т.д., а потом скачать приложение на телефон.

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

sudo apt install adb

После установки заходим в папку bin и вводим команду

adb install -r foodoptions-0.1-debug.apk

И можно примерно через минутку увидеть на телефоне приложение после того, как увидим
Success в консоли.

Если вдруг приложение падает или ведет себя не так, как ожидалось, то есть вот такая команда для просмотра ошибок

adb logcat| grep python

Русское имя приложения

Если вы захотите, чтобы ваше приложение называлось по-русски, например, «Дневник питания», то надо внести изменения в файл:

В тег appName прописывается русское название приложения, эта папка создается после первого запуска buildozer android debug. После того как файл отредактируете, вернитесь назад в папку FoodOptions и запустите buildozer android debug повторно. Файл соберется по-новой. После установки на телефон имя программы будет написано на русском.

О файле buildozer.spec

Вот мой файл с гитхаба: buildozer.spec
Именно этот файл указывает buildozer-у, как именно собрать пакет.

Кому интересно, то введите внутри виртуалки команду: Там множество разных вариаций.

cd /tmp
buildozer init

Будет создан дефолтный файл buildozer.spec с кучей комментариев и пояснений. Например, если вы хотите какую-нибудь свою иконку для приложения, то указываете в строке:

свой файл с иконкой. И приложение соберется уже с вашей иконкой.

В общем, рассказ о файле buildozer.spec может занять целую статью, а то и две. Если вам надо подгрузить какой-нибудь специфический модуль, который не входит в официальную библиотеку python, то это делается в строке requirements =.

Загрузка приложения в Google Play

И дальше запускать: Надо зарегаться, пройти все процедуры, получить ключи.

sudo apt install zipalign
buildozer android release
jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore /path/keystore bin/apk-unsigned.apk apkname
zipalign -v 4 bin/apk-apkname-unsigned.apk bin/apk-apkname-release.apk

Полученный файл apk-apkname-release.apk заливать в Google Play.

Ссылки

В принципе любой человек, который умеет программировать на python, сможет изменить приложение и легко добавить следующее:

  1. Добавить дизайн, чтобы приложение стало красивое
  2. Использовать kv-файлы, чтобы код стал более легким. Я бы привел такую аналогию: те кто знаком с веб-программированием, представьте себе код без html темплейтов и с html темплейтами. Вынос в kv-файлы кнопок, слоев и прочего — это что-то вроде jinja2 для веб-программиста. Логика остается в .py файлах, а фенечки — в kv-файлах.
  3. Добавить подсчет калорий, белка, углеводов, жиров (БЖУ)
  4. Добавить возможность фотографировать блюда

Источник: orion-int.ru

Рейтинг
( Пока оценок нет )
Загрузка ...
EFT-Soft.ru