Categories: Perl

perl-on-android/

Есть такой проект под названием Scripting Layer for Android (SL4A). Это штука, которая позволяет запускать на Android-устройствах скрипты, написанные на Perl, Python, JRuby, Lua, JavaScript и других языках.

Устанавливается SL4A следующим образом. Переходим по этой ссылке и находим там файл с именами вроде sl4a_r6.apk. При клике по имени файла перед вами появится страница для загрузки с QR-кодом. Возьмите свой телефон или планшет, считайте код программой QR Droid или ее аналогом, скачайте и установите SL4A.

Затем перейдите в «Приложения → SL4A → View → Interpreters → Add → Perl 5.10.1», дождитесь завершения загрузки apk-пакета и установите его. После установки перейдите в « Приложения → Perl for Android» и нажмите «Install». Затем вновь откройте SL4A и запустите скрипт test.pl.

Теперь попробуем написать собственный скрипт, например, отправляющий SMS:

#!/usr/bin/env perl

use strict ;
use warnings ;

use Android ;

my $droid = Android -> new ;

# выбираем телефон
my $phone = $droid -> pickPhone ;
die $phone -> { error } if $phone -> { error } ;

# произносим текст sms-сообщения
my $sms = $droid -> recognizeSpeech ;
die $sms -> { error } if $sms -> { error } ;

# проверяем получателя и текст сообщения
$droid -> dialogCreateAlert (
«Send this SMS to $phone->{result}?» ,
$sms -> { result }
) ;
$droid -> dialogSetPositiveButtonText ( ‘Yes’ ) ;
$droid -> dialogSetNegativeButtonText ( ‘No’ ) ;
$droid -> dialogShow ;
my $res = $droid -> dialogGetResponse ;
die $res -> { error } if $res -> { error } ;

if ( $res -> { result } { which } eq ‘positive’ ) {
# отправляем сообщение
$droid -> smsSend ( $phone -> { result } , $sms -> { result } ) ;
}

Вы можете загрузить его прямо в ваше Android-устройство, воспользовавшись QR-кодом справа. Поместите закодированный в нем текст в буфер обмена с помощью вашего любимого считывателя кодов. Затем скажите «SL4A → Add → Perl 5.10.1», вставьте текст скрипта из буфера обмена и сохраните его, скажем, под именем send-sms.pl.

Если со считыванием кода что-то не заладилось, вы можете сохранить скрипт у себя на компьютере, а затем скопировать на Android-устройство в каталог /sdcard/sl4a/scripts с помощью USB или, например, Dropbox.

Вновь открываем SL4A и запускаем наш скрипт. Велика вероятность, что вы получите следующую ошибку:

Can’t locate unicore/PVA.pl in @INC (@INC contains …

Как оказалось, соответствующему тикету в багтрекере проекта уже больше года, но почему-то никто ничего не хочет с ним делать. А тем временем решается проблема очень просто. Нужно собрать Perl 5.10 под perlbrew и положить недостающие файлы в каталог /sdcard/ com.googlecode.perlforandroid/ extras/ perl/ site_perl. Вы можете скачать архив с этими файлами отсюда . Распаковать их на Android-устройстве можно, например, с помощью приложения Easy Unrar Lite.

Теперь, по идее, все должно работать. Скрипт попросит вас выбрать один из контактов, затем предложит продиктовать текст SMS (чтобы работало распознавание голоса, нужно быть онлайн), после чего покажет диалог с просьбой подтвердить получателя и текст сообщения. Если ответить «Yes», на выбранный номер будет отправлено SMS с продиктованным текстом.

С помощью SL4A вы можете управлять звонками, контактами, электронной почтой, камерой, микрофоном, GPS, Bluetooth, а также получать информацию о модели телефона, состоянии батареи, SIM-карте и тп. Однако следует понимать, что SL4A предназначен в первую очередь для написания скриптов в несколько десятков или сотен строк кода, а не больших и сложных приложений.

Подборка ссылок по теме:

А вы уже пробовали SL4A? Если пробовали, то поведайте, какие приложения и на каком языке программирования вы писали. Если нет, то планируете ли попробовать в ближайшем будущем? И кстати, а не известно ли вам аналогичных проектов для iOS и Widnows Phone?

admin

Share
Published by
admin
Tags: Perl

Recent Posts

Настройка Mercurial по HTTPS

Иногда mercurial, при скачивании и комитах ругается на https. Особенно на самоподписанные сертификаты. Чтобы заработал…

2 недели ago

Компиляция libvirt в Ubuntu

Компиляция libvirt Подробнее

2 недели ago

Ошибка libvirt permission denied: решение

Если возникает ошибка libvirt destroy lxc permission denied , при попытке остановить контейнер: _x000D_# virsh…

2 недели ago

Настройка редиректа в NGINX

Файлы с примерами редиректа для nginx Подробнее

2 недели ago

Включение gzip в NGINX

Как включить gzip сжатие в Nginx ? Подробнее

2 недели ago

Удаление postinst-скрипта в Linux

Иногда возникает ситуация, когда криво настроенные пакеты не устанавливаются в системе. У меня это произошло…

2 недели ago