すまべん関西 jag神戸支部共催和歌山合宿発表資料

34
Luaridaで作る SmartWatchプログラム たろサ(@momoonga) 山本三七男

Upload: -

Post on 28-May-2015

3.571 views

Category:

Technology


1 download

DESCRIPTION

Luaridaで作るSmartWatchプログラム

TRANSCRIPT

Page 1: すまべん関西 JAG神戸支部共催和歌山合宿発表資料

Luaridaで作る

SmartWatchプログラム

たろサ(@momoonga)山本三七男

Page 2: すまべん関西 JAG神戸支部共催和歌山合宿発表資料

2

自己紹介

今ココ

和歌山県有田市

Page 3: すまべん関西 JAG神戸支部共催和歌山合宿発表資料

内 容

(1)前回の発表から

(2)Luaridaとは

(3)SmartWatchとは

(4)LuaridaとSmartWatchのリンク

(5)Luaridaの対応

(6)デモプログラム

Page 4: すまべん関西 JAG神戸支部共催和歌山合宿発表資料

4

前回の発表

・SmartWatch用スクリプト

・Ruputer エミュレータ

・ひとり AR

何、作ろうか?

Page 5: すまべん関西 JAG神戸支部共催和歌山合宿発表資料

5

前回の発表

・SmartWatch用スクリプト

・Ruputer エミュレータ

・ひとり AR

何、作ろうか?Luaridaで作れるようにしました

Page 6: すまべん関西 JAG神戸支部共催和歌山合宿発表資料

Luaridaとは

Page 7: すまべん関西 JAG神戸支部共催和歌山合宿発表資料

7

壁が高いAndroid開発

・Eclipseのインストール・Android-SDKのインストール・Androidのバージョン違いの理解・もろもろ・・・

 ポケコンのように、 Android単体で

 プログラムしたいな。

Page 8: すまべん関西 JAG神戸支部共催和歌山合宿発表資料

8

Luaスクリプトの実装

ルアリダ(Luarida)

特徴: 高速な動作、高い移植性、省メモリ

Luaはリオデジャネイロ・カトリカ大学で開発されたスクリプト言語

LuaをAndroidに  移植しました。

105命令を独自実装!IS01

Page 9: すまべん関西 JAG神戸支部共催和歌山合宿発表資料

9

前回の発表時のLua

2011年 9月(TIOBE Programming Community Index)

さらに上昇 13位

Page 10: すまべん関西 JAG神戸支部共催和歌山合宿発表資料

10

前回の発表時のLua

2011年 9月(TIOBE Programming Community Index)

さらに上昇 13位

先月はRubyを抜いて一瞬11位に

Page 11: すまべん関西 JAG神戸支部共催和歌山合宿発表資料

11

今月のLua

がっびょ~ん何これ

2012年 6月(TIOBE Programming Community Index)

Page 12: すまべん関西 JAG神戸支部共催和歌山合宿発表資料

SmartWatchとは

Page 13: すまべん関西 JAG神戸支部共催和歌山合宿発表資料

13

SmartWatch とは

Bluetooth

Android SmartWatch MN2

LiveViewの後継機

Page 14: すまべん関西 JAG神戸支部共催和歌山合宿発表資料

14

SmartWatchアプリの仕組み

LiveWareマネージャ

SmartWatch

Bluetooth

SmartWatchアプリ(1)

サービスとして常駐

SmartWatchアプリ(2)

SmartWatchアプリ(3)

SmartWatchアプリを管理

SmartWatchとのやり取りは、すべてLiveWareマネージャが行っている

イベント

画面データ

タッチデータ

画像のみの送信

前回の発表では

Page 15: すまべん関西 JAG神戸支部共催和歌山合宿発表資料

15

SmartWatchアプリの仕組み

LiveWareマネージャ

SmartWatch

Bluetooth

SmartWatchアプリ(1)

サービスとして常駐

SmartWatchアプリ(2)

SmartWatchアプリ(3)

SmartWatchアプリを管理

SmartWatchとのやり取りは、すべてLiveWareマネージャが行っている

イベント

画面データ

タッチデータ

画像のみの送信

