2011年6月22日水曜日

android widget設定画面で Ajax load みたいなぐるぐるを実現

今日は超軽め

前回のリリースで、widget を貼りつける際に必要な設定を
IMAP で取得するという機能を入れました。

この時に困ったのが「service の context では progressDialog を
立ち上げられない」という問題。

widget の設定画面は Activity を使って作成する。

でも、getApplicationContext で取得できる context は
通常の Activity で取得できるものと違うらしく、service の
context では progressDialog は出せませんよー的なエラーが発生してしまう。


そこで、画面に Ajax load 的なぐるぐるを出したいなぁと思ったわけです。


でも、Android はアニメgifが苦手。

試しに作って貼ってみましたが、ピクリとも動きません。

ブラウザエンジン経由で無理やり動かす方法もあるようですが、
ここはシンプルに Android がそれ用に提供している機能を使いました。


アニメーションを Android API では定義できます。

resディレクトリに Android XML File を追加すると、「What type of resource
would you like to create?」のカテゴリに Animation という選択肢が
ありますので、これを選んで作成します。

自分の場合は回転させたかったので以下のように記述しました。


<?xml version="1.0" encoding="utf-8"?>
<rotate
xmlns:android="http://schemas.android.com/apk/res/android"
android:duration="500"
android:fromDegrees="0"
android:toDegrees="360"
android:pivotX="50%"
android:pivotY="50%"
android:repeatMode="restart"
android:repeatCount="-1"
>
</rotate>

これだと画像の中央を中心に0.5秒に一回転するという感じです。
いつまでも回り続けます。

後はこの定義を ImageView に設定してやるだけ


ImageView limg = (ImageView)findViewById(R.id.loading_image);
Animation anime = AnimationUtils.loadAnimation(this.getApplicationContext(), R.anim.loading);
limg.setAnimation(anime);


これで、それなりな画像を用意してやれば完成です。
簡単でしょ?


ちなみに、Animation は rotate の他にも
・alpha
・scale
・set
・translate

なんて種類があるみたい。


この辺と surfaceView を使えば、flash とまではいかなくても
結構な視覚効果を実現できるかも~~~

gmail がおかしくなっていたような??

昨日、Xメールからメールが送信できないという問題が出ました。
受信は出来るのに、送信すると権限(Authenticationエラー)がないと。

で、PCからログインして設定周りを見直してみたら(特に変更はしなかったと思う)
すぐに使えるようになりました。

今日、他に使ってくれている人に聞いてみたらそのような現象は起きていないとのこと。


俺だけかな?なんだったんだろー???

2011年6月20日月曜日

X メール 2.1.0 をリリースしました

変更点は以下の通りです


  • 対応機種の追加 DM009SH、SO-01C [xperia arc]、N-04C [medius]、SH-03C、T-01C、001HT
  • アドレス検索でグループによるフィルタリング機能を追加
  • 読み込みに時間のかかるウィジェットの貼りつけが上手くいかない問題を改善
  • 設定取得時に発生していた不具合を解消
  • メール取得に関する説明文を追加
次の更新は検索したメアドの複数選択を可能にするかも

2011年6月14日火曜日

スマートフォンのアプリとWeb

実は自分、本業の方はウェブ系なんです。
で、まぁHTML5とかの研究をしばらくやっていまして、
今日はその辺と絡めて現状をつらつらと述べてみようと思います。


スマホの普及率は半端ない。
※スマートフォンの略称「スマホ」はだいぶ定着したようです。

色々数字が出されていますが、どれを引用してもすぐ陳腐化しますので
ここではあえて出しませんが、ケータイユーザーを逆転する日は近いでしょう。

そして、スマホは色々な特徴を持っていますが、特に大きなポイントは
「ウェブ閲覧しやすい」という部分ではないでしょうか。

これによって、ウェブへのアクセスチャンスが大幅にあがるはずなんです。

だから、コンシューマ向けのサービスを展開する企業はビジネスチャンスを探りますし、
我々の様な業界の人間はブームを作るように盛り上げます。

人気と盛り上がりが相まってこの状況。

ただフィーチャーフォン(ガラケー)へのふり戻しもあると思います。
実際、フィーチャーフォンの方がユーザビリティに優れている機能だってありますし、
キャリア主導のビジネスモデルは供受双方にとって都合が良いものでもあります。

実際、iPhoneからフィーチャーフォンに機種変する方をショップで見かけました。

ただ、その方もiPhoneはSIMなしで使い続けるようでした。


僕は恐らくどちらかが勝つとか負けるとかではなく、属性やシーンで使いやすい方を
選択して使い分ける世の中になるのではないか?と考えています。

ある人はスマホだけ。
またある人はフィーチャーフォンとタブレットPC、みたいに。


とまぁ、前置きが長くなりましたが本題に入ります。

提供側はなんとか消費者にリーチしようと手段を考えます。

現状、その手段は「アプリかウェブか」という事になっています。

(以下はセキュリティの話は度外視しますね。現状、どの方法でも
絶対安全はないので)

