2010年9月29日水曜日

タッチボタンの感度

uGreader Marketplaceのコメントを見るとタッチ操作の感度が悪いとの声がありました。タッチスクロールの邪魔にならないように、リストの選択感度を制限したのが裏目に出てしまったみたいです。
基本的に一回のタッチでは選択を開かないで、長押しか、選択中の項目のタッチでしか記事を開かないようにしていますが、もうちょっと調整が必要ですね

感圧式と、静電容量式とで反応も違うかもしれないのでis02をゲットしようと思ってます

is01契約してきました

本当はis02を買いに行ったのですが、在庫がなくて代わりにis01をゲットしてきました。is01はとりあえず予約しておきました。

2010年9月27日月曜日

WP7 カスタムボタンの作成

silverlightでのアプリ作成は VS2010を使いますが、GUI部分の構成はExpression blend4 を使います。もちろんblendを使わなくても構わないのですが、使った方が遥かに楽ができます。

たとえばuGReaderの記事リスト等はデータコレクションを含むクラスを元にblend上でサンプルデータを自動作成して、そのサンプルデータをlistboxにドラッグ&ドロップするだけで、適当なリスト表示のテンプレートが出来上がります。

あとはGUIで並べなおすだけで出来上がってしまいます。

手順さえ解っていればホントにあっという間に出来上がりです。

おもしろいのはボタン等のGUI部品も簡単に自分で作れてしまいます。しかもアニメーションをバシバシいれた派手なものまでプログラムコードを一切書かなくてもできます

という話しを聞いただけでは面白くないので、自分でもやってみることにします


uGReaderのスターアイコンをトグルスイッチとして動作するような部品を作ります。
ONの時に星が光って、OFFの時は消えるスイッチです


参考にしたのは ココのチュートリアル
http://msdn.microsoft.com/ja-jp/library/bb613598.aspx


まず以前に作ったpng画像をもとに作ってみましたが、pathを使って直接レンダリングする方が面白そうなので途中で路線変更

スターマークの XAMLはこんな感じで出来上がりました

ここにXAMLを入れたかったけど、<>いっぱいで表示できなかった


大変だったのは星の絵を作るところですね。なんかバランス悪いし

で、出来上がったスター画像をボタンに変更します。Make Into Contorol です。ここでToggleButtonを選びます



基本的にはこれだけでボタンとして動作する部品が出来上がります。ただし、押しても、Checke/UnCheck状態でも見た目が変わらないので、押したときと、チェック状態の時と、アンチェック状態の時の見た目を変えます



面白いのは、状態の変わったときとか、押されている間とかにタイムラインでアニメーションを指定する事ができます。アニメーションは、ボタンの色、透明度、平行移動、回転、拡大縮小、変形、3次元座標変換等なんでもできちゃう感じ。ページをめくるような動作もできます。操作画面はSoftimageとかの3dソフトみたいです。


作ったら、エミュレータで即実行できます。押してる間、拡大して、星がくるくる回るようにしてみました。(無駄ですが)





リスト表示に組み込んでみました。これら作業にプログラムコードは一切書いてません!ほんとに簡単にできます。(実際は作業に半日かかりましたけど)

この動き、動画で見せたいですねー





2010年9月25日土曜日

WP7プログラム3

uGReader PCからマーケットプレイスを見ると載るようになりました。デバイスからはまだ見えません。以前はPCからデバイスをadesに設定して見るとver1.4が見えていましたが、今はver1.4も見えていません。
t-01bとかでちゃんと見えるようになるか心配です

さて、WP7に移植ですが
まずxmlのデータ受信ができたので、受信したxmlをクラスに取り込んで表示するところに挑戦しました。

WM6では XmlDocument クラスを使っていましたが、silverlight では使えず、かわりにXDocumentを使いました。名前はよく似てますが、使い方は微妙に違います

XDocument,XElement等を使うには System.Xml.Linq を参照に加える必要がりました

using System.Linq;
using System.Xml.Linq;

