Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
Android + Perl Naoya Ito, GREE 2010.09.30 Shibuya.pm
 
Scripting Layer for Android (SL4A) <ul><li>Android デバイス上で  jRuby, Lua,  Perl , Python, PHP, shell  などを編集 / 実行できるアプリ </li><...
SL4A Android API use Android my $android =     Android->new; $android-> makeToast (    &quot;Hello, Android!&quot; );
Android.pm  の中身 <ul><li>makeToast()  などは  AUTLOAD </li></ul><ul><li>makeToast() -> localhost  に  JSON-RPC </li></ul><ul><u...
SL4A で開発 <ul><li>Android SDK </li></ul><ul><li>(Eclipse) </li></ul><ul><li>Terminal.app </li></ul><ul><li>Emacs </li></ul>
インストール  (Terminal.app) % adb –e install sl4a_r2.apk % adb –e install perl_for_android_r1.apk  <ul><li>Settings > Applicati...
SL4A  のエディタで実装 <ul><li>できる、でもこれは辛い ! </li></ul>
Emacs  で書いて  adb push % adb push hello_naoya.pl  /sdcard/sl4a/scripts 1 KB/s (115 bytes in 0.067s) これで  SL4A  側のスクリプト一覧に  ...
Perl  モジュール <ul><li>幾つか組み込みで入っている </li></ul><ul><ul><li>CPAN モジュール  etc  は  Pure Perl  なら  adb push  で  /sdcard  の  site_p...
同梱モジュールを調べる % adb shell # ls /data/data/com.googlecode.perlforandroid/files/perl/5.10.0 auto warnings warnings.pm utf8_hea...
ネタ発見 # ls IO Handle.pm Dir.pm Poll.pm Socket.pm  ←  これ Socket Select.pm
echo  サーバーを書いてみよう use IO::Socket; use Android; my $android = Android->new; my $server = IO::Socket::INET->new( Listen  => ...
あっさり動いた % adb shell # ps ... app_25  423  30  131160 22372 ffffffff afe0d4a4 S com.googlecode.android_scripting app_25  47...
さて、動作確認 ... <ul><li>telnet  で動作確認・・・あれ、 telnet  がない </li></ul>
echo  クライアントも必要だ #!perl  use strict; use warnings; use IO::Socket; my $cli = IO::Socket::INET->new( PeerAddr => 'localhost...
 
ほか <ul><li>実は外部アクセス可能な  Public  サーバーにもできる </li></ul><ul><ul><li>http://handasse.blogspot.com/2010/09/pythonandroid5.html <...
まとめ <ul><li>SL4A  で  Perl  で  Android Quick Hack </li></ul><ul><li>API  で結構いろいろできるようです </li></ul><ul><ul><li>Clipboard, Ca...
大事なことなので繰り返します <ul><li>SL4A for  PHP   もあります </li></ul>【未承諾広告】グリーは iPhone/Android エンジニアも絶賛募集中
おしまい
Upcoming SlideShare
Loading in …5
×

Scripting Layer for Android + Perl

8,011 views

Published on

Published in: Technology
  • Be the first to comment

Scripting Layer for Android + Perl

  1. 1. Android + Perl Naoya Ito, GREE 2010.09.30 Shibuya.pm
  2. 3. Scripting Layer for Android (SL4A) <ul><li>Android デバイス上で jRuby, Lua, Perl , Python, PHP, shell などを編集 / 実行できるアプリ </li></ul><ul><ul><li>名前が最近 ASE -> SL4A に変更になってるので注意 </li></ul></ul><ul><ul><li>http://code.google.com/p/android-scripting/ </li></ul></ul><ul><li>スクリプトからは API で Android の機能を呼べる </li></ul><ul><ul><li>&quot;AndroidFacade API&quot; </li></ul></ul>
  3. 4. SL4A Android API use Android my $android =    Android->new; $android-> makeToast (    &quot;Hello, Android!&quot; );
  4. 5. Android.pm の中身 <ul><li>makeToast() などは AUTLOAD </li></ul><ul><li>makeToast() -> localhost に JSON-RPC </li></ul><ul><ul><li>多分 SL4A アプリが受け皿になっている </li></ul></ul>
  5. 6. SL4A で開発 <ul><li>Android SDK </li></ul><ul><li>(Eclipse) </li></ul><ul><li>Terminal.app </li></ul><ul><li>Emacs </li></ul>
  6. 7. インストール (Terminal.app) % adb –e install sl4a_r2.apk % adb –e install perl_for_android_r1.apk <ul><li>Settings > Applications > Unknown sources を有効にしておきます </li></ul><ul><li>adb install したあと起動してちょこちょこと設定します </li></ul><ul><li>ブラウザから直接 apk DL しても ok だと思います </li></ul>
  7. 8. SL4A のエディタで実装 <ul><li>できる、でもこれは辛い ! </li></ul>
  8. 9. Emacs で書いて adb push % adb push hello_naoya.pl /sdcard/sl4a/scripts 1 KB/s (115 bytes in 0.067s) これで SL4A 側のスクリプト一覧に hello_naoya.pl が追加される
  9. 10. Perl モジュール <ul><li>幾つか組み込みで入っている </li></ul><ul><ul><li>CPAN モジュール etc は Pure Perl なら adb push で /sdcard の site_perl ディレクトリに置けば動く ( と思います ) </li></ul></ul>
  10. 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
  11. 12. ネタ発見 # ls IO Handle.pm Dir.pm Poll.pm Socket.pm ← これ Socket Select.pm
  12. 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(&quot;echo: &quot; . $buf); } $client->close; } $server->close;
  13. 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 ...
  14. 15. さて、動作確認 ... <ul><li>telnet で動作確認・・・あれ、 telnet がない </li></ul>
  15. 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(&quot;Anybody home?&quot;); $cli->close;
  16. 18. ほか <ul><li>実は外部アクセス可能な Public サーバーにもできる </li></ul><ul><ul><li>http://handasse.blogspot.com/2010/09/pythonandroid5.html </li></ul></ul><ul><ul><li>(Python で 5 分で遠隔カメラサーバに ) </li></ul></ul><ul><li>$droid->smsSend() や $droid->vibrate() と組合わせると夢がひろがりんぐ </li></ul><ul><li>perl で WebView を起動して JavaScript の callback を kick するとか面白いことも </li></ul><ul><ul><li>droid.registerCallback(&quot;event_name&quot;, function() {...}); </li></ul></ul>
  17. 19. まとめ <ul><li>SL4A で Perl で Android Quick Hack </li></ul><ul><li>API で結構いろいろできるようです </li></ul><ul><ul><li>Clipboard, Camera, BatteryManager, Phone, viewHTML, viewMap … </li></ul></ul><ul><li>比較的あっさり動きます </li></ul><ul><ul><li>Hack 次第で色々楽しめそう </li></ul></ul><ul><li>SL4A for PHP もあります </li></ul>
  18. 20. 大事なことなので繰り返します <ul><li>SL4A for PHP もあります </li></ul>【未承諾広告】グリーは iPhone/Android エンジニアも絶賛募集中
  19. 21. おしまい

×