Sony SmartWatchでandroidリモートコントロール実験

 Android, 携帯電話  Sony SmartWatchでandroidリモートコントロール実験 はコメントを受け付けていません。
6月 042012
 

3月頃に作ってたものの完成に至らなかったので、今更ですがメモ。

仕組みは単純。
自作SmartWatchアプリがSmartWatchのフリック制御を取得し、androidに操作指示を出す

操作指示がIntentなりなら簡単ですが、折角上下左右フリック取れるので、キーパッドの↑↓←→を押した事にしてみようと。
どうやればできるのか悩んでいたところ、@myb1126さんに教えていただきました。感謝。
コア部分は@esmasuiさんの下記を参考にしているようです。。

システムサービスのローカルインターフェイスを取得する
http://d.hatena.ne.jp/esmasui/20091104/1257350421
それをSmartWatchアプリにガッチャンコして完成!

まずブラウザ起動してSmartWatchでフリック操作…したものAndroid本体反応せず。
LogにはSecurityExceptionが。やっぱりダメなのね。

W/System.err(8253): Caused by: java.lang.SecurityException: Injecting to another application requires INJECT_EVENTS permission

アプリにINJECT_EVENTSのパーミッションを付与してもダメ。(付与すれば動くような権限ではない)
他人のアプリは操作できないので、同一アプリ内にWebブラウザ(もどき)を作る方向に変更。

Activity作ってWebVieww貼り付けただけ。その結果がこちら。

汎用性があれば公開したかったのですが、全く無くなってしまったのでお蔵入り。\(^o^)/
ライブラリとかでコレ入れればSmartWatchでフリック操作取れますよーみたいに配布すれば、まだ価値はあるのかもしれませんが。

