書くことないです。

ayamadoriが独り言を呟く日記。

PiClipをNokia Asha Platform端末に特化してみるテスト。その1。

f:id:ayamadori:20130525163507p:plain
今月に入って、Nokia Asha 501が発表された
前にSeries 40 full touch端末について『これで完成形か』とか書いてたけど、正直すまんかった。1年経ってさらにここまで変わるとは思わなかった。
501が発売されたら当然買うけど、さしあたり開発環境で遊んでみたので覚書。
前に書いてた記事

NokiaのSeries 40 full touch端末の開発環境について。
http://ayamadori.hatenablog.com/entry/20120701/1341156403
PiClipをSeries 40 full touch端末に特化してみるテスト。その1?
http://ayamadori.hatenablog.com/entry/20120826/1345994936
Nokia Asha 305 を買いました。
http://ayamadori.hatenablog.com/entry/20120909/1347199378

との比較がメインになりそう。

続きを読む

たじみ陶器まつりに行ってきました。 #tajimiyakumo

f:id:ayamadori:20130415000919j:plain
買う予定なかったのに、マグカップ買っちゃった。。。
(普通に使ってます)

たじみ陶器まつり
http://www.tajimi-pr.jp/201341314info/toukimatsuri%20info.html

いろんな陶器が見られて楽しかった。いくら半額といわれても、さすがに7ケタの器は買えないけれど(笑)

とはいえ、1番の目的は写真にある『やくならマグカップも(以下、やくも)』の豆本。

参加イベントレポート(第61回 たじみ陶器まつり)
http://yakumo-tajimi.com/event.html

中高生は無料、それ以上は1冊100円(それ以下は配布しない?)ということで、Vol.1,2で200円払って買ってきた。よくある同人誌だと、豆本は宣伝用に無料配布してメインの同人誌を買わせるパターンが多いと思うのだけど、逆の構図になっているのがやくもらしい。これ、ちゃんとお金払って買った大人が(自分を含め)どの程度いたのか興味がある。
あ、ちなみに内容はちゃんと面白かったです。(詳しくは書かないけど)

2番目の目的は陶器まつり限定のやくもまんが(パンフレット)。
これ、この前の週に行われた全国萌えキャラフェスティバルで配布された限定まんがとリンクしているようで、そちらを入手できなかった*1自分としてはよく分からない部分もあった。つくづく残念。

3つ目はやくもVol.5。まあこれは多治見じゃなくても入手できるけれど、少なくとも日本橋では無理だった(品切れか発見できてないか)ので、無事に手に入ってよかった。
相変わらず、すごく自分好みのお話。

*1:休日出勤だった。。。orz

CompassとLocationの話。(IS12T限定?)

トライアスロンのテーマがセンサを利用したアプリということで、簡易ナビゲーションアプリを作ってみたいと思ったのだけど、エミュレータではコンパスが動作しないので、IS12Tを買ってみた。
一応実機でちゃんと動いているように見えるのだけど、一部よく分からない挙動をしている。

コンパス

どうやら

SensorReading.HeadingAccuracy

が常に10を返すようになってる様子。
何度キャリブレーションしても変化ないし、そもそも精度が悪いときにアプリ内でキャリブレーション指示画面を表示させるようにしているのに、それがまったく表示されない。
おそらくIS12Tと固有の問題(不具合と言っても良い?)なんだろう。

ロケーション

ソース(GPS・基地局・WiFiスポットなど)を意識せずに位置情報を取得できるのだけど、
どうもGPSはスタンドアロン動作できない様子。(つまりAssisted GPSのみ?)
IS12TをオフラインモードかつLocationオンに設定してテストしてみると、常に

GeoPositionStatus.NoData

が返ってくる。
完全なオフラインナビゲーションがしたいなーと思って作り始めたのだけど、これが分かった時点で大分モチベーションが下がってしまい。
とりあえず完成したのがNAVI2HOME。開発当初は音声認識・音声ガイダンスとかを予定してたんだけど全部ボツで。

WebBrowserコントロールがちらつくという話。

もいっこWebBrowserコントロールのネタがあったんだった。
NavigateToString()でhtmlソースを表示するとき、WebBrowserコントロールの背景色が白色固定でかっこ悪い。
なので、デバイスの背景色と一致するように、こんな感じでソースに手を入れてる。

// Get color resource and convert ARGB to RGB (#AARRGGBB -> #RRGGBB)
string backgroundColor = (App.Current.Resources["PhoneBackgroundBrush"] as SolidColorBrush).Color.ToString().Remove(1,2);
string textColor = (App.Current.Resources["PhoneForegroundBrush"] as SolidColorBrush).Color.ToString().Remove(1, 2);
string linkColor = (App.Current.Resources["PhoneAccentBrush"] as SolidColorBrush).Color.ToString().Remove(1, 2);

// from http://stackoverflow.com/questions/9124166/how-to-make-webbrowser-control-with-black-background-in-windows-phone-7-1
string header = "<html><head><meta name=\"viewport\" content=\"width=device-width, user-scalable=0\"/><style type=\"text/css\">body{background-color: " + backgroundColor
 + "; color: " + textColor + "}a:link{color: " + linkColor + "}</style></head><body>";
string footer = "</body></html>";
source = header + source + footer;

