Hatena::ブログ(Diary)

酢ろぐ(ch3cooh.jp) RSSフィード


CH3COOH(酢酸)の実験室
Baseball Japan / ○○時計 for WP7 / for WM
Windows Phone 7 開発 Tips

2012-02-11

アラームを使う

Windows Phone SDK 7.1から追加されました「リマインダー」と「アラーム」についてご紹介します。リマインダーについての説明はこちらをご覧ください。

アラームの場合は、Titleプロパティがサポートされておらず、常に「アラーム」というタイトルになります。テキストコンテンツに情報を設定しておくと表示されるのはリマインダーの挙動と同様です。

アラームは、リマインダーのような特定のページでアプリケーションを起動させるようなことはできませんが、指定した時刻が来るとダイアログが表示されますがこの時鳴らすアラーム音を指定することができます。


f:id:ch3cooh393:20120206023523p:image

続きを読む

2012-02-10

Xcode 4でコマンドライン オプションを設定/取得する

MacOS向けにコマンドラインアプリの開発をしています。コマンドオプションを受け取る形のアプリなのですが、そもそもmain関数で受け取るオプションをどう設定して良いのか判らずデバッグの進みが悪かったです。

調べてもXcode 3.x向けの記事だったりで困ってしまいました。適当に弄ってたらコマンドオプションの設定の変え方が判ったので、ブログに残しておきます。

コマンドライン オプションを設定する

Xcodeのターゲットを変えるボタンをクリックします。

f:id:ch3cooh393:20120209174321p:image

続きを読む

2012-02-09

Windows PhoneでShift-JISやEUC-JPの文字列を扱う

Windows PhoneUTF-8を使用するのが基本であり、日本で一般的に使われているShift-JIS(以下、SJIS)はサポートされていません。

例えば、SJISを使用しているテキストファイルをダウンロードしてきて文字列を表示させるプログラムを書いてみましょう。

using System;
using System.Net;
using System.Windows;
using System.Windows.Navigation;
using Microsoft.Phone.Controls;

namespace NugetTest {
    public partial class MainPage : PhoneApplicationPage {
        // コンストラクター
        public MainPage() {
            InitializeComponent();
        }

        protected override void OnNavigatedTo(NavigationEventArgs e) {
            // WebClientのインスタンスを生成する
            var client = new WebClient();

            // 文字列のダウンロードを開始する
            client.DownloadStringCompleted += client_DownloadStringCompleted;
            client.DownloadStringAsync(new Uri("http://ch3cooh.jp/files/hello-sjis.txt"));
        }

        // 文字列のダウンロードが完了
        void client_DownloadStringCompleted(object sender, DownloadStringCompletedEventArgs e) {
            MessageBox.Show(e.Result);
        }
    }
}

このコードを実行すると、SJIS文字列をそのままメッセージボックスで表示させているので、文字化けしてしまっています。

続きを読む

2012-02-08

結婚しよう!に@を返したら結婚する事になった

f:id:ch3cooh393:20120208031841p:image

ブログにもmixiにも個人的な内容は書いていないので、記憶を辿るしかないんだけど………文才もないので面白いことは書けないけれど端的に書いていこう。

たしか2008年頃にTwitterを初めてしばらく経った後の話で、@jz5に「コードギアス面白いよ」とか教えてもらって7周位アニメを繰り返して見てた時期の話。

続きを読む

Pictures Hubでの「カメラロール」のような文字列だけのボタンを作る(ざっくり版)

機会があれば丁寧に書きますが、今回はざっくりとPictures Hubのようなボタンの作り方を書きたいと思います。

Pictures Hubでの「カメラロール」というのは、これです。

f:id:ch3cooh393:20120208105039p:image

続きを読む

NavigationServiceでルートページまで戻る

iPhoneではTabBarControllerというものがあり、ドリルダウン式に画面遷移させることができます。メモリの許す限りドリルダウンをさせることができ、n階層まで潜った状態からでも現在表示させているタブをタップすると、一気にルートページに戻ることができます。

