• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
Scripting Layer for Android + Perl
 

Scripting Layer for Android + Perl

on

  • 7,165 views

 

Statistics

Views

Total Views
7,165
Views on SlideShare
7,163
Embed Views
2

Actions

Likes
10
Downloads
19
Comments
0

2 Embeds 2

http://orhowilearnedtolovetheperl.com 1
http://s.deeeki.com 1

Accessibility

Categories

Upload Details

Uploaded via as Microsoft PowerPoint

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    Scripting Layer for Android + Perl Scripting Layer for Android + Perl Presentation Transcript

    • Android + Perl Naoya Ito, GREE 2010.09.30 Shibuya.pm
    •  
    • 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"
    • SL4A Android API use Android my $android =    Android->new; $android-> makeToast (    "Hello, Android!" );
    • Android.pm の中身
      • makeToast() などは AUTLOAD
      • makeToast() -> localhost に JSON-RPC
        • 多分 SL4A アプリが受け皿になっている
    • SL4A で開発
      • Android SDK
      • (Eclipse)
      • Terminal.app
      • Emacs
    • インストール (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 だと思います
    • SL4A のエディタで実装
      • できる、でもこれは辛い !
    • Emacs で書いて adb push % adb push hello_naoya.pl /sdcard/sl4a/scripts 1 KB/s (115 bytes in 0.067s) これで SL4A 側のスクリプト一覧に hello_naoya.pl が追加される
    • Perl モジュール
      • 幾つか組み込みで入っている
        • CPAN モジュール etc は Pure Perl なら adb push で /sdcard の site_perl ディレクトリに置けば動く ( と思います )
    • 同梱モジュールを調べる % 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
    • ネタ発見 # 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 => 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;
    • あっさり動いた % 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 ...
    • さて、動作確認 ...
      • telnet で動作確認・・・あれ、 telnet がない
    • 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;
    •  
    • ほか
      • 実は外部アクセス可能な 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() {...});
    • まとめ
      • SL4A で Perl で Android Quick Hack
      • API で結構いろいろできるようです
        • Clipboard, Camera, BatteryManager, Phone, viewHTML, viewMap …
      • 比較的あっさり動きます
        • Hack 次第で色々楽しめそう
      • SL4A for PHP もあります
    • 大事なことなので繰り返します
      • SL4A for PHP もあります
      【未承諾広告】グリーは iPhone/Android エンジニアも絶賛募集中
    • おしまい