本当はPDFビュアーとか、ブラウザのSlideShareとかを操作したかったのですよ。
AndroidからHDMIで画面やプロジェクタに出しながらの、プレゼン操作用として。
WebViewじゃこのあたり難しいようなので諦めです(´・ω・`)

5月 162012
 

Google Play(旧androidマーケット)で、Sony「SmartWatch MN2」用アプリ公開しました。
Gtalk Notifier の有料版です。

前回のGtalk Notifier公開の記事はこちら
http://init0.net/wp/archives/373

・機能(無料版との違い)
Gtalkメッセージ受信時に、送信者IDとメッセージ内容が表示されます。

・値段
100JPY

・ダウンロード(Android Market)
https://market.android.com/details?id=net.init0.android.liveware.extension.gtalknotifierpro
※SmartWatchが無いと動作しないので注意!

・色々と
前回同様、@8796n先生に読み出すURI(~/contacts/[thread_id])教えていただき何とか完成。

final Cursor result_contact =
  this.getContentResolver().query(Uri.parse(
  "content://com.google.android.providers.talk/contacts/"
  +result.getString(result.getColumnIndexOrThrow("thread_id")))
  , null, null, null, null);

カラム情報を出して見ると25カラムありました。
last_unread_message
avatars_data
contact_id
cap
subscriptionType
type
shortcut
mode
username
_id
chats_contact_id
client_type
rejected
subscriptionStatus
contactList
jid_resource
status
nickname
last_message_date
groupchat
provider
qc
account
unsent_composed_message
avatars_hash

中身は全て追えてないですが、今回必要な情報は下記でした。
last_unread_message にメッセージ文面
username に送信者ID(xxx@gmail.com)

前回引っ掛けてた~messages/では
usernameはあったけど入っておらず(null)
bodyはメッセージ文面入っているものの、内容が重複する場合がある
であまり使えませんでした。

たとえば1通目「おはよう」2通目「ございます」と受信すると、
1通目のbody「おはよう」2通目のbody「おはよう[改行]ございます」と入る

同じパターンで受信時に今回の~contacts/で読み出すと、
1通目のlast_unread_message「おはよう」2通目のlast_unread_message「ございます」と入るので、コレがそのまま使えました。

SmartWatch用アプリ「Gtalk Notifier」公開

 Android, 携帯電話  SmartWatch用アプリ「Gtalk Notifier」公開 はコメントを受け付けていません。
5月 072012
 

Google Play(旧androidマーケット)で、Sony「SmartWatch MN2」用アプリ公開しました。

■アプリについて
・スクリーンショット

・機能:
Android標準のGoogle Talk(チャット)でメッセージ受信した事を、SmartWatchで通知してくれるアプリです。
SmartWatch標準のNotification通知機能を利用していますが、バイブレーションしてくれるので端末をポケットに入れていても大丈夫です。

時間の都合で、受信を通知する機能のみです。
(相手の名前(ID)とメッセージ内容表示を、別途やるかもしれませんが、まあ期待しないでください)

・値段:
無料  まだ通知しかしないし

・ダウンロード(Android Market)
https://market.android.com/details?id=net.init0.android.liveware.extension.gtalknotifier
※SmartWatchが無いと動作しないので注意!

・色々と
Gtalkの引っ掛け方を探ってたところ、@8796nさんに色々教えていただき無事完成しました!大感謝!
実際には下記のような登録をServiceのonCreate()で実行。

private static final Uri CONTENT_URI =
    Uri.parse("content://com.google.android.providers.talk/messages");
private static ContentObserver contentObserver;
    :
    :
    :
if (this.contentObserver == null) {
    contentObserver = new ContentObserver(new Handler()) {
        @Override
        public void onChange(boolean selfChange) {
            update();
            super.onChange(selfChange);
        }
    };
    getContentResolver().registerContentObserver(CONTENT_URI, true,contentObserver);
}

更新があったらupdate()で処理をする感じです。内容は省略ですがCursorを使って上記CONTENT_URIを読むとGtalkのデータが取れます。
カラム情報を出して見ると

        final int columncount = result.getColumnCount();
        for(int i=0;i<columncount;i++)
        	System.out.println(result.getColumnName(i));

_id :メッセージID
thread_id :数値
nickname :null
body :実際のメッセージ文面
date :日付(数字)
real_date :日付(数字)
type :0:送信メッセージ 1:受信メッセージ
packet_id  :英数まざったID
err_code :0:エラーなし
err_msg :null(エラー時に入る?)
is_muc :?null
show_ts :?null
consolidation_key :?null

こんな感じ。_idとかdateとかtypeで新規受信メッセージを見分けてます。
_idで見分けようとしたら、連続でメッセージが来ると同じ_idで通知されたり、内容同じ通知が数回来る時があったりとハマリポイントがいろいろ有りました。

あとonDestroyでunregisterContentObserver(contentObserver);してるのですが、
SmartWatch画面上のボタン押すと、onCreate→onDestroyが呼ばれて解除されちゃって、Gtalk受信を検知できなくなるとか。

それならばと、unregisterContentObserver処理消したら、SmartWatch画面上のボタン押すと2重通知されるようになったり(><)
Serviceってよく分からないです。

4月 262012
 

2012/04/22に、日本Androidの会 横浜支部 第12回定例会で、SmartWatch開発(のさわり)について発表してきました。

一週間前のキラーパスだったので、準備不足でしたがなんとか。
半分SmartWatctの宣伝に。

資料はSlideShareにアップしてます。( ゚д゚)ポカーンってなった最後のページは削ってます–;
http://www.slideshare.net/ta9mar/120422-smartwatch

お話したポイント
・BT繋がないと何もできない、BT繋いでやっとただの時計、対応アプリを入れてやっと色々できる
・LiveViewはちょっとアレだったけど、SmartWatchは弱点を克服してきている
・android側にSONY公式のLivewareとSmartWatchの2つのアプリが必要
・国内サイトではXperiaのみ(SO-01B除く)って書いてるけど、グローバルサイトではなんでも対応してそうに書いてある。X10(SO-01Bの海外)もあるので行けるんじゃないか?
・当然GNでも動いた。
・SONY公式アプリ色々でてる。
CallHandling:電話取ったりできるけど、通話はandroid本体で行うので残念!
FindPhone:SW操作してandroid本体から音を出して携帯を探せる。BT繋がる範囲にいないとなのでやや残念!
MusicPlayer:一番便利だけど音楽出るのはandroid本体なのでやや残念!
などなど。
・特にMusicPlayerは間違って起動すると、本体からアニソンが流れて大変なことになる。
ダブルタッチで終了すれば問題ないが、誤タッチになって再生が始まりギャアァァァァ━━━━━━(|||゚Д゚)━━━━━━!!!!!!ってなる

・BTで通信してるのは、画面転送とSW操作イベント。
・アプリ(control)とウィジェットがある。大体androidのそれと似た感じ。
・開発にSmartExtension_SDKが必要。
・エミュレータのapkが入ってるので、SW本体もって無くても対応アプリ試せます
・SmartExtention対応製品は今のところSmartWatchとSmartWirelessHeadsetProの事。ドキュメントはSmartWatchだけの記載じゃないので注意。
・サンプルコード依存関係が激しいので注意。

そんなところでしょうか。

SmartWatchは発売日、数時間で売り切れたんですが、先日入荷されてました。
(お高いものなので、NXやacro HD買った人探してお願いするといいです)
http://store.sonymobile.jp/

最後に( ゚д゚)ポカーンとなって削除したスライドはこちら

ARマーカー表示して、ネネさん表示させた図。お誕生日(4/20)おめでとうございます(∩´∀`)∩ワーイ

#日曜日発表で金曜日帰ったら日経BPさんからSmartWatch本体が届いてて助かったです

GalaxyNexusの外部端子から充電してみた

 Android, 携帯電話  GalaxyNexusの外部端子から充電してみた はコメントを受け付けていません。
3月 112012
 

GN現物をお安く入手できたので実験してみた。

きっかけは@itogさんのツイート。
https://twitter.com/#!/itog/status/176647586588004352

「5Vつっこんでみたらいい」と仰るので突っ込んで見た。

右側側面に縦に3端子並んでいる。ここに壊れるの覚悟で+5VとGNDを総当りで。。。

結果、一番上にGND、一番下に+5V(真ん中は開放)で充電されたよ
 ● GND
 ● ???
 ● +5V

真ん中は充電には不要だけど、何か使い道があるんだろう。