Android app html php

Build Your First PHP for Android Application

Операционная система Android повергла рынок сматрфонов в шок :). В отличии от компании Apple, которая предъявляет достаточно строгие требования к разработчикам, которые хотят выставлять свои приложения в iPhone App Store, Google создал платформу Android открытой (в оригинале wide open). В настоящее время вы можете писать приложения PHP. Парни из Irontech создали необходимое, и используя Scripting Layer для Android (SL4A), вы можете создавать на PHP приложения для Android.

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

Установка PHP для Android

Для установки PHP для Android, у вас должен быть телефон или эмулятор поддерживающий Android версии 1.5 или больше, также в настройках установки приложений, должна стоять галочка на установке приложений из неизвестных источников. После всего этого, просто установите два пакета SL4A environment и PHP for Android APK.

Установка SL4A достаточно проста, однако после установки пакета PHP for Android application, необходимо запустить его и нажать «install» для полной установки(В процессе установки программа скачивает где-то около 2 МБ). Если у вас появились проблемы с установкой, то есть видео-демонстрация на Vimeo((или здесь)).

Настройка среды разработки PHP для Android

Если вы установили PHP для Android, теоретически, вы можете писать приложения на своем телефоне. Но с практической точки зрения, это не будет хорошей идеей. То что вы должны сделать это скачать Android SDK, установить эмулятор и начать писать код, используя ваш любимый редактор.

Читайте также:  Портфолио мопса "Валли"

После скачивания SDK, разархивируйте содержимое, запустите приложение Android, находящееся в каталоге tools, и установите эмулятор. В меню Android SDK and AVD Manager, выберите Virtual Devices и нажмите на кнопку New. Назовите ваш эмулятор (например «Droid2») и выберите Android 2.2. Введите 10 МБ в качестве размера SD Card и нажмите Create AVD.

Теперь у вас есть настроенный эмулятор, нажмите кнопочку Start. Здесь возникает некоторая сложность, вы не можете просто скопировать файлы на виртуальное устройство, которое только что создали. Вам необходимо настроить форвардинг портов (port forwarding) и поместить ваш PHP-скрипт на виртуальное устройство, используя программу под названием adb, которая является частью Android SDK. Она также находится в каталоге tools.

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

На вашем запущенном виртуальном устройстве перейдите на экран Applications и нажмите SL4A.
# на экране SL4A, нажмите кнопочку Menu, выберите View и выберите Interpreters.
# Нажмите Menu снова, выберите Start Server и выберите Private.
# Опустите область уведомлений (Android notification bar) вниз и вы увидите Службу SL4A. (Нажмите на службу и запишите номер порта, который прослушивает ваш сервер, например 47000.)
# Откройте командную строку и установите форвардинг портов, используя команду adb. Например, введите команду «adb forward tcp:9999 tcp:47000» (замените 47000 на номер вашего порта).
# Установите переменную окружения AP_PORT. На UNIX или Mac, запустите «export AP_PORT=9999». На Windows «set AP_PORT=9999».
# Для теста работы эмулятора запустите «run adb push my_script.php /sdcard/sl4a/scripts» (замените my_script.php на название вашего скрипта).

Вы также можете работать с реальным телефоном. Следуйте теми же шагами, что и с эмулятором. Чтобы облегчить процесс установите переменную окружения ANDROID_HOME, которая будет указывать на расположение вашего Android SDK и добавьте путь к каталогу tools в список путей (что-то я не особо понял как это сделать на телефоне, если читатели знают, то пусть напишут в комментариях)

Создание Android приложений на PHP

Написание приложений на PHP очень легкий процесс после того как вы настроили все что описано выше. Единственно что стоит отметить, что версия PHP для Android очень урезана. В вашем распоряжении будут основные функции PHP и поддержка JSON. А если же вы являетесь разработчиком Android, который хорошо знаком с Java фреймворком для Android, вы заметите что Scripting Layer для Android не обеспечивает доступ ко всем компонентам, которые бы вы получили, используя для разработки Java (будем надеятся что это только пока).