もしておきます。SelectSingleNodeとか使っていたところを全部下のような感じで書き換えました

XNamespace feed = "http://www.w3.org/2005/Atom";
XElement node = xml.Element(feed + "feed"); 
link = node.Elements(feed + "link").First(p=>p.Attribute("rel").Value=="self").Attribute("href").Value;

 //.SelectSingleNode("feed:link[@rel='self']/@href", nsMgr).InnerText;


本当ならもっと簡単に(xmlからいきなりクラスに変換したり、xmlをリストコンポーネントにいきなりバインドしたり)できるんだろうなぁーと思いながら、せっせと書き換えました

xmlデータをクラスオブジェクトに書き込みができたので、クラスをリストコンポーネントにバインドして表示が出来上がりです。すげー簡単だー。と言いたいところですが、バインドするのに手こずりました。

よくわかってる人には、すごく簡単にできちゃうんでしょうね。



珍しさもあってpivotコントロールに、フォルダリスト、記事リスト、記事表示を載せてみました。
とにかくguiはWM6で全部自分で実装しなければいけなかった事を考えるとものすごく楽です。
データバインドも素晴らしいです

pivotでアイテムを切り替えて表示した場合はフォームの切り替えをしているわけでは無いので、backハードキーを押すと、アプリ終了まで巻き戻ってしまうので考え物です


順調に出来たと思ったら webbrowserで記事を表示すると文字化けしてしまいました

WM6のときは WebBrowser.DocumentText を使いましたが、wp7では

 webBrowser1.NavigateToString(str);

とします。
たとえば、ここで str = "テスト"; とかを表示させても文字化けします。

どーしましょう...




ここまで来ると早く実機を触りたいです

MarketPlaceに審査完了しました

uGreader ver1.5 審査が通りました。ダッシュボードではステータスがカタログで公開済みとなっていますが、今のところマーケットプレイス上では見当たりません。
また何か間違えちゃったかなー

今回はデバイスの必要要件に何もチェックを入れなかったので、キーボード無しのT-01Aでもカタログに載ると思ったのですが?どうなっているのでしょう.....

キーボード付きのデバイス用のマーケットからver1.4も消えているみたいです

2010年9月23日木曜日

WP7プログラム2

またしてもいきなり躓いてしまいました

フィードを取得するのに HttpWebRequest を使用するのですが、先ほど取得した認証コードをヘッダに埋め込む必要があって、今までは


req.Headers.Add("Authorization", "GoogleLogin auth=" + mAuth);

の様にしていたのですが

HttpWebRequest.Headers に Add メソッドも Set メソッドも無いです

msdnには
HttpWebRequest.Headers..Item プロパティ (String) とあるのですが、VsのエディタではItemプロパティが入力支援の候補に出てこなくて、また実装されてないの?とか思いました

実際は

req.Headers["Authorization"] = "GoogleLogin auth=" + mAuth;


のような感じでHeadersに追加できました。連想配列みたいになってんの?おじさんは悩んじゃいました

WP7プログラム

WP7の開発環境が正式に発表されたので、ちょっといじってみました。
実機はありませんが、エミュレータの動作が軽快なのでデバック作業には支障がなさそうです
uGReaderの移植が目標です。ソースはもともとc#で書かれているので移植はそんなに問題ないと思ってましたが、結構いろいろありそうです

まず、HttpWebRequest はサポートしているのですが、非同期通信のみとなっています。
元ソースはメイン処理と別に通信用スレッドを作って同期処理をしていたので、ここを書き換える必要があります。とりあえず実験でボタンを押すとデータを受信するコードを書いてみます


ここでハマったのが、Googleからxmlデータをリードする前に認証コードをやり取りする必要があるのですが、認証処理を実行してレスポンスが得られるまで


req.BeginGetRequestStream(new AsyncCallback(GetSidCallback),obj);
done.WaitOne();
みたいにイベント待ちをすると帰ってこなくなります

