2012年4月18日水曜日

Gmail の intent 取得と端末の断片化

Liveviewで、poor Gmail Notifier をマーケットにリリースしたのが、2011年の8月、今月 SmartWatchの Gmail Notifier - Smart Extras™ も無事リリースとなりましたが、Gmail Notifier - Smart Extras™ をリリースして衝撃の事実。

なんと、元々Gmailのintentを拾う部分の作りは同じなのですが、Xperia arc ではintentを拾えていないことがわかりました。
poor Gmail Notifier リリースからずっとです。
また、x10miniなどのAndroid2.1端末も拾えてなかったようです。

とくに arcは衝撃的でした。
そんな変な端末だとは思っていなかったのですが。。。。。。

結論から行くと下記のようにReceiverを仕掛けておけば、Gmailのintentはもれなく拾えていそうです。(今のところ私の知る限り。



<receiver android:name=".GmailReceiver" android:label="receiver">
            <intent-filter>
                <action android:name="android.intent.action.PROVIDER_CHANGED" />
                <data android:scheme="content"
                    android:host="gmail-ls"
                    android:pathPrefix="/unread/^i"
                />
            </intent-filter>              
            <intent-filter>
                <action android:name="android.intent.action.PROVIDER_CHANGED" />
                <data android:scheme="content"
                    android:host="gmail-ls"
                    android:pathPrefix="/unread/^i"
                    android:mimeType="*/*"
                />
            </intent-filter>                      
            <intent-filter>
                <action android:name="android.intent.action.PROVIDER_CHANGED" />
                <data android:scheme="content" android:host="gmail-ls"
                    android:path="/unread/^iim" />
            </intent-filter>         
        </receiver>
古いAndroid端末は、mimeType付きのintentが飛んでるのはぐぐると出てきます。
また、path に関して /unread/^i と /unread/^iim の2種類が飛んでるのもググると出てきます。

ですが、arc はまさかの /unread/^iim のみなのでした。

通常Android2.3ですと、 /unread/^i が出てるはずなので、ずっとこれを拾っていました。
mimeType はずっと気付かないでいましたが、まぁこれは古いAndroid(2.1?)の話しなのでよしとします。
実際、HTC DesireHD をメインで開発していたのですが、/unread/^i で拾えます。
GalaxyNexusも拾えます。また、ユーザさんとやり取りした感触だと、arc以外の Xperia の皆さんも拾えていそうです。
なぜか、arc だけ /unread/^i は出ず、 /unread/^iim のみ出るようです。
(もしかしたらacroもなのかな???)

で、そんなこんながわかりましたので、全部拾ってみました。
すると、今度は通常  /unread/^i  /unread/^iim  両方でてるので、2重に通知してしまう問題が勃発。(arc は^iim だけなので1回の通知になったのでしょうけれども。。。)

^i が拾えた端末では、 ^iim の通知は無視をするロジックをいれて、現在に至ります。

if ("^^unseen-^i".equals(extras.getString("tagLabel"))){  
Editor e = mSharedPreferences.edit();
e.putBoolean("tagLabel", true);
e.commit();
Log.d("tagLabel ^i isTrue ");
}
if (mSharedPreferences.getBoolean("tagLabel", false)
&& "^^unseen-^iim".equals(extras.getString("tagLabel"))) {
Log.d("tagLabel ^iim && ^i isTrue ");return; // }
こんな感じ。。。。

断片化たまらんわ、と言うお話でした。


2012年4月12日木曜日

Gmail Notifier - Smart Extras™ , 通知ができるようになりました。

Gmail Notifier - Smart Extras™
Gmail Notifier - Smart Extras™ ですが、どうもEmulator上で動かしていたテストバージョンは、全体のイベントに通知されていなかったようで、海外の方々から「うごかねーよ」と何件か問い合わせいただいてました。

今日、ついにSmartWatch が届きましたので、実際に動作確認したところ、たしかに通知されません。
イベントはたまるんですがね。


で、なんじゃろなとゴソゴソしていると
Notification.EventColumns.EVENT_READ_STATUS = true
で登録していました。orz

つまりイベントに通知に行ったけど、既読だからイベントに表示されなかったと。。。。
いや、既読でも未読数出して既読もイベントで読めたって良いじゃんとか思ったり。。。Liveviewののりでねぇ。。
それに既読で登録する意味あるのかいな、SmartWatchですよ?ねぇ?!
通知してなんぼの 。。(ry
それ以外のところは、Emulator上で確認していた動作通りでしたので、まぁ簡単に修正できてよかったです。

そんなこんなで、無事 Gmail Notifier - Smart Extras™  は通知ができるようになりました。

只今、本文のSummaryを通知する Gmail Notifier 2 もあわせて作成中です。

2 はいつもののりで有料です。ジュース一本おごるくらいのノリで買っていただけると有りがたいです。

さて、Gmail Notifier は順次動作などブラッシュアップしていきますので、兎にも角にもよろしくお願いします。


2012年4月10日火曜日

SmartWatch MN2 ついに国内発売


ついに発売されました。SmartWatch MN2
10:00くらいから販売開始され、直後はサイトが不安定でしたが、本日無事注文することが出来ました。
よかったよかった。
14:00くらいには売り切れたようで、いったいSONYはどのくらいの需要があると見込んでいたんでしょうね?
Liveviewが余りまくって、SmartWatchの在庫調整も慎重になったんじゃないかなんて思っちゃいます。

で、18:00頃いは発送のメールが来たので最短11日に手にすることができるかもしれません。

手にしたら速攻でGmail Notifier の調整をするつもりです。

はやく来い来い。


とそんな訳でタイトルがついにSmartWatchに変わりましたw