これで一応望み通りに表示はできるのだけど、表示される直前に一瞬コントロール部分が真っ白になる現象が起こってる。
検索してみると他にも悩んでる人はいるようで、

Is it possible to change the background color of the WebBrowser control before loading content?
http://stackoverflow.com/questions/5602132/is-it-possible-to-change-the-background-color-of-the-webbrowser-control-before-l


Preventing white background before WebBrowser control's rerendering
http://social.msdn.microsoft.com/Forums/en-US/wpdevelop/thread/d17c9b92-28e6-4271-961f-c237ceb80f46/

参考にしながらNavigatingイベントやLoadCompletedイベントを拾ってOpacityやIsVisibleを変化させたりしてみたのだけど、解決しない。
ま、実用上そこまで困るものでもないんだけど、どうにも気持ち悪い。
最悪、ページ遷移アニメーションとかでごまかすしかないのかなー。

WebBrowserコントロールの日本語表示について。

WebBrowser クラス
http://msdn.microsoft.com/ja-jp/library/microsoft.phone.controls.webbrowser(v=vs.92).aspx

Windows Phone 7では、NavigateToString()*1で日本語を表示させようとすると文字化けするらしい。

[WP7] WebBrowser コントロール (WP7.0)
http://shinichiaoyagi.blogspot.jp/2011/06/wp7-webbrowser-wp70.html

WebBrowserコントロールでローカルのコンテンツを表示する
http://ch3cooh.hatenablog.jp/entry/20111114/1321239292

ここにあるように、文字実体参照にして渡せば解決するので特に問題はないのだけど、
Windows Phone 8のWebBrowserコントロールは少し挙動が異なるかもしれないのでメモ。

文字列『だけ』を渡した場合に文字化けするのはWP7と同じだけど、htmlヘッダで囲むと文字化けしないっぽい。

ほげほげ[文字化け] → <html>ほげほげ</html>[正しく表示]

ブラウザがIE9→IE10に変わったのが影響しているのかな?
WP7では特に調査してないのでよく分からん。>やれよ

*1:レンダリングする HTML 文字列を Web ブラウザーに挿入します。』

livedoor Readerのクッキー処理とCookieContainer

CookieContainer クラス (System.Net)
http://msdn.microsoft.com/ja-jp/library/windowsphone/develop/system.net.cookiecontainer(v=vs.105).aspx

livedoor ReaderのWeb APIにアクセスするには、Cookieにreader_sidをセットする必要がある。

LivedoorReaderのセッションの作り方
http://d.hatena.ne.jp/thrakt/20091225/1261715185

ログイン処理をしてみると、レスポンスヘッダのSet-Cookieでは実際にそう指示されているのだけど、なぜかreader_sidだけがCookieContainerにセットされない。*1
おそらくCookieContainerのドメイン周りの処理が影響していると思われるのだけど、正直よく分からん。ネットワーク周りの知識なさすぎ>自分

Set-CookieとCookieContainer
http://agloo.blog92.fc2.com/blog-entry-40.html

対策としては、これだけを手動でCookieにセットしてやれば良い。*2

CookieContainer.SetCookies(new Uri("http://reader.livedoor.com"), "reader_sid=" + apiKey);

結論だけ見たらとても簡単な話なのに、なんであんなに解決に時間がかかったんだろうねまったくorz

*1:他のパラメータはセットされている様子

*2:当然、この前にレスポンスヘッダからreader_sidを手動で取ってくる必要がある

Windows Phone トライアスロン2013に参加してみた。

Windows Phone アプリケーション トライアスロン 2013
http://msdn.microsoft.com/ja-jp/jj884074.aspx

ちょうどDell XPS 12を買ってWP8の開発環境が構築できるようになったし*1、前からWindows Phone開発はやってみたいなあと思っていたので、参加するのにちょうど良いタイミングだった。
作ったのは以下の3つ。

  • Feedladder

http://www.windowsphone.com/s?appid=8e3f11ec-9950-4ddc-8586-bcb8d9347a50
livedoor Readerの非公式クライアント。

  • Templatish

http://www.windowsphone.com/s?appid=7dd73196-25e8-482b-83b6-aae443ca7217
テンプレート(製図とかでつかうアレ)もどき。

  • NAVI2HOME

http://www.windowsphone.com/s?appid=1c3e5e43-b7de-45d1-8aea-e79aa093fbeb
簡易ナビアプリ。

Windows Phone開発だけでなくVisual StudioC#も初めて*2というところからの参加だったので、いろいろ手探り、というかサンプルそのままといったところもあってちょっと恥ずかしくはある。
特に下2つはトライアスロンを完走するためにでっち上げたようなものなので、実用性も皆無じゃないかなw
Feedladderだけは多少やる気があって、今もアップデート申請中。

締切が決まっていたのでだいぶん時間を取られてしまったけれど、サンプルやテンプレートがしっかり用意されていて、それらを眺める(そしてちょっといじる)だけでもいろいろと勉強になった。

これから、作業中に気づいたところをゆるゆるとメモしていこうと思う。
あとはソースを整理して公開したいなあ。

*1:開発環境の構築にWindows 8 Proが必要だと知って、慌てて仕様変更をお願いしましたが

*2:そもそもプログラミング自体ほぼ初心者、という話でもある