すまべん関西 jag神戸支部共催和歌山合宿発表資料
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
デモプログラム
ご清聴ありがとうございました