六曜カレンダーRokuCalendarを更新 Froyoに対応しました

Androidアプリ「RokuCalendar」、六曜を表示できるカレンダーアプリ、を更新しました。
Androidの標準予定表、つまりはGoogleカレンダーと同期しています。というかAPIでデータをとっています。

今回の修正は、Android 2.2(Froyo)への対応です。恥ずかしながら最新版OS2.2で動作確認取っていなかったんですが、それが原因のバグがあることに、知人がGalaxy S購入してインストするまで気づきませんでした。

標準のスケジュールを取得するためのAPI(コンテントプロバイダ)は正式には公開されておらず、URIは例えばイベントを取得する場合、Android 2.1以前では

 content://calendar/events

のようになりますが、Froyoの場合は

 content://com.android.calendar/events

となるそうです。

OSのバージョンを取得するには

 Build.VERSION.SDK(またはSDK_INT)

を調べればいいと思います。

参考ページ
http://www.andreabaccega.com/blog/2010/08/09/add-events-on-google-calendar-on-android-froyo/

Microsoft AJAX Libraryでページロード時に実行される関数を登録する

今さらながら重要なポイントなので覚え書き。

Microsoft AJAX Libraryで、ページが全てロード完了後に実行されるハンドラを登録するには
Sys.Application.add_load関数を用いる。

Sys.Application.add_load(function(){
 ...
});

既定の関数名としてpageLoadを用いると、より簡単に同じ動作を得ることも出来る。

function pageLoad() {
 ...
}

この場合注意が必要なのは、pageLoadとして定義できるのは一関数だけなので、同名の関数定義が複数存在すると、後からロードされたもので上書きされてしまう点かな。ユーザーコントロールなど、複数のスクリプトファイルを用いている場合は要注意。前者の方法のがいいと思う。

AppBrainにやっと登録された

Android本体へのリモートインストールにも対応していて便利なレビューサイト、AppBrainを愛用しているんですが、なぜかRokuCalendarがローンチから何日たっても現れませんでした。
メールで問い合わせしたところ、単にクローラのエラーだったようで、今はちゃんと見られるようになりました。

六曜を表示するAndroidカレンダー・アプリを公開しました

間ではブログ更新する気力が全然なくて放置してましたが、
androidアプリを一つ公開しました。


android標準の予定と六曜を同時に確認できるカレンダー、RokuCalendarです。(インストール)
個人的に六曜(特に友引)を常に意識しなければならない仕事に就いていて、大分前に(HT-03Aを使っていた頃)六曜を確認できるアプリを自分用に作って使っていたのですが、急に思い立ってあちこち手入れをし、とりあえず完成させました。


特徴は、

  • 一ヶ月表示のみ。前後の月への移動は左右にフリックするだけ。
  • 各日にちのセル内に出来るだけ沢山予定を表示するようにしました。HVGA機種で4件程度、WVGA機種で5行程度。
  • 設定で「5行表示」を選択すると、本当は最大で6行ないと一ヶ月を表示できないのですが、6行になってしまった月は、カレンダーの頭の部分に月の最後の週を表示することで、無理矢理5行表示にできます。こうすると、一日あたりHVGA機種で5件、WVGA機種なら6件の予定を確認できるようになります。
  • 表示できない予定がある場合は、その日のセルの右下に小さな赤い逆三角が表示されます。
  • 標準で六曜表示、特に友引は色付で表示してます。設定で変更可。
  • 一日のセルをタッチすると、その日の予定をダイアログで表示します。さらに予定にタッチするとandroid標準のカレンダーの一日表示を使って確認できます。もちろんそこから編集もできます。
  • 予定の新規作成もできます(標準カレンダーの新規ダイアログが開きます)。
  • 自分のGoogleアカウントに2つ以上カレンダーがある場合はメニューから表示するカレンダーを(複数)選択できます。
  • 予定を追加したりして、Googleカレンダーと本体が同期中だったりすると、予定がすぐには取得できなくてプログレス表示になります。
  • また六曜の取得は、1年ごとに最初にその年のカレンダーを表示したときに端末内で計算して行っているので多少時間がかかります。その間は六曜が表示されません。

こちらから各種サイトを通ってインストールできます。

HttpWebRequest使用例

snaptic.comAPIがRESTで公開されているので、ASP.NETでアクセスする方法。
POST動作について、ASP.NETのHttpWebRequestを使ってサービスにパラメータを投げる方法を http://developer.yahoo.com/dotnet/howto-rest_cs.html#post から抜粋。

// We use the HttpUtility class from the System.Web namespace  
using System.Web;  
  
Uri address = new Uri("http://api.search.yahoo.com/ContentAnalysisService/V1/termExtraction");  
  
// Create the web request  
HttpWebRequest request = WebRequest.Create(address) as HttpWebRequest;  
  
// Set type to POST  
request.Method = "POST";  
request.ContentType = "application/x-www-form-urlencoded";  
  
// Create the data we want to send  
string appId = "YahooDemo";  
string context = "Italian sculptors and painters of the renaissance"  
                    + "favored the Virgin Mary for inspiration";  
string query = "madonna";  
  
StringBuilder data = new StringBuilder();  
data.Append("appid=" + HttpUtility.UrlEncode(appId));  
data.Append("&context=" + HttpUtility.UrlEncode(context));  
data.Append("&query=" + HttpUtility.UrlEncode(query));  
  
// Create a byte array of the data we want to send  
byte[] byteData = UTF8Encoding.UTF8.GetBytes(data.ToString());  
  
// Set the content length in the request headers  
request.ContentLength = byteData.Length;  
  
// Write data  
using (Stream postStream = request.GetRequestStream())  
{  
    postStream.Write(byteData, 0, byteData.Length);  
}  
  
// Get response  
using (HttpWebResponse response = request.GetResponse() as HttpWebResponse)  
{  
    // Get the response stream  
    StreamReader reader = new StreamReader(response.GetResponseStream());  
  
    // Console application output  
    Console.WriteLine(reader.ReadToEnd());  
}  

twilogのまとめって

Twilog使って、覚え書き用に主だったツイートをブログに張ってきたけど、あんまり建設的でないし、意味ないかも。開発のメモ専用にして、ツイートはTwilog見れば十分。
という運用に今後することにした。

5月8日のつぶやきから