mylo widget独自機能一覧

一般的なJavaScript APIと異なるmylo widget独自機能についてまとめました。

バックグラウンドでの動作
  • バックグラウンドのタイマー (setBackgroundInterval)
  • フォアグラウンドかバックグラウンドかの状態確認 (mylo.System.getGroundStatus)
イベントハンドラ
  • マウス操作 (widgetClickなど)
  • キーイベント (widgetKeyDownなど)
  • widgetの初期化完了 (notifyReadyWidget)
  • 設定モードとActiveモードの切り替え (goActive, goSetting)
  • widgetのフォーカス (inFocus/outFocus)
  • フォアグラウンド/バックグラウンド状態の切り替え (goBackground/goForeground)
  • 電源OFF (goIdle)
  • widgetの移動 (widgetMove)
  • widgetのサイズ変更 (widgetResize)
  • 設定モード (getPreferenceObject)
  • 設定変更 (changePreference)
  • widgetの無効 (disableWidget)
ユーザ設定
  • 設定値の取得/保存
  • widgetのサイズ変更
通知
  • RSS readerまたはdownload managerからの通知を受信 (setNotify, setIntervalNotify)
  • 通知設定を解除 (releaseNotify, releaseInterval)
ファイル (myloConfig.xmlまたはtemp.xmlのみ)
  • ファイル保存 (saveFile)
  • ファイル読み込み (loadFile)
ファイル (widgetディレクトリ内)
  • ファイル読み込み (readFile)
  • ファイル削除 (deleteFile)
  • ファイルダウンロード (download)
  • ファイルリスト (getFileList)
暗号
  • 暗号化 (encryption)
  • 復号 (decryption)
  • Base64エンコード (encodeBase64)
  • ハッシュ (hexHashMD5, base64HashMD5など)
アプリ起動
  • ブラウザでWebページを開く (openWeb)
  • Yahoo MessengerなどのIMを起動 (openIM)
  • My Contactsを開く (openContacts)
  • ラジオのOn/OFF US版のみ (playRadio/stopRadio)
  • PlaceEngineを開く 日本版のみ (openPlaceEngine)
通信
その他
  • 右側LEDのON/OFF (ledOn/ledOff)
  • widgetのサイズ取得 (windowHeightなど)
  • US/日本版の情報取得 (getLanguage)
  • ダイアログ表示 デバッグ目的での利用 (top.mylo.widgetMessageBox)
  • ログ まだ未実装 (widgetLogFatalErrorなど)

mylo labsのwidget galleryに登録してみました

作ったmylo widgetmylo labsのwidget galleryに登録してみました。mylo labsのアカウントを取ると、widget galleryのページで、右側のメニューにUpload My Widgetが追加されます。

登録するとすぐに公開されてしまうのですね。他のSONY officialwidgetと比べて画面がしょぼい...

myloでFlashゲーム

mylo widgetについてばかり書いてますが、myloでゲームするならwidgetではなくFlashでしょう。

PCでFlashのファイル (*.swf)をダウンロードして、myloで開くのがお勧めです。引数を指定して実行しているときはHTMLファイルごとダウンロードする必要があります。

PCでFlashファイルをダウンロードするには、PCでFlashのサイトを閲覧し、ページのソースを表示させ、'swf'で検索します。swfファイルのURLをブラウザに指定してページを保存するとswfファイルをダウンロードできます。

ダウンロードしたswfファイルは、myloのHOMEからTools->ファイルマネージャーを使って、swfファイルを開くことでFlashのゲームをmyloで遊べます。

前にofficial siteのSudokuが開けなかったのは、ダウンロードしたときにswfファイル名に%20が入っているからでした。これを除くと動きました。

シューティングゲームは動作が遅くてまともに動きませんでした。

myloで動いたFlashゲームのURLをいくつかあげておきます。

他のプラットフォームのwidgetをmyloで動かしてみる

JavaScriptベースのwidgetには以下がある。

これらをmylo widgetに簡単に置き換えられないか考えている。たいていは作り変えが必要だが、簡単なものだったら widgetPackage.xml を作って再パッケージすることで動くものもある。

たとえば、以下のMax OS X ダッシュボード widgetのMine Sweeperをmylo widget化するには、以下をするだけでよい。
http://www.apple.com/jp/downloads/dashboard/games/minesweeper.html

  1. zipファイルを解凍して、MineSweeper.htmlをindex.htmlに名前を変更
  2. widgetPackage.xmlをダウンロードしてindex.htmlと同じ場所におく
  3. zip圧縮してmyloにインストール

たいていは以下のような点を作り直す必要がある(後で追記します)。

  • キーイベント処理
  • XMLHttpRequest
  • ローカルファイルアクセス
  • ユーザ設定
  • 画面作成 (Google widgetはHTMLではなく、独自のXML形式で画面作成している)
  • ...

ある程度自動でポーティングできないかな、

もうひとつ実装の間違い

仕様を読んでいて、作成したmylo widgetの実装に、もうひとつ間違っていた部分があることが分かった。GMailNotifier.mylowをインストールした人がいたら再インストールして下さい。

タイマー(setInterval または setBackgroundInterval)を使ったときは、widgetを無効にしたときにタイマーを解除する必要がある。widgetを無効にしたときは、disableWidget が呼ばれるので、その中でclearIntervalを使って、タイマーを解除する。

var disableWidget = function() {
	if (backgroundUpdateTimer!== null){
		clearInterval(backgroundUpdateTimer);
	}
	if (backgroundUpdateTimer!== null){
		clearInterval(backgroundUpdateTimer);
	}
};

ログはどこに出力されるのかと思ってたら、仕様にまだログは実装されてない、将来実装される予定、と書いてあった。

mylo widgetの仕様を読んでます

mylo widgetを配置した直後に設定モードへ移れなかったのは、Preference Constructorのcallback関数の最後でnotifyReadyWidget()を呼んでなかったかららしい。

その他、細かい仕様も載っているので、ゆっくり読んでみる。

ブログ投稿のmylo widget

シンプルなメモ帳のmylo widgetを作成しました。

SimpleTextArea.mylow

ファイルに保存できないで、とりあえずブログ投稿できるようにすることで対処します。XML-RPCに対応しているブログに投稿できます。

インストールしたら設定モードで、XML-RPCのエンドポイントURL、ブログID、ユーザ名、パスワードを指定して下さい。URLはデフォルトでココログ無料版のURLを指定してます。ココログの場合、ブログIDは管理ページでブログを選択するとURLに表示されます。

設定モードで、enable titleにチェックがされていると、uploadボタンを押した後にブログの記事にタイトルを入力するフォームが表示されます。enable titleをチェックしないとタイトルとして日時が入ります。

以下、投稿を試して成功したブログです。

以下、更新履歴です。更新したらここを書き換えます。

  • 1.02 ブログ投稿したときにタイトルを付けられるようにしました (2008.3.20)
  • 1.01 ブログ投稿できるようようにしました (2008.3.16)
  • 1.00 シンプルなテキスト入力を作成