More Related Content SmartPhone development guide with CoffeeScript + Node + HTML5 Technology, for...
Norikraで作るPHPの例外検知システム YAPC::Asia Tokyo 2015 LT
『How to build a High Performance PSGI/Plack Server』のその後と ISUCON3を受けての話題
Perl Hobby Programming - Games::BeLike::EightBIT ターミナルで8ビット風ゲームをつくろう
What's hot (20)
GoCon 2015 Summer GoのASTをいじくって新しいツールを作る
emscriptenでC/C++プログラムをwebブラウザから使うまでの難所攻略
15分でCakePHPを始める方法(Nseg 2013-11-09 )
ADO.NETとORMとMicro-ORM -dapper dot netを使ってみた
CGI::Application::Dispatch
Mojoliciousをウェブ制作現場で使ってみてる
CPANの依存モジュールをもう少し正しく検出したい
UnrealEngineが5日間でasm.js化できたと聞いた俺たちは…
仕事の手離れを良くする手段としての、静的検査のあるテンプレートエンジン (YATT::Lite talk at 2014 テンプレートエンジンNight)
サバカン屋のサバ缶はre:Inventで通用したのか&すぐに使える!最新運用ネタ #re:Port2016
Similar to Scripting Layer for Android + Perl (20)
関西オープンソース 2008 30days Albumの裏側
ホームディレクトリに埋もれた便利なコードをさがせ!
スマホだけでアプリが作れる!「Androidでプログラミング」特別講座
YAPC::Kansai 2017 - macOSネイティブアプリ作成におけるPerlの活用
How to use GPL software in closed source Android application
More from Naoya Ito (10) Web-Gakkai Symposium 2010
Introduction to Algorithms#24 Shortest-Paths Problem
090518computing Huffman Code Length
Scripting Layer for Android + Perl3. Scripting Layer for Android (SL4A) Android デバイス上で jRuby, Lua, Perl , Python, PHP, shell などを編集 / 実行できるアプリ 名前が最近 ASE -> SL4A に変更になってるので注意 http://code.google.com/p/android-scripting/ スクリプトからは API で Android の機能を呼べる "AndroidFacade API" 4. SL4A Android API use Android my $android = Android->new; $android-> makeToast ( "Hello, Android!" ); 5. Android.pm の中身 makeToast() などは AUTLOAD makeToast() -> localhost に JSON-RPC 多分 SL4A アプリが受け皿になっている 7. インストール (Terminal.app) % adb –e install sl4a_r2.apk % adb –e install perl_for_android_r1.apk Settings > Applications > Unknown sources を有効にしておきます adb install したあと起動してちょこちょこと設定します ブラウザから直接 apk DL しても ok だと思います 9. Emacs で書いて adb push % adb push hello_naoya.pl /sdcard/sl4a/scripts 1 KB/s (115 bytes in 0.067s) これで SL4A 側のスクリプト一覧に hello_naoya.pl が追加される 10. Perl モジュール 幾つか組み込みで入っている CPAN モジュール etc は Pure Perl なら adb push で /sdcard の site_perl ディレクトリに置けば動く ( と思います ) 11. 同梱モジュールを調べる % adb shell # ls /data/data/com.googlecode.perlforandroid/files/perl/5.10.0 auto warnings warnings.pm utf8_heavy.pl utf8.pm vars.pm IO Fcntl.pm ... # ls /sdcard/com.googlecode.perlforandroid/extras/perl/site_perl 12. ネタ発見 # ls IO Handle.pm Dir.pm Poll.pm Socket.pm ← これ Socket Select.pm 13. echo サーバーを書いてみよう use IO::Socket; use Android; my $android = Android->new; my $server = IO::Socket::INET->new( Listen => 20, LocalPort => 9999, Reuse => 1, ) or die $!; while (1) { my $client = $server->accept; while ($client->sysread(my $buf, 1024)) { $android->makeToast("echo: " . $buf); } $client->close; } $server->close; 14. あっさり動いた % adb shell # ps ... app_25 423 30 131160 22372 ffffffff afe0d4a4 S com.googlecode.android_scripting app_25 474 423 4396 3736 c01c54a0 afe0ceac S /data/data/com.googlecode.perlforandroid/files/perl/ perl ... 16. echo クライアントも必要だ #!perl use strict; use warnings; use IO::Socket; my $cli = IO::Socket::INET->new( PeerAddr => 'localhost', PeerPort => 9999, Proto => 'tcp', ) or die $!; $cli->syswrite("Anybody home?"); $cli->close; 18. ほか 実は外部アクセス可能な Public サーバーにもできる http://handasse.blogspot.com/2010/09/pythonandroid5.html (Python で 5 分で遠隔カメラサーバに ) $droid->smsSend() や $droid->vibrate() と組合わせると夢がひろがりんぐ perl で WebView を起動して JavaScript の callback を kick するとか面白いことも droid.registerCallback("event_name", function() {...}); 19. まとめ SL4A で Perl で Android Quick Hack API で結構いろいろできるようです Clipboard, Camera, BatteryManager, Phone, viewHTML, viewMap … 比較的あっさり動きます Hack 次第で色々楽しめそう SL4A for PHP もあります