f:id:ch3cooh393:20120208030232p:image

Windows PhoneでもNavigationServiceと呼ばれる機構が存在しており、画面遷移をスタック的に管理しています。例えば、ページAからページB、ページBからページCと画面遷移をおこなった場合に、ルートのページ(ここではページA)まで戻る方法がWindows Phone OS 7.0では提供されていませんでした。

Windows Phone OS 7.1ではいくつかのメソッドが追加されました。

BackStackプロパティで履歴スタックの数が取得でき、RemoveBackEntryメソッドを実行するごとに履歴スタックに積まれた最新のページを削除することができるようになりました。

これらのメソッドを用いて履歴スタックの数だけ履歴を削除することで、ルートページまで一気にさかのぼることが可能です。

f:id:ch3cooh393:20120208030233p:image

では、最後にコードです。単純にルートページを残して遷移スタックを削除しているだけというのが分かるかと思います。

// 画面遷移の履歴スタック数を取得する
int stackCount = NavigationService.BackStack.Count();
// ルートページのみを残して遷移スタックを削除
for (int i = 0; i < stackCount - 1; i++) {
    NavigationService.RemoveBackEntry();
}
// ルートページへ戻る
NavigationService.GoBack();

最近買った本と買いたい本

iOS/Android/Windows Phoneプログラミング (日経BPパソコンベストムック)
iOS/Android/Windows Phoneプログラミング (日経BPパソコンベストムック)日経ソフトウエア

日経BP社 2012-01-12
売り上げランキング : 49110


Amazonで詳しく見る

Windows Phoneアプリ開発する人なら読んでおかないとダメだよ!」って言われたので慌てて購入。大黒さん、初音さん、id:c-mitsuba が執筆してることも後から聞きました。

あと、Jenkins本はオライリーのが出た時点でセットで購入する予定。今は読む余裕がないので後から買わせて頂きます。

Jenkins実践入門 〜ビルド・テスト・デプロイを自動化する技術 (WEB+DB PRESS plus)
Jenkins実践入門 〜ビルド・テスト・デプロイを自動化する技術 (WEB+DB PRESS plus)佐藤 聖規 和田 貴久 河村 雅人 米沢 弘樹 山岸 啓

技術評論社 2011-11-11
売り上げランキング : 5523


Amazonで詳しく見る

Jenkins
JenkinsJohn Ferguson Smart Sky株式会社 玉川 竜司

オライリージャパン 2012-02-22
売り上げランキング : 4781


Amazonで詳しく見る

id:c-mitsuba と大場さんの本も買いですね。Expression BlendでのWindows Phoneアプリ開発を考慮する上で外せない本になりそうです。

はじめてのWindows Phoneプログラミング
はじめてのWindows Phoneプログラミング泉本 優輝

工学社 2012-02-08
売り上げランキング : 37351


Amazonで詳しく見る

目次からのピックアップになりますが、Expression Blendの知識が欲しい方向けにはこの辺りが面白い内容になっているのではないかと思います。

  • 6. Tips
    • SaveScreenShotAction
    • OpenWebBrowserTaskAction

他にも4章のBingMapsTask辺り、PhotoChooserTask、CameraCaptureTaskがLauncherとChooserでまとまってなくて節単位でバラバラになっている理由が興味がある。。。

2012-02-07

ナビゲーション履歴を無視してアプリケーションを一気に終了させる

いつもTwitterでお世話になっているmisoさんが悩んでられました。

前のページに戻るだけであれば、NavigationService.GoBackメソッドを使えば良いのですが、処理を実行後にアプリケーションを終了させたいというのが分かりました。

Windows Phoneのユーザー操作の一貫性が損なわれてしまいいますので、ルートページでBackキー以外の終了は推奨されていませんが、止む得ない事情でルートページではないページでアプリケーションを終了させる方法が2通り存在します。

続きを読む