2012年3月11日日曜日

Liveview プラグインの ICS 対応

GingerBreadまでと同じ作りかたでは、ICSでは動作してくれないLiveviewのpluginですが、ICSでも動作するようにするメモです。


  1. Boot時に、pluginのServiceを立ち上げる。
  2. アプリケーションとして、ドロワーに表示される状態にし、Preferenceをキックするようにする。
この2点の対応で、ICSでもpluginが動作するようになります。

manifestに


<activity android:label="@string/app_name" android:name="com.sonyericsson.extras.liveview.plugins.PluginPreferences" android:launchMode="singleInstance">

<intent-filter>

<action android:name="android.intent.action.MAIN"/>

<category android:name="android.intent.category.LAUNCHER"/>
</intent-filter>
</activity>



<receiver android:name=".LiveViewReceiver" android:enabled="true">

<intent-filter>

<action android:name="android.intent.action.BOOT_COMPLETED"/>
</intent-filter>
</receiver>



で、LiveviewReceiverで、こんな感じでServiceをキックする。




package jp.ddo.dekuyou.liveview.plugins.gmail;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
public class LiveViewSaverReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
//
String action = intent.getAction();
if (action.equals(Intent.ACTION_BOOT_COMPLETED)) {
context.startService(new Intent(context, GmailPluginService.class));
}
}
}

するとなぜか、LiveviewアプリケーションのPreferenceにも表示されるようになり、無事動作するようになります。


せっかく、GingerBreadでのペアリング問題から開放されましたし、他のPluginも対応されると良いなと思う今日この頃です。
(根本的にはSonyが対応すべきだと思いますが。。。。)

ちなみに、smartwatchは先日のLivewareアプリのアップデートで対応されたみたいですね。



2012年3月4日日曜日

ICS では、Liveview も smartwatch も共に動作しないかも。。。。

この週末、Galaxy Nexus を手に入れたので、早速 Liveview と Ice Cream Sandwich(AndroidOS 4.0) の相性を確認してみました。 なんせ、Eclair では Bluetooth 接続がうまくいっていたものが、GingerBread では接続の度に再ペアリングを要求されると言う謎の現象が発生していたので、Ice Cream Sandwich でもなんかあるんじゃないかと。。。。

で、ペアリングですが、問題ありませんでした。

よかったよかったと、思ってさて動作確認と思ったら、プラグインが Liveviewアプリケーションで認識されていません。

嫌な予感がしたので、smartatchのEmulatorも確認。見事にextensionが認識されていません。
これは困りました。

※2012/04 smartwatchはその後LivewareのアップデートでICSでも稼働することを確認しました。


ちなみに、Liveviewアプリケーションに標準で付いているMessageの通知は動作していました。
とにかくpluginとの連携がOSが変わったことによって、出来なくなったみたいです。

これじゃ、使い物になりません。
特にsmartwatchは標準付属のアプリはなくなって全てextensionとして追加する形式みたいですしね。。。。。


こういうアプリ連携はAndroidではどうやって認識しているんでしょうね?
詳しくは知らないのですが、その方法がICSではできなくなったってことなのかなと思います。

SonyEricsson 2011年モデルはICSバージョンアップ対象みたいですし、ほんとどうなるんでしょう。。。。これ。。。。

2012年2月12日日曜日

Smart Extras™ 、Smart SDK で謎の例外


なんでしょうねぇ。。。 たまぁーにでてるんですよねぇーーー。
エミュレータだからかなぁ????
java.lang.RuntimeException: An error occured while executing doInBackground()
at android.os.AsyncTask$3.done(AsyncTask.java:200)
at java.util.concurrent.FutureTask$Sync.innerSetException(FutureTask.java:273)
at java.util.concurrent.FutureTask.setException(FutureTask.java:124)
at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:307)
at java.util.concurrent.FutureTask.run(FutureTask.java:137)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1068)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:561)
at java.lang.Thread.run(Thread.java:1096)
Caused by: android.database.sqlite.SQLiteException: database is locked
at android.database.DatabaseUtils.readExceptionFromParcel(DatabaseUtils.java:158)
at android.database.DatabaseUtils.readExceptionFromParcel(DatabaseUtils.java:114)
at android.content.ContentProviderProxy.bulkQueryInternal(ContentProviderNative.java:330)
at android.content.ContentProviderProxy.query(ContentProviderNative.java:366)
at android.content.ContentResolver.query(ContentResolver.java:250)
at com.sonyericsson.extras.liveware.extension.util.notification.NotificationUtil.querySources(NotificationUtil.java:517)
at com.sonyericsson.extras.liveware.extension.util.notification.NotificationUtil.getExtensionSpecificIds(NotificationUtil.java:272)
at com.sonyericsson.extras.liveware.extension.util.registration.RegisterExtensionTask.registerOrUpdateSources(RegisterExtensionTask.java:258)
at com.sonyericsson.extras.liveware.extension.util.registration.RegisterExtensionTask.registerOrUpdateExtension(RegisterExtensionTask.java:157)
at com.sonyericsson.extras.liveware.extension.util.registration.RegisterExtensionTask.doInBackground(RegisterExtensionTask.java:114)
at com.sonyericsson.extras.liveware.extension.util.registration.RegisterExtensionTask.doInBackground(RegisterExtensionTask.java:1)
at android.os.AsyncTask$2.call(AsyncTask.java:185)
at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:305)
... 4 more

2012年2月11日土曜日

Gmail Notifier - Smart Extras™ 、SmartWatch の Gamil 通知 をマーケットに公開しています。