すいません。間違いでした。

Page 16: すまべん関西 JAG神戸支部共催和歌山合宿発表資料

16

SmartWatchアプリの仕組み

SmartWatch管理アプリ Smart

Watch

Bluetooth

SmartWatchアプリ(1)

サービスとして常駐

SmartWatchアプリ(2)

SmartWatchアプリ(3)

SmartWatch本体とのやり取りは、すべてSmartWatchアプリが行っている。

イベント

画面データ

タッチデータ

画像のみの送信

“com.sonyericsson. extras.smartwatch”

Page 17: すまべん関西 JAG神戸支部共催和歌山合宿発表資料

Luaridaと

SmartWatch

のリンク

Page 18: すまべん関西 JAG神戸支部共催和歌山合宿発表資料

18

SmartWatchとのリンク

SmartWatch

管理アプリ

SmartWatch

Bluetooth

Bitmapキャッチャ

Android側

Androidアプリ

Bitmapキャッチャの機能 ・AndroidアプリからBitmap画像を受け取って表示する。

 ・AndroidアプリからVibrator命令を受け取って振動させる。

 ・画面へのタッチ情報をBroadcast送信する。

 ・スィープ情報を、Broadcast送信する。

 ・加速度センサの値を、Broadcast送信する。

Broadcast通信

Bitmapキャッチャというアプリを作りました

Page 19: すまべん関西 JAG神戸支部共催和歌山合宿発表資料

19

SmartWatchとのリンク

 SmartWatchの画面タッチ無しにアプリを起動するには、 以下のBroadcastを送信する。

Intent intent = new Intent(Control.Intents.CONTROL_START_REQUEST_INTENT);

intent.putExtra(Control.Intents.EXTRA_AEA_PACKAGE_NAME,"package.name" );

intent.setPackage(hostAppPackageName);

sendBroadcast(intent, Registration.HOSTAPP_PERMISSION);

Page 20: すまべん関西 JAG神戸支部共催和歌山合宿発表資料

20

SmartWatchとのリンク

SmartWatch

管理アプリ

Bluetooth

Bitmapキャッチャ

Android側

Broadcast通信

Bitmapキャッチャ

の使用例

カメラ画像転送ツールCamera View Picther

GitHubでソース公開中 カメラ

Page 21: すまべん関西 JAG神戸支部共催和歌山合宿発表資料

21

SmartWatchとのリンク

SmartWatch

管理アプリ

SmartWatch

Bluetooth

Android側

Luarida

Broadcast通信

Lua Script

