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)
ファイル (widgetディレクトリ内)
- ファイル読み込み (readFile)
- ファイル削除 (deleteFile)
- ファイルダウンロード (download)
- ファイルリスト (getFileList)
アプリ起動
- ブラウザでWebページを開く (openWeb)
- Yahoo MessengerなどのIMを起動 (openIM)
- My Contactsを開く (openContacts)
- ラジオのOn/OFF US版のみ (playRadio/stopRadio)
- PlaceEngineを開く 日本版のみ (openPlaceEngine)
通信
- クロスドメインのXMLHttpRequest通信 (RequestHttp)
- ネットワーク接続状態の確認 (mylo.System.getNetworkStatus)
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が入っているからでした。これを除くと動きました。
シューティングゲームは動作が遅くてまともに動きませんでした。
他のプラットフォームのwidgetをmyloで動かしてみる
JavaScriptベースのwidgetには以下がある。
- Yahoo!ウィジェット
- Googleデスクトップガジェット
- Mac OS X ダッシュボード ウィジェット
- Windows Vista サイドバー ガジェット
- Opera Widgets
これらをmylo widgetに簡単に置き換えられないか考えている。たいていは作り変えが必要だが、簡単なものだったら widgetPackage.xml を作って再パッケージすることで動くものもある。
たとえば、以下のMax OS X ダッシュボード widgetのMine Sweeperをmylo widget化するには、以下をするだけでよい。
http://www.apple.com/jp/downloads/dashboard/games/minesweeper.html
- zipファイルを解凍して、MineSweeper.htmlをindex.htmlに名前を変更
- widgetPackage.xmlをダウンロードしてindex.htmlと同じ場所におく
- 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
ファイルに保存できないで、とりあえずブログ投稿できるようにすることで対処します。XML-RPCに対応しているブログに投稿できます。
インストールしたら設定モードで、XML-RPCのエンドポイントURL、ブログID、ユーザ名、パスワードを指定して下さい。URLはデフォルトでココログ無料版のURLを指定してます。ココログの場合、ブログIDは管理ページでブログを選択するとURLに表示されます。
設定モードで、enable titleにチェックがされていると、uploadボタンを押した後にブログの記事にタイトルを入力するフォームが表示されます。enable titleをチェックしないとタイトルとして日時が入ります。
以下、投稿を試して成功したブログです。
- ココログ (無料版)
- URL: http://app.f.cocolog-nifty.com/t/api
- blogID: blogID
- Seesaa Blog
- URL: http://blog.seesaa.jp/rpc/
- blogID: blogID
- FC2ブログ
- URL: http://blog.fc2.com/xmlrpc.php
- blogID: 0
- Wordpress.com
- URL: http://username.wordpress.com/xmlrpc.php (usernameは自分のusername)
- blogID: 1
- ドリコムブログ
- http://blog.drecom.jp/api/xmlrpc
- blogID: username
- JUGEM
- URL: http://*****.jugem.jp/admin/xmlrpc.php (*****は自分のサブドメイン)
- blogID: なし
- gooブログ
- URL: http://blog.goo.ne.jp/xmlrpc.php
- blogID: username
- Windows Live Spaces
- URL: https://storage.msn.com/storageservice/MetaWeblog.rpc
- blogID: MyBlog (固定)
- usernmae: your space name
- password: 秘密のキーワード (電子メール投稿で設定)
以下、更新履歴です。更新したらここを書き換えます。
- 1.02 ブログ投稿したときにタイトルを付けられるようにしました (2008.3.20)
- 1.01 ブログ投稿できるようようにしました (2008.3.16)
- 1.00 シンプルなテキスト入力を作成