Gmail Notifier - Smart Extras™
Gmail Notifier - Smart Extras™ をマーケットにコミットしました。 http://goo.gl/Ac8Pt

とりあえず、とにかく「Sony Ericsson "SmartWatch Meeting 2012"」までにコミットしておきたかったのです。。。
私は残念ながら関西在住なので参加できませんが、きっとmeeting で、smartwatchを先行して手に入れた方が必要としてくれるはず。。。。使ってみてくれるはず。。。。。





基本的に仕様は、Liveviewの poor Gmail Notifier と同様で、各アカウントのパスワードを入れた場合、着信があると、GmailのAtomFeedを読みに言って、FromとSubjectを通知する仕掛けになっています。
パスワードが設定されていないアカウントや、通信状態に問題があってAtomFeedを読めない場合は、着信があったことと未読数のみの簡易通知になります。

ちょっと気になったのが、smartwatch はBluetooth3.0対応と言うことで、2.1に比べて通信速度があがっているんだと思います。
しかし、現状発売されているスマホはすべてがBluetooth3.0に対応しているわけではありません。
ハード面での進化もあり、smartwtach側の表示がTimeScape風にできる(背景画像を送れる)んですが、これ、2.1だとどうなんだろう???と思っています。
通知されてなんぼ、のウェアラブルデバイスだとおもっていますので。

あと、背景画像を設定すると、文字が見にくい。。。。


とかなんとか思いにふけっていますが、正直実機をさわらないことには。。。。

あー早くほしい。。。。。

2012年2月1日水曜日

poor Gmail Notifier Extension for SmartWatch


poor Gmail Notifier Extension for SmartWatch
と言う訳で、SmartWatch でも当然スマートなGmailの通知はまずは必要だろうということで、LiveView版からの移植作業をしています。

とりあえず、エミュレータでの動作確認は完了。

しかし、無骨なエミュレータですw

全く実機のイメージがつかめません。



ところで、SmartWatchのSDKですが、Liveviewのものとは全く互換性がありません。

Smart Extension SDK      LiveView micro display SDK


よって、LiveViewのPluginをSmartWatchで利用したいと言う場合、移植が必要になります。めんどくさい。

今回SmartWatchのSDK、Notification部分を見ることになりましたが、Liveviewと違って、アプリがServiceとして常駐していなくてもブロードキャストで起動されて動作するくさいです。
これはタスクキラー系アプリにkillされるとあっさり動かないLiveviewから大きな進化です。

Bluetoothの接続部分はExtension側とは切り離されているようで、ソニエリが用意しているcontentProvider(DB)へ書きこむと、SmartWatchに通知が行くようになっている雰囲気です。
これも、Bluetoothが不安定な状態でのアプリのフリーズなんかが起こりにくそうなので、うんうんな感じになっています。

なんだかAndroidの特徴フル活用な仕掛けになっているように感じますね。(良い事です。)

ま、想像はふくらみますが、何にしろ実機を手に入れないことには・・・と言うところです。



2011年12月23日金曜日

poor Gmail Notifier の通知をちょっとリッチにバージョンアップ


poor Gmail Notifier で Fromアドレス と 件名 が通知されるようになりました!



Gmailの仕様変更から、Liveview の 「Gmail for Liveview」が動作しなくなってしまい、対応をまっていましたが、どうやらバージョンアップは行わないとのことのようですね。

Gmail for Liveview
(This app is no longer supported, it uses an undocumented api to Gmail which changes constantly)





残念ですが、自力でなんとかするしかないかなと思った矢先、GmailのINBOXをFeedで取得できることを知りました。
http://code.google.com/intl/ja/apis/gmail/docs/inbox_feed.html#inbox

こうなったら、

Gmail着信→ブロードキャスト→poor Gmail Notifier で Feed 取得 →Fromアドレスと件名を通知

にするしか無いとなりましたので、ごにょごにょpoor Gmail Notifierをバージョンアップすることにしました。


 と言うわけで、設定画面がこんなことになりました。

タップすると入力ボックスでます。パスワードをいれるものです。

上記のAtomFeed ですが、基本認証ですのでパスワードが必要になります。

[at Your OWN RISK!!!]です。
※端末でOAuthしてごにょごにょを頑張ってみましたが結局どうしたら認証できるかわからずじまいでした。。。orz


パスワードが入力されていると、Fromアドレスや件名の取得を行おうとします。
入力がなければ、今までと同じ、Toアドレスと未読数の通知が行われます。


Gmail for Liveview のように細かい設定はできませんが、まぁこれで、通知とちょっとした内容確認にこまることはなくなります。


- 2011/12/30 リリースしました。 https://market.android.com/details?id=jp.ddo.dekuyou.liveview.plugins.gmail

2011年12月11日日曜日

Livevewアプリケーションを終了させないようにして切断されるのをできるだけ防止する。 その3

前回、
# Exempt oom killer 
sys.keep_app_1=com.sonyericsson.extras.liveview

を build.prop に記述して、LivewViewアプリケーションがAndroidにKillされないようにして運用してみました。
感覚でしかないですが結果切断率が減ったように思えます。
(周りの環境が無線だらけで物理的にだめだろうなーって時はやはり切断発生します。)

そこで、build.prod に記述するのは色々と面倒くさいので LiveviewSaverと言うアプリケーションにしてみました。

中身は setPropしてるだけです。(要ROOT

LiveViewSaver.apk

※ TwitTL2 FaceFBView2 SendSMS2 がinstallされていると、起動時にsetPropするようにしています。(すいません商売じみてて。。。。