local gwide,gheightcanvas.setMainBmp(canvas.setWorkBmp(canvas.putCls()canvas.workCls()local xs = 56local ys = 65workdroiddraw( 0, 0,workdroiddraw( 56, sprite.init()sprite.define( 1, 0, 0,sprite.define( 2, 56, 0,swatch.start()

Bitmapキャッチャ

Page 22: すまべん関西 JAG神戸支部共催和歌山合宿発表資料

Luaridaの対応

Page 23: すまべん関西 JAG神戸支部共催和歌山合宿発表資料

23

Luaridaのグラフィック

       Luaridaのグラフィックは内部にワーク画面 と メイン画面 をあわせ持つ構造

SmartWatch画面

Broadcast通信

メイン画面をBroadcast通信

Page 24: すまべん関西 JAG神戸支部共催和歌山合宿発表資料

24

Luaridaへの追加コマンド

SmartWatchコマンド ・swatch.getAccel()   加速度センサ情報を取得する

 ・swatch.putflush([GX0,GY0,GX,GY1])   メイン画面をSmartWatch画面にフラッシュする

 ・swatch.start([PackageName])   Bitmapキャッチャ及びSmartWatchアプリを起動する

 ・swatch.stop([PackageName])   Bitmapキャッチャ及びSmartWatchアプリを終了する

 ・swatch.stouch([Sprite番号[,Sprite番号...] ])   スプライトにタッチしているかどうか調べる

 ・swatch.touch()   画面タッチ情報を取得する

 ・swatch.vibrator([OnTime[,OffTime[,Repeat]]])   バイブレータを振動させる

Page 25: すまべん関西 JAG神戸支部共催和歌山合宿発表資料

25

swatch.getAccel

SmartWatchの加速度センサのX,Y,Z方向の成分を取得します。

引数なし

戻り値 X , Y , Z の3つ

X: X方向の加速度成分 Y: Y方向の加速度成分 Z: Z方向の加速度成分

x,y,z = swatch.getAccel()

Page 26: すまべん関西 JAG神戸支部共催和歌山合宿発表資料

26

swatch.putflush([x0,y0,x1,y1])

メイン画面の内容をSmartWatchの画面にフラッシュします。 引数省略時は、メイン画面全体をSmartWatch画面にフラッシュします。

引数 X0: フラッシュ範囲の左上X座標 Y0: フラッシュ範囲の左上Y座標 X1: フラッシュ範囲の右下X座標 Y1: フラッシュ範囲の右下Y座標

SmartWatchへの画面のフラッシュは、1秒に3回程度にしないと表示やタッチ処理が追いつかない感じです。

戻り値なし

  swatch.putflush(0,0,127,127)

Page 27: すまべん関西 JAG神戸支部共催和歌山合宿発表資料

27

swatch.start([PackageName])

SmartWatchアプリを起動します。引数を省略した場合、Bitmapキャッチャを起動します。

引数 PackageName: SmartWatchアプリのパッケージ名を指定します。

戻り値なし

   swatch.start("com.sonyericsson.extras.liveware.extension.music")

Page 28: すまべん関西 JAG神戸支部共催和歌山合宿発表資料

28

swatch.stop([PackageName])

 SmartWatchアプリを終了させます。 引数を省略した場合は、Bitmapキャッチャを終了させます。 SmartWatch用コマンドの使用が終了したときは、Bitmapキャッチャを終了させてください。

引数 PackageName: SmartWatchアプリのパッケージ名を指定します。

戻り値なし

   swatch.stop("com.sonyericsson.extras.liveware.extension.music")

Page 29: すまべん関西 JAG神戸支部共催和歌山合宿発表資料

29

swatch.stouch([Sprite番号,..])

 SmartWatchの画面に表示されているスプライトにタッチしている場合、そのスプライトの番号を取得します。 基本的にsprite.touch()と同じ使い方です。

引数 Sprite番号: スプライト番号です。0~63まで、 カンマで区切っていくつでも指定できます。戻り値 タッチされているスプライトの数は1つとは限らないので、配列(Luaテーブル)で返ります。

     local tsp={} --配列宣言 tsp = swatch.stouch()

Page 30: すまべん関西 JAG神戸支部共催和歌山合宿発表資料

30

swatch.touch()

 SmartWatch画面へのタッチ座標、及び上下左右のスィープ結果を取得します。

引数なし

戻り値  X,Y,Stausの3つ X: 最後にタッチしたX座標    (メイン画面サイズに換算された座標値が返ります) Y: 最後にタッチしたY座標    (メイン画面サイズに換算された座標値が返ります) Status: 画面タッチ及びスィープ結果。

Page 31: すまべん関西 JAG神戸支部共催和歌山合宿発表資料

31

swatch.touch()

Status値は下記です。

0: タッチしている 1: タッチしていない 2: 長時間タッチしている 3: 上スィープした 4: 下スィープした 5: 左スィープした 6: 右スィープした

  x,y,s = swatch.touch()

Page 32: すまべん関西 JAG神戸支部共催和歌山合宿発表資料

32

swatch.vibrator([On[,Off[,Repeat]]])

 SmartWatchのバイブレータを振動させます。 引数省略時は、0.5sec間、一度だけ振動します。 OnTimeのみ指定した場合は、指定時間、一度だけ振動します。

引数 On:    振動時間。msで指定します。 Off:   振動停止時間。msで指定します。 Repeat: 繰り返し回数。

戻り値なし

  swatch.vibrator(100, 200, 3)

Page 33: すまべん関西 JAG神戸支部共催和歌山合宿発表資料

33

デモプログラム

Page 34: すまべん関西 JAG神戸支部共催和歌山合宿発表資料

ご清聴ありがとうございました