То что обеспечивает SL4A — это только фасад к подмножеству Android API. (Полный список методов, обеспечиваемых SL4A, доступен тут ) В чем же прикол PHP для Android — вы можете легко разрабатывать приложени е и видеть его работу, написав всего лишь несколько строк кода. Давайте рассмотрим приложение, которое работает с котировками, которое занимает меньше 60 строк кода.

  1. define( ‘QUOTE_SERVER’ , ‘http://quoter.take88.com/?ticker=%s’ );
  2. require_once( «Android.php» );
  3. $droid = new Android();
  4. $action = ‘get_tickers’ ;
  5. $tickers = » ;
  6. while (TRUE)
  7. switch ($action)
  8. case ‘quote’ :
  9. $droid->dialogCreateSpinnerProgress( «Querying stock information server . » , «Please wait» );
  10. $droid->dialogShow();
  11. $quotes = @array_slice(json_decode(file_get_contents(sprintf(QUOTE_SERVER, $tickers))), 0, 3);
  12. $droid->vibrate();
  13. $droid->dialogDismiss();
  14. // Possible data points.
  15. // «SYMBOL»,»NAME»,»LAST_TRADE»,»MORE_INFO»,»LAST_TRADE_DATE»,»LAST_TRADE_TIME»,»OPEN»,»DAYS_HIGH»,»DAYS_LOW»,»DIVIDEND_SHARE»,»PE_RATIO»,»52_WEEK_LOW»,»52_WEEK_HIGH»,»VOLUME»
  16. $output = » ;
  17. for ($i = 0, $cnt = count($quotes); $i < $cnt; $i++)
  18. $output .= «Company: » . $quotes[$i]->NAME . «\n» ;
  19. $output .= «Ticker: » . $quotes[$i]->SYMBOL . «\n» ;
  20. $output .= «Last trade: $» . $quotes[$i]->LAST_TRADE . «\n» ;
  21. $output .= «\n» ;
  22. >
  23. $output = html_entity_decode($output, ENT_QUOTES, «UTF-8» );
  24. // Something is wrong with ‘
  25. $output = str_replace( «‘» , «‘» , $output);
  26. $droid->dialogCreateAlert( «Your stock quotes» , $output);
  27. $droid->dialogSetPositiveButtonText( «Get new quote» );
  28. $droid->dialogSetNegativeButtonText( «Exit» );
  29. $droid->dialogShow();
  30. $response = $droid->dialogGetResponse();
  31. if ($response[ ‘result’ ]->which == ‘negative’ )
  32. $action = «exit» ;
  33. > else
  34. $action = ‘get_tickers’ ;
  35. >
  36. break ;
  37. case ‘get_tickers’ :
  38. $response = $droid->getInput( «Stock Tickers (max. 3)» , «Enter Tickers.\nSeparate with spaces.» );
  39. $tickers = str_replace( ‘ ‘ , ‘+’ , $response[ ‘result’ ]);
  40. $droid->vibrate();
  41. $action = ‘quote’ ;
  42. break ;
  43. case ‘exit’ :
  44. $droid->exit();
  45. exit();
  46. break ;
  47. >
  48. >
  49. ?>

Скопируйте и поместите этот код в редактор, сохраните под именем quoter4android.php и загрузите его в эмуляторе. Если эмулятор не запущен, запустите его, настройте форвардинг портови загрузите quoter4android.php, используя adb.

Для запуска приложения в вашем эмуляторе, перейдите на экран приложения, нажмите иконку SL4A и нажмите quoter4android.php.

Для установки quoter4android.php на ваш телефон, вы можете настроить форвардинг портов, но легче соединить телефон с компьютером через USB и скопировать скрипт в каталог sl4a/scripts. Однако для запуска скрипта, необходимо отсоединить его от компьютера, иначе вы не увидите установленные скрипты, а зщатем кликните иконку SL4A.

С SL4A и PHP for Android можно сделать много интересных вещей; эта статья всего лишь маленькая демонстрация возможностей. Все эти приложения очень молоды — новая версия SL4A вышла когда я писал эту статью — и в будущем мы будем получать все новые и новые возможности.

Источник

Как создать android приложение на php (+ html + js + css)

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

Прежде всего хочется обратиться к профессиональным разработчикам android-приложений и к людям не занимающимся вообще никакой разработкой.

Это НЕ статья о том как профессионально разрабатывать android приложения. Если вы не профессионал и ничего не знаете о профессиональной разработке android приложений, но хотите им стать, вам не надо это читать.

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

Приложение может стать вполне рабочим, например вот это в Google Play опубликовано без проблем. (Скачиваний маловато, но я не задавался целью раскрутить приложение, я создал его для своих нужд, а ссылка на маркете позволяет легко им делиться с друзьями).

Наверное, невозможно найти разработчика на PHP, который категорически не смог бы сверстать в HTML требуемый ему интерфейс, оживить его с помощью javascript и придать нужный ему вид с помощью css.

Не все из нас смогут сделать то же самое работая на заказ, требования к фронтенду современных продакшен сайтов могут оказаться трудновыполнимыми, а порой и вообще непонятными.

С другой стороны, когда нам нужен какой-то web-интерфейс для личного пользования, мы с лёгкостью его реализуем используя весь этот html/js/css так, как будто мы всю жизнь только фронтендом и занимались.

Думаю, ни для кого не секрет, что можно сделать android приложение c webView и поместить в него ваш HTML5 интерфейс, но как взаимодействовать с устройством?

Взаимодействие с устройством осуществляется добавлением программного интерфейса в виде объекта javascript. Вызывая методы этого объекта программист может из webView взаимодействовать например с файловой системой устройства, делать в принципе всё, что позволяют методы этого объекта, реализованные на языке Java.

Мне, как человеку много лет кодившим на php и иногда на javascript показалось очень удобным иметь в своём js коде объект с именем PHP и обеспечивающим как можно большее количество php функций, вызывая которые я мог бы например работать с файлами устройства, оперировать функцией date и другими.

Конечно, реализовать все PHP функции маловероятно, но мне это и не надо, буду добавлять по мере необходимости.

Сейчас реализованы вот такие функции ссылка на исходный код PHPInterface

Репозиторий на гитхаб в котором этот класс будет время от времени обновляться и совершенствоваться.

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

Ниже описаны особенности реализованых методов (если метод работает полностью совместимо с стандартной функцийе php его нет в этой таблице).

Метод Особенности
file_get_contents На данным момент принимает только короткие имена файлов (например «file.txt» ). Созданный файл будет доступен только тому приложению, которое его создало. Планируется в дальнейшем поддержка полных имён файлов, например «/mnt/sdcard/app/data/file.txt» .
file_exists См. file_get_contents
file_put_contents См. file_get_contents . Также, надо иметь ввиду, что при использовании констант, например FILE_APPEND , нужно использовать PHPInterface.FILE_APPEND ;
str_replace( String search, String replace, String subject, boolean getCount) В отличии от оргигнальной php функции, если нам нужно количество замен, мы не передаём переменную по ссылке, а указываем вместо неё true. Тогда PHPInterface.STR_REPLACE_COUNT будет содержать количество замен после вызова метода.
in_array(needle, haystack) Пока работает только с массивами строк и целых чисел ( long и int )
strval Пока работает только с аргументами типа long и int
count Не работает с простыми типами java (такими как long и int ), только с теми, которые наследуются от Object

Список методов, реализванных на 2019-05-30

  • Методы PHPInterface
  • count
  • date
  • file_get_contents
  • file_exists
  • file_put_contents
  • in_array
  • intval
  • str_replace
  • strlen
  • strval
  • time

Примеры использования в java коде:

 public class MainActivity extends Activity < public PHPInterface PHP; public void foo() < PHP = new PHPInterface(this.getApplicationContext()); long currentTimestamp = PHP.time(); >> 

или, если нужен при работе приложения в фоне:

 public class ServiceDM extends Service < public PHPInterface PHP; public void foo() < PHP = new PHPInterface(this); long currentTimestamp = PHP.time(); >> 

Пример использования в javascript коде:

 //Практически в любом месте js загруженного в webView var currentTimestamp = PHP.time(); PHP.file_put_contents('time_of_start.txt', currentTimestamp); 

Источник

Оцените статью