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

Post on 28-May-2015

3.571 Views

Category:

Technology

1 Downloads

Preview:

Click to see full reader

DESCRIPTION

Luaridaで作るSmartWatchプログラム

TRANSCRIPT

Luaridaで作る

SmartWatchプログラム

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

2

自己紹介

今ココ

和歌山県有田市

内 容

(1)前回の発表から

(2)Luaridaとは

(3)SmartWatchとは

(4)LuaridaとSmartWatchのリンク

(5)Luaridaの対応

(6)デモプログラム

4

前回の発表

・SmartWatch用スクリプト

・Ruputer エミュレータ

・ひとり AR

何、作ろうか?

5

前回の発表

・SmartWatch用スクリプト

・Ruputer エミュレータ

・ひとり AR

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

Luaridaとは

7

壁が高いAndroid開発

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

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

 プログラムしたいな。

8

Luaスクリプトの実装

ルアリダ(Luarida)

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

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

LuaをAndroidに  移植しました。

105命令を独自実装!IS01

9

前回の発表時のLua

2011年 9月(TIOBE Programming Community Index)

さらに上昇 13位

10

前回の発表時のLua

2011年 9月(TIOBE Programming Community Index)

さらに上昇 13位

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

11

今月のLua

がっびょ~ん何これ

2012年 6月(TIOBE Programming Community Index)

SmartWatchとは

13

SmartWatch とは

Bluetooth

Android SmartWatch MN2

LiveViewの後継機

14

SmartWatchアプリの仕組み

LiveWareマネージャ

SmartWatch

Bluetooth

SmartWatchアプリ(1)

サービスとして常駐

SmartWatchアプリ(2)

SmartWatchアプリ(3)

SmartWatchアプリを管理

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

イベント

画面データ

タッチデータ

画像のみの送信

前回の発表では

15

SmartWatchアプリの仕組み

LiveWareマネージャ

SmartWatch

Bluetooth

SmartWatchアプリ(1)

サービスとして常駐

SmartWatchアプリ(2)

SmartWatchアプリ(3)

SmartWatchアプリを管理

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

イベント

画面データ

タッチデータ

画像のみの送信

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

16

SmartWatchアプリの仕組み

SmartWatch管理アプリ Smart

Watch

Bluetooth

SmartWatchアプリ(1)

サービスとして常駐

SmartWatchアプリ(2)

SmartWatchアプリ(3)

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

イベント

画面データ

タッチデータ

画像のみの送信

“com.sonyericsson. extras.smartwatch”

Luaridaと

SmartWatch

のリンク

18

SmartWatchとのリンク

SmartWatch

管理アプリ

SmartWatch

Bluetooth

Bitmapキャッチャ

Android側

Androidアプリ

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

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

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

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

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

Broadcast通信

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

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);

20

SmartWatchとのリンク

SmartWatch

管理アプリ

Bluetooth

Bitmapキャッチャ

Android側

Broadcast通信

Bitmapキャッチャ

の使用例

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

GitHubでソース公開中 カメラ

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キャッチャ

Luaridaの対応

23

Luaridaのグラフィック

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

SmartWatch画面

Broadcast通信

メイン画面をBroadcast通信

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]]])   バイブレータを振動させる

25

swatch.getAccel

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

引数なし

戻り値 X , Y , Z の3つ

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

x,y,z = swatch.getAccel()

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)

27

swatch.start([PackageName])

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

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

戻り値なし

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

28

swatch.stop([PackageName])

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

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

戻り値なし

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

29

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

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

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

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

30

swatch.touch()

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

引数なし

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

31

swatch.touch()

Status値は下記です。

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

  x,y,s = swatch.touch()

32

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

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

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

戻り値なし

  swatch.vibrator(100, 200, 3)

33

デモプログラム

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

top related