Contenu connexe
Similaire à すまべん関西 JAG神戸支部共催和歌山合宿発表資料 (20)
すまべん関西 JAG神戸支部共催和歌山合宿発表資料
- 1. Luaridaで作る
SmartWatchプログラム
たろサ(@momoonga)
山本三七男
- 4. 4
前回の発表
何、作ろうか?
・SmartWatch用スクリプト
・Ruputer エミュレータ
・ひとり AR
- 5. 5
前回の発表
Luaridaで作れる
何、作ろうか? ようにしました
・SmartWatch用スクリプト
・Ruputer エミュレータ
・ひとり AR
- 7. 7
壁が高いAndroid開発
・Eclipseのインストール
・Android-SDKのインストール
・Androidのバージョン違いの理解
・もろもろ・・・
ポケコンのように、
Android単体で
プログラムしたいな。
- 8. 8
Luaスクリプトの実装
Luaはリオデジャネイロ・カトリカ大学で
開発されたスクリプト言語
特徴: 高速な動作、高い移植性、省メモリ
ルアリダ
(Luarida)
LuaをAndroidに
移植しました。
105命令を独自実装!
IS01
- 10. 10
前回の発表時のLua
2011年 9月(TIOBE Programming Community Index)
さらに上昇 13位
先月はRubyを抜いて一瞬11位に
- 11. 11
今月のLua
2012年 6月(TIOBE Programming Community Index)
がっびょ~ん何これ
- 13. 13
SmartWatch とは
LiveViewの
後継機
Bluetooth
Android SmartWatch MN2
- 14. 14
SmartWatchアプリの仕組み
前回の発表では
サービスとして常駐 SmartWatchアプリ 画像のみの送信
を管理
SmartWatch
アプリ(1)
イベント
SmartWatch LiveWare Smart
アプリ(2) 画面データ マネージャ Watch
SmartWatch Bluetooth
アプリ(3)
タッチデータ
SmartWatchとのやり取り
は、すべてLiveWareマネー
ジャが行っている
- 15. 15
SmartWatchアプリの仕組み
すいません。
サービスとして常駐
間違いでした。
SmartWatchアプリ 画像のみの送信
を管理
SmartWatch
アプリ(1)
イベント
SmartWatch LiveWare Smart
アプリ(2) 画面データ マネージャ Watch
SmartWatch Bluetooth
アプリ(3)
タッチデータ
SmartWatchとのやり取り
は、すべてLiveWareマネー
ジャが行っている
- 16. 16
SmartWatchアプリの仕組み
サービスとして常駐 画像のみの送信
SmartWatch
アプリ(1)
イベント SmartWatch
SmartWatch 管理アプリ Smart
アプリ(2) 画面データ “com.sonyericsson. Watch
extras.smartwatch”
SmartWatch Bluetooth
アプリ(3)
タッチデータ
SmartWatch本体とのやり
取りは、すべてSmartWatch
アプリが行っている。
- 18. 18
SmartWatchとのリンク
Bitmapキャッチャというアプリを作りました
Bitmap
キャッチャ Smart Smart
Android Watch Watch
アプリ Broadcast通信 管理アプリ
Bluetooth
Android側
Bitmapキャッチャの機能
・AndroidアプリからBitmap画像を受け取って表示する。
・AndroidアプリからVibrator命令を受け取って振動させる。
・画面へのタッチ情報をBroadcast送信する。
・スィープ情報を、Broadcast送信する。
・加速度センサの値を、Broadcast送信する。
- 19. 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. 20
SmartWatchとのリンク
Bitmapキャッチャ Bitmap
キャッチャ Smart
の使用例 Watch
管理アプリ
Bluetooth
Android側
Broadcast通信
カメラ画像転送ツール
Camera View Picther
GitHubでソース公開中 カメラ
- 21. 21
SmartWatchとのリンク
Lua Script
local gwide,gheight Luarida Bitmap
canvas.setMainBmp(
canvas.setWorkBmp(
canvas.putCls()
キャッチャ Smart Smart
canvas.workCls()
local xs = 56
Watch Watch
local ys = 65
workdroiddraw( 0, 0,
管理アプリ
workdroiddraw( 56,
sprite.init()
sprite.define( 1, 0, 0, Bluetooth
sprite.define( 2, 56, 0,
swatch.start() Broadcast
通信
Android側
- 23. 23
Luaridaのグラフィック
Luaridaのグラフィックは内部に
ワーク画面 と メイン画面 をあわせ持つ構造
メイン画面を Broadcast
通信
SmartWatch
Broadcast通信 画面
- 24. 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. 25
swatch.getAccel
SmartWatchの加速度センサのX,Y,Z方向の成分を取得します。
引数なし
戻り値
X , Y , Z の3つ
X: X方向の加速度成分
Y: Y方向の加速度成分
Z: Z方向の加速度成分
x,y,z = swatch.getAccel()
- 26. 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. 27
swatch.start([PackageName])
SmartWatchアプリを起動します。
引数を省略した場合、Bitmapキャッチャを起動します。
引数
PackageName: SmartWatchアプリのパッケージ名を指定します。
戻り値なし
swatch.start("com.sonyericsson.extras.liveware.extension.music")
- 28. 28
swatch.stop([PackageName])
SmartWatchアプリを終了させます。
引数を省略した場合は、Bitmapキャッチャを終了させます。
SmartWatch用コマンドの使用が終了したときは、Bitmapキャッチャ
を終了させてください。
引数
PackageName: SmartWatchアプリのパッケージ名を指定します。
戻り値なし
swatch.stop("com.sonyericsson.extras.liveware.extension.music")
- 29. 29
swatch.stouch([Sprite番号,..])
SmartWatchの画面に表示されているスプライトにタッチしている
場合、そのスプライトの番号を取得します。
基本的にsprite.touch()と同じ使い方です。
引数
Sprite番号: スプライト番号です。0~63まで、
カンマで区切っていくつでも指定できます。
戻り値
タッチされているスプライトの数は1つとは限らないので、配列(Lua
テーブル)で返ります。
local tsp={} --配列宣言
tsp = swatch.stouch()
- 30. 30
swatch.touch()
SmartWatch画面へのタッチ座標、及び上下左右のスィープ結果を
取得します。
引数なし
戻り値
X,Y,Stausの3つ
X: 最後にタッチしたX座標
(メイン画面サイズに換算された座標値が返ります)
Y: 最後にタッチしたY座標
(メイン画面サイズに換算された座標値が返ります)
Status: 画面タッチ及びスィープ結果。
- 31. 31
swatch.touch()
Status値は下記です。
0: タッチしている
1: タッチしていない
2: 長時間タッチしている
3: 上スィープした
4: 下スィープした
5: 左スィープした
6: 右スィープした
x,y,s = swatch.touch()
- 32. 32
swatch.vibrator([On[,Off[,Repeat]]])
SmartWatchのバイブレータを振動させます。
引数省略時は、0.5sec間、一度だけ振動します。
OnTimeのみ指定した場合は、指定時間、一度だけ振動します。
引数
On: 振動時間。msで指定します。
Off: 振動停止時間。msで指定します。
Repeat: 繰り返し回数。
戻り値なし
swatch.vibrator(100, 200, 3)