BeginGetRequestStream をWaitするのは問題ないのですが、そのあとに
BeginGetResponse
を実行すると、この処理のコールバック関数が呼び出されません

どうやらBeginGetResponseの処理は同じスレッドで動いているようで、イベント待ちでスレッドを停止するとだめなようです

認証コード取得 -> xmlフィード取得

の一連の流れをすべて非同期処理に書き換える必要がありそうです


MarketPlaceに再申請しました

ログインエラーの情報を表示するようにして再申請しました。
httpsの接続条件も緩和しておきました。おかげで昔のipaq(ppc2003)でも動作するようになりました。

英語にも対応したので、最後の登録先に米国も追加してみましたが、説明文とか英文の登録がなかったけど....
英語版は別に申請する必要があるのかな?

来るWP7(まだ来ないけど)のアプリ申請の練習にと思ったけど、どうなることやら

2010年9月22日水曜日

MarketPlaceに認定されませんでした

うはっ

uGreader ver1.5
ログインできずに" Folder data receiving error "がでたそうです。

確かに初回にログインできない事を何度か体験したことがあります。
考えられる原因は


  1. ログイン処理に問題がある
  2. ID,Passwordが間違っている
  3. Googleサーバーがログインを受け付けていない
  4. 端末に問題がある
ですが、

1. ログイン処理自体はver1.5と前バージョンとは変わっていない
2. これは論外
3. 一時的にGoogleサーバーにログインできない事もたまにあるようです
4.  id,passwordは確かなハズなのにログインできない事が一度だけありましたが、その時はMyPhoneにもWindowsLiveにもログインできない状態で、マスタークリアするまで回復しませんでした。
docomoに検査を依頼して戻った直後だったので、なにかおかしな状態だったのだと思いました


ログイン処理はhttps通信を行うので、通常のhttp通信よりハードルが高いのですが、何かしらの原因でログインできなかったようです。実際ログインできない端末もあります


それでも前バージョンは問題もなく認定されていたので残念です。
今までは日本語にしか対応してなかったので、適当にしか審査していなかったのが、今バージョンから英語環境にも対応したので具体的に審査をされてしまったのでは?とか勘ぐってみたり


とりあえずログインできなかった時のメッセージをある程度原因が特定できるようにして再登録してみます





2010年9月21日火曜日

MarketPlaceに申請しました

タッチ対応バージョンを正式版 uGreader Ver1.5 としてMarketPlaceに申請しました
現在審査中です



ところでマイクロソフトとauのページで紹介されてました

ビジネスお役立ち厳選アプリ
http://www.microsoft.com/windowsmobile/ja-jp/100applications/campaign/default.mspx

au WindowsPhoneアプリ
http://www.au.kddi.com/seihin/ichiran/smartphone/app/windows/index.html

2010年9月17日金曜日

uGReader β ver 1.38

2010.9.16
⇒ボタン長押しで外部ブラウザを開くようにしました
webページで戻る機能をメニューを追加しました


まだ課題は残っていますが、そろそろマーケットプレースのほうに更新を上げようと思ってます。

2010年9月15日水曜日

WP7の話題

最近はちょこちょこと目にするようになりましたが、実は結構期待しています。というか早くさっわってみたい。最近は「今日こそは例のテクニカルプレビューのアレが届いてるんじゃーないか?」と思いながら帰宅しては、がっかりするという日を繰り返してます。

T-01AとMW600

ソニエリのbluetoothレシーバMW600/Bを借りてT-01Aで使ってみましたが、いい感じです。
いままではソニーのDRC-BT15を使ってましたが、BT15より一回り小さいのに有機ELディスプレイつきで、電池残量や着信番号の表示もできてます。

BT15との比較ですが、

  • サイズが小さい
  • 有機ELディスプレイ付き
  • ノイズが少ない
  • MW600の電源を入れてからT-01Aにリンクするまでが早い
  • 音飛びが少ない

マイナスポイントは
  • 音量がタッチ操作式で扱いにくい
MW600を貸してくれた人は
  • いつの間にか通話ボタンを押してしまって、知らずに電話をかけていたことがあった
