0. Вступление На пике популярности умных телефонов каждый пользователь смартфонов хотел бы писать приложения для собственного аппарата. К сожалению для большинства начинающих программистов установка и настройка SDK, не говоря уже о самом кодинге, может вызвать кучу проблем. Ко всему этому требуется знать хотя бы основы языка программирования для нужной платформы. Некоторые могут поспорить, сказав что на рынке программных продуктов уже появились предложения, дающие возможность создания приложений на других языках, как например MonoDroid. Но и это не исключает множество подводных камней для начинающих кодеров. Однажды мне понадобилось написать небольшое приложение для моего телефона c Android, для автоматизации некоторых действий. Так как я не наделен обширными знаниями ни в одной области программирования, было решено найти простой способ выполнить требуемую задачу. После недолгих поисков я нашел возможность создавать и запускать php-скрипты прямо с моей трубки, что показалось мне гораздо привликательнее, чем разбираться c java =) В данной статье я расскажу о создании и запуске на аппаратах c Android скриптов написанных при помощи популярного языка PHP. Хотелось бы избежать холиваров на тему никчемности и "чемности" данного языка, так как данная статья просто рассказывает о реализации такой возможности. 1. Установка и настройка требуемых пакетов. Для начала нам потребуется скачать и установить два пакета: SL4A environment и PHP for Android APK . По очереди установите их на свой аппарат, после чего запустите PHP for Android и нажмите кнопку Install. Приложение выкачает и распакует из интернета несколько требуемых архивов. В реале уже можно создавать скрипты прямо с вашего аппарата, но не стоит торопиться, так как гораздо удобнее работать прямо с вашего компьютера, проверяя работоспособность на эмуляторе. Надо сказать что SL4A поддерживает не только php, но и несколько других скриптовых языков, в частности мой любимый perl =) Что бы настроить эмулятор, вам потребуется скачать Java SE Runtime Environment и Android SDK . Установить первое и распаковать второе в любую удобную вам папку, пусть это будет "С:\android-sdk-windows" (если конечно вы используете Windows). Затем запустите SDK Setup.exe. Вам предложат скачать и установить кучу пакетов, но если вы не желаете тратить траффик или время, просто нажмите "Cancel". После проделанных оппераций перейдите на вкладку "Available packages" и выберите нужную платформу, в моем случае это "SDK Platform Android 2.1, API 7, revision 1 \ Archive for Windows", так как именно такая ось стоит на моем аппарате. Жмем "Install selected" и ждем окончания загрузки и установки требуемых пакетов. Теперь вам потребуется создать новое устройство на вашем компьютере. Для этого запускаем SDK Manager.exe, переходим на вкладку "Virtual devices" и нажимаем на кнопку "New". Вводим название нашего устройства и выбираем требуемую платформу в поле находящемся ниже. Указываем размер сзодаваемой SD - карточки, например пусть это будет 10 мегобайт. Можно конечно подключить некоторые аппаратные средства на вашем компьютере, например микрофон, но на данном этапе нам это не требуется. Затем нажимаем "Create AVD" и получаем готовое виртуальное устройство. Запустить его можно кнопкой "Start". На этом наши действия по настройке рабочей платформы не заканчиваются. Вам потребуется установить наши apk пакеты на только что созданный эмулятор. Для этого перейдем в папку с нашим Android SDK, а затем в папку tools (или platform-tools). В данном каталоге находится требуемая нам утилита, а имеенно adb.exe. Запускается она слеующим образом: Code: c:\android-sdk-windows\platform-tools>adb install [путь к установочному пакету] Запусите установку наших пакетов и ищите установленные приложения на вашем эмуляторе. Для передачи файлов на нашу виртуальную флэш карту мы воспользуемся ddms.bat, находящийся в папке tools. Запустите его при работающем эмуляторе, выберите нужное виртуальное устройство, нажмите "Devices"->"File Explorer" и перейдите в папку "/sdcard/sl4a/scripts". В эту папку мы и будем загружать наши скрипты, нажимая на маленькую иконку сверху (вторая слева). 2. Создание самого приложения. Закончив с утоновкой и настройкой эмулятора, мы можем начать написание нашего приложения. Я решил написать небольшой скрипт, позволяющий удаленно производить некоторые элементарные опперации с вашим мобильным устройством. Для начала нам нужен управляющий файл, в котором будут находится команды, кои и будет считывать наш скрипт. Файл будет находится на удаленном сервере, и управляться другим скриптом, который будет записывать команды в наш файл. Команда будет иметь следующий вид: toast:Hello!:1292957649 - где toast - команда приказывающая вывести всплывающее окно с текстом Hello!, а 1292957649 - время создания данной команды, создаваемой функцией php time() . Время нам требуется для того, что бы скрипт на телефоне не выполнял одну и ту же комманду несколько раз, как все это работает, вы поймете позже. Как сами видите, для разделения атрибутов используется двоеточие. Скрипт производящий запись будет выглядеть следующим образом (записывать будем в файл 1.php): PHP: <form action='' method=POST> <input type=text name='command' size='20'> <input type=submit value='Command!'> </form> <? if ($_POST['command']) { echo $_POST['command']; $fp = fopen("1.php", 'w+'); flock($fp, LOCK_EX); fwrite($fp, $_POST['command'] . ":" . time()); flock($fp, LOCK_UN); fclose($fp); } ?> Комманды будем вводить в следующем виде: команда:атрибут, например toast:Hello!. Время добавится автоматически. Скрипт на нашем телефоне будет поддерживать следующие комманды Code: [B]toast:message[/B] - всплывающее окно с тектом [message] [B]vibrate[/B] - заставить телефон вибрировать [B]sms:number|message[/B] - отправить sms на номер [number] с текстом [message], обратите внимание что телефон и сообщение разделяются символом "|" [B]recaudio:rectime[/B] - начать запись с микрофона, где rectime - время записи в секундах Теперь перейдем к основному нашему скрипту. PHP: <?php // (c) radioked // Настройки $url = "http://yor_host/1.php"; // url управляющего скрипта $sleeptime = 60; // время в секундах, на которые засыпает скрипт перед повторным обновлением // Вывести тост =) function toast($message) { global $droid; $droid -> makeToast($message); } // Вибрация function vibrate() { global $droid; $droid->vibrate(); } // Посыл смс function sendsms($atr) { global $droid; list($phone, $text) = explode ("|", $atr); echo "Number: " . $phone . " Text: " . $text . "\n"; if ($droid->smsSend($phone, $text)) { echo "Sms sended!\n"; } } // Запись с микрофона в айдифайл на sd-карту function recmic($rectime) { global $droid; $droid -> recorderStartMicrophone("/sdcard/audio" . time() . ".amr"); sleep($rectime); $droid -> recorderStop(); } set_time_limit(0); $time = time(); while (1) { $result = file_get_contents($url); echo "===== Data start ===== \n"; echo $result . "\n"; list($c, $a, $t) = explode (":", $result); echo $c . " = " . $a . " Time = " . $t . "\n"; if ($t != $time) { switch($c) { case "toast" : toast($a); break; case "vibrate" : vibrate(); break; case "sms" : sendsms($a); break; case "recaudio" : recmic($a); break; default: break; } $time = $t; } echo "===== Data end ===== \n\n"; sleep($sleeptime); } ?> Думаю в данном коде все должно быть понятно, я затрану лишь ключевые моменты. Обратим внимание на строки: PHP: require_once("Android.php"); $droid = new Android(); Как видим мы подключаем класс Android.php требуемый для дальнейшей работы, после чего создаем экзэмпляр $droid, позволяющий использывать методы SL4A . Например: PHP: $droid -> makeToast("Hello!"); который выведет всплывающее окно с текстом Hello!. Или: PHP: $droid->smsSend("+7xxxxxxxxxx", "Hello!"); который отправит смс на номер +7xxxxxxxxxx с содержанием Hello!. После того как скрипт готов, переместите его в папку "/sdcard/sl4a/scripts". Затем запустите SL4A и выберите в списке наш php-файл. Если все правильно, вы должны увидеть результат правильной работы. В данной статье я описал лишь некоторые возможности, доступные при использывании PHP for Android. Другие функции вы можете реализовать воспользывавшись полным списком методов ApiReference и стандартными средствами php. Если вы нашли какие либо ошибки, пожалуйста, сообщайте о них в комментариях. 3. Список ссылок приведенных в статье: Code: SL4A environment - http://android-scripting.googlecode.com/files/sl4a_r3.apk PHP for Android APK - http://php-for-android.googlecode.com/files/phpforandroid.apk Java SE Runtime Environment 6u16 - https://cds.sun.com/is-bin/INTERSHOP.enfinity/WFS/CDS-CDS_Developer-Site/en_US/-/USD/ViewProductDetail-Start?ProductRef=jre-6u16-oth-JPR@CDS-CDS_Developer Android SDK - http://developer.android.com/sdk/index.html API Reference - http://code.google.com/p/android-scripting/wiki/ApiReference Php For Android - http://www.phpforandroid.net Scripts collection - http://www.phpforandroid.net/manual/en/index/scripts Несколько скриптов - http://www.phpforandroid.net/scripts