課金や密着度を考えるとアプリの方がちょっと有利になります。
最も大きな違いは速度が速いので、処理の大きいサービスを
提供できますし、まぁとにかく何でも出来ます。

ただ、問題が2つ。

・最低OS毎にアプリを作らなければならない。
・インストールさせるまでが大変。


で、ウェブだとどうなるかというと、スマホは基本的にPCと同じ
技術で作ったコンテンツなら見れます。なので一つ作れば
リーチ出来る消費者は非常に多く、また検索エンジンから
集客する事が出来ます。検索エンジン対策を行う等、努力する
部分も確立されています。

ただ、処理が遅い事と、障壁の少ない課金の仕組みを提供
するのがとても困難であるという問題があります。

検索でちらっと来た人はなかなかお金を払ってくれません。
クリック数が一つ増えるだけで、コンバージョン(ここではお買い上げ)
が大きく下がるというのは業界の常識。


そこで、以下のような考え方が主流になっています。
「ウェブで集客し、アプリダウンロードへ誘導する」


まぁ、これはこれで良いのですが、やっぱりアプリは面倒ですし、
アプリはがっつり機能を追求して欲しい!という思いもあって、
今話題(?)のHTML5の可能性についてお話したいと思います。


ウェブアプリという考え方があるのですが、HTML5の様な
新しい機能を使ってウェブ上でアプリ風に作りこんでしまおう
というものです。そのフレームワークとして「jQuery Mobile」など
があります。

jQuery Mobileについては他の方にお譲りするとして、そういう
考え方が生まれてしまうほどHTML5は強力な機能を備えています。

・SQLによるclient side data storage
・svgタグやcanvasタグによる充実した描画機能
・CSS3の細やかな装飾
・動画や音声の再生を行うタグ
・大幅に拡充された入力要素
・ユーザー操作に関するタグ

やはりCSS3の装飾やデータストレージが大きな機能ですかね。
(CSS3はとても大きな話題なのでここでは割愛)
また、今までJavaScriptで書いていた機能がタグで実現できる
物も多くなるので、スピードアップもできちゃいます。

またさらに、ウェブフォント(iPhoneでは使えないですが)のような
機能を組み合わせれば、アプリでは難しい表現を行えるように
なります。今、自分も勉強会と称して雑誌やチラシのデザインを
ウェブに起こして遊んでます(笑)


しかし、これも万能とはいかず、OSによって書き方や対応範囲が
違っていたり、またバージョンによっても違ったり(特にonResizeの
時のwindow.orientationがひどい!)するので、完全にワンソースとは
言えないのが現状です。

とはいえ、アプリに比べて圧倒的に汎用性が高いのは間違いない
ですし、ビジネスモデルによっては主役になりうる可能性は確実に
秘めています。皆が苦労しているフリーミアムとマネタイズの解決策
に期待ですかね。


後は小さい声で言いますが、そのうちリリースされる弊社ソリューション
に期待するという手もあるかも。

http://www.x-fit.jp/

あえてリンクにはしねっす。

X メール 2.0.8を公開しました

今回の修正はアカウント一覧の画面で発生する例外に対処するコードを入れたのみです。

次回の修正は多分機種対応になるかと思います。


やっと色々落ち着いてアプリの方に力を入れられそうです。

2011年6月8日水曜日

widget入門

Androidアプリの醍醐味の一つ、Widgetについて書きます。

チュートリアル的な紹介は他で多くやられていますので、
ここではメカニズムや考え方を中心に書いていきます。

その辺をここの売りに出来ればと(笑)


まず、ユーザーから見るとウィジェットは「ホーム画面に張り付いている
小さなアクティビティ」という事になると思います。

しかし内部的にはマニフェストに宣言されたウィジェットごとにイベントを処理
するためのハンドラをロードする形式をとっています。

これは恐らく、ホーム画面の安定化とメモリ利用の効率化からきている
仕様だと思われます。。。


この仕様であるため、画面に貼りつけられた同じアプリから貼りつけたウィジェット
は同じハンドラを共有することになります。そのため、貼りつけ単位でふられた
一意なIDを元に個別の処理を行っていくという流れになります。

ただ、基本的にウィジェットが拾えるイベントは

・貼りつけられた時
・削除された時
・ホーム画面の準備が整ったとき(起動時)
・(移動は確かめてないです)

であるため、この時にウィジェットの描画とviewに対する操作がされた時の処理
(PendingIntent)やバックグラウンドサービスの起動などを行う必要があります。


以上を踏まえると、詳細設計モデルとしては以下の様な考え方が基本となるでしょう

・貼りつけ単位で何をしたいのか明確にする(ID毎の実装
・共通でしたい事を明確にする(ウィジェットのインスタンス・スタティックメンバ
・常に動かしていたい機能を明確にする(Serviceとの連携
・ホーム画面から使いたい機能を明確にする(PendingIntentから起動するアクティビティ


取りあえず、ちゃちゃと概要だけ。
また時間があったら端末の状態で処理を考える必要性について書いてみたいです。


では、めちゃ眠いのでお休みです☆★☆