といってました

僕が使ってみた限りでは通話ボタンを押してしまうことは無かったです。
BT15では結構頻繁に(特に同じ場所を通るときに)音飛びしていましたが、MW600では殆どないのがよかったです

2010年9月14日火曜日

uGReader β ver 1.37

ver1.36では online の設定がメニューから変更できなかったので、あわてて修正しました

 uGReaderCab137.CAB

その他、コメントで"ブラウザで開くメニューが無い"との指摘があったので、とりあえず
browser+リンクでメニューを出すようにしました。
ボタンの長押しは次バージョンで対応しようと思います



2010年9月12日日曜日

uGReader β ver 1.36

タッチ操作用のβバージョンを更新しました。

uGReaderCab136.CAB

T-01A等の方向キーの無い端末用に操作ボタンを常に表示するようにしました。Hybrid W-ZERO3などのキー操作ができる端末用のモードもつけたので、今後はこのバージョンに統一していこうと思っています

リストのタッチ感度も調整しました。軽くタッチした時に選択項目が開かないようにしています。長めにタッチする必要があります(選択中の項目は短いタッチでも開きます)




デフォルト設定ではタッチ操作モードはOffにしているので、有効にする場合は、設定画面でタッチインターフェイスにチェックをします




設定を変更するとアプリの再起動が必要です。
再起動すると画面下にタッチボタンが表示されます。ボタンの内容は表示中の画面に合わせて多少変化します


フォルダリスト画面


左から

  1. 設定
  2. 更新
  3. 選択中の項目を開く
  4. 終了




記事リスト画面



左から

  1. スターマーク/(その他マーク)
  2. 戻る
  3. 選択中の項目を開く
  4. 終了/(フォルダの設定)


ボタンを長押しすると/()の動作をします





記事画面



    1. スターマーク/(その他マーク)
    2. 戻る
    3. 選択中の項目を開く
    4. 終了



    終了ボタンや(その他マーク)ボタン等の一部のボタンを押すと更にタッチメニューが表示されます。


    終了メニュー



    ロックはWM標準のロック機能を呼び出しています




    その他マークメニュー




    フォルダの設定メニュー








    ざっとこんな具合にUIを変えてみました

    課題は

    1. どのボタンが長押しできるかわからない
    2. 解像度の低いデバイスではちゃんと表示できない
    3. ブラウザ画面の・戻る・進む・更新機能が動作しない

    です

    銀座

    昨日から奥さんの個展が始まったので、車でお迎えついでに銀座まで行ってきました。


    個展会場。普段は写真撮影はダメですが、人のいない時を狙って撮っておきました。


    水彩画です。主に花と風景、人物を描いています

    モデルは娘らしいです。

    奥さんが仕事している間、無駄に銀ブラ。
    三越新館がオープンしたそうで、無駄に入ってみました。別に見るところもないので、エスカレータで屋上まで、ほぼ直行。おたくなおっさーんには別の世界で、まったく興味なしでした。


    記念に写真だけ(無駄に)


    その後、銀座で唯一おっさーんにも心安らぐスポット、アップルストアにぶーたれる娘を連れて行ってみました。
    なぜかipadを手に店を後にすることになりました



    Posted by Picasa

    2010年9月7日火曜日

    icon

    アイコン画像を作ってるだけで1週間たってしまいました。こういのうはホントに向いてないです
    前は嫁さんに頼んで作ってもらったりしてましたが、最近は嫁さんの方が忙しくて頼めない

    2010年9月2日木曜日

    spモード契約してきました

    会社帰りにドコモショップでspモード契約してきました
    spモードの契約に来る人が結構いるみたいです、普段より混んでました。受付で「spモード」って告げると「Xperiaですか?」って真っ先に聞かれました。Xperiaユーザーが多いんでしょうね。僕のまわりでは見たことないですけど。T-01A使ってる人も見かけませんけどね。それに比べてiPhoneユーザーは相当みかけます