Android Activityを透過させる

AndroidのLiplisで、おしゃべりするためのインターフェースを
考えた時に、役に立ったチップスです。

テックブースターさんの「Activityを透過する」という記事
http://techbooster.jpn.org/andriod/ui/4715/

この手法を使って、
ホームを見せつつ、テキストボックスとボタンを表示するようにしています。

Android ActivityからAppWidgetProviderにデータを渡す

上で作成した透明アクティビティから、リプリスのウィジェットに
いかにして話しかけのデータを渡そうかという話です。

通常のアクティビティ同士であれば、インテントを使って受け渡しを行うと思います。
例えば以下のサイトの解説のような方法。

同様にインテントを使ってウィジェットに値を渡せるだろうと思っていましたが、
全然うまくいきませんでした。

結局どうしたかと言いますと、シングルトンを使いました。
Androidでは全く推奨されない方法ではありますが、
文字1個であること、途中でクリアされてしまっても特に問題がなかったため、
採用しました。

処理は以下のような手順で、

1. シングルトンに文字格納
2. ウィジェットにブロードキャスト
3. ウイジェット側でイベント発生
4. シングルトンの文字受け取る
5. Clalisに投げる・・・・

一瞬で終わるので弊害は無さそうです。
 
 
結論としては、Activityからウィジェットに値を渡す場合はシングルトン使えば渡せる。
でも使い方に注意して、というところでしょうか。