2012年9月18日火曜日

WindowsPhone7 アプリで効果音を出す方法

タイマーアプリで効果音を出す必要があって、結構悩んだのでメモしておきます

まず参考にしたページ

Windows Phone 7 で効果音を鳴らす c#研究室



PlaySoundAction ビヘイビア を使う
一番簡単な方法だと思う、ただし短時間に連続してイベントを起こすと、なんか?詰まってならなくなる。一旦音が鳴らなくなるとアプリを起動しなおさないと音は復帰しない
ダイアル操作時のクリック音をカリカリ鳴らすのには使えない


MediaElement を使う
アプリの画面上のどこかにMediaElementを配置する。基本、配置していないとだめ、コードからMediaElementを実行時に生成しても音は鳴らない
Sourceの指定は割と処理が重いみたい、短時間に連続して鳴らす事ができない。そのうち鳴らなくなる。Source指定しないで同じ音を Play するだけなら連続して鳴らす事が出来る。


MediaElementで何とかなると思いましたが、問題発覚。
PlaySoundActionやMediaElementでPlayするとバックグラウンドで再背中の音楽プレイヤーが止まる。

確かバックグランドMusicに影響を与えてはいけないような (下記リンク6.5のあたり)




じゃあ裏で音楽再生中なら効果音ださない様にすれば良いんじゃない?


ただし Xna を利用すると、そのうち例外が起きます


dispatcherのupdateを定期的にする必要があるらしい。

リンク先を参考にupdate処理を追加する



とりあえず例外で落ちる問題は解決、でも、
どうせXna使うならSoundEffect を使えば、裏で再生中の音楽を止めずに効果音の再生が出来る?



se = Microsoft.Xna.Framework.Audio.SoundEffect.FromStream(Microsoft.Xna.Framework.TitleContainer.OpenStream("click.wav"));

こんな感じでSoundEffectクラスを生成して、Play出来る。音楽再生にも影響なし。すばらしい。
ただし、wmaやmp3は再生できないので長めの効果音にはむいていない


Microsoft.Xna.Framework.Media.Song

を使えばwmaでも再生できるけど、MediaElement使った方がいいかな?



結局、タイマーの操作時の効果音はSoundEffectを使って、長いアラーム音はMediaElementを使うことにしました。





あとは、何故かTrophyだとSoundEffectが鳴ったり鳴らなかったりする問題が残ってます









2012年9月16日日曜日

Windows Phone アプリケーション トライアスロン 参加

現在開催中の Windows Phone アプリケーション トライアスロン に参加すべくアプリを3本開発しました


アプリケーショントライアスロンとはナンゾ?というと詳しくはリンクを見てもらって、簡単にいうと、3つのお題に沿ったアプリを指定期間内に公開してコンテストに応募しよう!って内容です


3つのお題と作ったアプリ

[第1種目]  写真加工アプリケーション


  • 写真を撮影、もしくは読み込む機能を有する
  • 取り込んだ写真に何らかの加工を施す機能を有する
  • 取り込んだ写真を加工し Picture Hub に保存する機能を有する
上記3つの条件を全て満たす必要があります

公開したアプリ


お店のタイムセールとか特売情報をスマホで写真を撮ってクーポン画像として簡単に作成してTwitterやFaceBookに情報発信するという内容です。

もともとは、近所のケーキ屋さんに使ってもらいたくてアイデアとして考えていた事をアプリにしてみました。
”今日はショートケーキを売り切りたいから20%オフにします。”みたいな情報がFacebookとかで見れたら会社帰りに買って帰ったりとかできるのにね。って発想です

本来この様な事はソーシャルネットワークを使えば、大手広告代理店主導で無くても出来る事じゃないかなと思います



[第2種目]  タイトルを更新するアプリケーション

  • アプリケーション自身のタイルの内容を変更する機能を有する
  • セカンダリ タイルを追加作成する機能を有する
  • スケジュール機能を使ってタイルの内容が更新される機能を有する
上記のどれか一つを満たす必要があります


公開したアプリ




スタート画面にならんだタイル4枚に4択クイズが書いてあって、タイルを選択して回答するクイズアプリです。

Wp7のタイルの使い方として面白いアイデアじゃないかな?と思って作りました
表に問題、裏に選択肢が書いてあるので、"タイル裏がえるのマダー"って待つ必要があり、UIの操作の流れをワザと乱す感じが面白いです

アプリ自体は単純なのですが、問題を作るのに結構時間が掛かって疲れました。クイズ研のオンラインクイズとリンクできたら面白いのですが、今回は頑張って子供の参考書を片手に歴史問題を作りました。

歴史は4択クイズとしては作りやすいだろうと思いましたが、間違った答えを考えるのにかなり苦労しました

プログラム的にはタイルを配置する時に、一度におけるタイルが一枚だけという事にアプリ製作の終盤に気が付いて困りましたが、なんとか誤魔化しながら4枚タイルを並べることに成功しました


その他、タイルを書き換えた後にアプリを終了する必要があるのですが、MSのエバンジェリストの高橋さんが紹介していた内部で例外をわざと起こして終了する方法を採用しました

ただ、公開後のクラッシュレポートがやたら多いのが、これが原因なのか?ちょっと怖いです


アプリ中に出てくるキャラクターは嫁さんに描いてもらいました、ツキネコです

[第3種目]  回る・回すアプリケーション

  • 画面上で何かが回る、反転する
  • デバイスを回したり、返したりして何か操作する
  • 画面上を指で回して何か操作する
上記のどれか一つを満たす必要があります

現在申請中でまだ公開されていません

DialTimer



ダイアルをクリクリっと回して時間設定するタイマーです。キッチンタイマー的な感じです。
アイデアは........まぁ平凡かな.........クリクリ回す操作感に拘ってみることにしました

キッチンタイマーアプリは既存のものが結構ありますが、ダイアル式は無いかなと思いました。直観的な操作と視覚的なイメージで時間経過を感じられると思います


ほぼ全ての動作をダイアル操作でできます。ダイアルを回すとカリカリとクリック音が鳴るのが気持ちいいのですが、プログラムは結構苦労しました。いまだに解決していない問題もあります
(IS12Tではちゃんと鳴るのに、Trophyでは稀にしか鳴りません、謎です。)


Silverlightでの音声再生は扱いが難しくて、そのままではマーケットに申請できるアプリがつくれない様に思います。



プログラム的には殆どビヘイビアで処理してます、BlendでUIデザインを考える時間が一番長かった。Blend最高。


タッチ操作の角度の求め方とか、効果音の再生の仕方とか纏めた記事を書こうかなと思ってます。(当たり前すぎていらない?)










Ponca

久しぶりのブログ更新です。

ComponentOne Studio for Windows Phone無償利用プログラム を利用して作ったWindowsPhone7アプリを先月末に公開しました.


Wp7アプリとしては5本目の公開になります


Ponca 
http://www.windowsphone.com/ja-jp/store/app/ponca/106de6d4-a5ea-4a8a-b140-3f5f8a23d899

です。
アプリ名は Ponca ポイントカードをWindowsPhone7で管理しちゃおうと言う趣旨のアプリです。アメリカの先住民族とは何の関係もありません。

これで財布がポイントカードでパツンパツンにならなくても済むぞ!と息巻いて作りましたが、実際にお店でアプリ画面を提示する勇気はまだありません。
うまくすれば、携帯画面からバーコードを読み取ってもらえるかもしれません。

ナイスアイデアで売れるかも?と思いましたが、既に同じようなアプリは海外製であるようです。しかも無料!



メイン画面



アプリに登録したカードを一覧で表示します。この一覧表示にComponentOne StudioのWrapPanelを使っています。WrapPanelはComponentOneに同梱されているライブラリと比べると地味ですが、Wp7に標準でついてても良いと思うぐらいの機能です。
ただで使わせてもらえて超ラッキーです。去年ポストイットみたいなアプリのStickyItを作った時に使えたらもっと楽にアプリが作れたと思います。

カード登録画面


登録できるポイントカード情報は

  1. カードの表面の写真
  2. カードの裏面の写真
  3. バーコード

です。バーコードさえキッチリと読み取れれば裏面の写真なんて不要でしょう。ただ世の中には読み取れないバーコードというものが結構あります

おまけで QRコードも読めます


カード情報画面



お店でカードありますか?って聞かれたら、この画面を見せます。


思うにポイントカードのバーコードって簡単に読み取れるのに、現金に準ずるような扱いもできたりして結構大事な個人情報じゃないかな?
だから扱いには慎重にすべきだと思います。

ちなみに、この写真の番号は出鱈目です






バーコードの読み取りと表示には Zxing barcode Scanning Library を使用しました





2012年3月22日木曜日

子供用にWindowsPhoneを購入

中2の息子用にWindowsPhoneを買いました。
ガラケーの方が良いんじゃないか?とか色々考えたのですが、スマートフォンを選ぶことにしました。
さてスマホにするといっても iPhonr,Andoroid,WindowsPhone とどれにするか?
Androidは子供に持たせるにはちょっと不安を感じるし、iPhoneはゲームとか遊べ過ぎてあんまり持たせたくない(親の立場からすると、もっと勉強しろと言いたい)のでWindowsPhone7 Is12Tを買うことにしました。
実はお父さんの趣味が一番影響が大きいですが、WindowsPhone7って中学生ぐらいに持たせるには、自由過ぎなさが結構良いのでは?と思いました。
AndroidにしてもiPhoneにしても子供に勝手にいろいろされそうですが、Wp7はどうでしょ?アプリも少ないし、まわりに使っている仲間もまずいないだろうしと普段ならマイナス要素が逆にプラスになるような気がしました


購入して早速、子供用にアカウントを取ってzuneに接続しようとしたところ、保護者による設定をしろとの画面が!良いですね!配慮されてる。
Xboxも保護者による管理とかが出来るのかな



親としては子供にはまだまだ目を光らせておきたい。

保護者のLiveIDを入力

保護者の連絡先を入力

保護者による設定
保護者による設定続き 

保護者による設定続き
保護者による設定続き 
マーケットプレースでの大人向けのゲームをブロックしたり、有料コンテンツの購入をブロックしたりと設定できます。

とりあえずほぼブロック設定をしたのですが、設定後にIS12Tでマーケットプレースを覗いてみると"Girl Strip Game"とか見えてます....う~ん





2012年2月5日日曜日

ダイレクトメールだけのアプリ

我が家では嫁さんがSoftbank版iphoneを使っているのに対して、僕はAUのIS12Tを使ってます。IS12Tはつい先日までsmsが送信できないというどうしようもない仕様だったので、ちょっとしたメッセージを送るのにTwitterのDirectMessageを使っていました。
DMだとキャリアやOSを超えて無料で使えるし、iphoneだとほぼリアルタイムでメッセージの通知が届くのでsmsの代用としては十分つかえます。

キャリアのSMSを置き換えるサービスは海外ではかなり普及しているらしい(よく知らないけど)ので、そういったサービスを使うという手もありますが、既に利用中のTwitterを使うのが手っ取り早いのでそうしてました。


さて、最近ようやくIS12TでもSMSの送信が出来るようになりましたが、キャリア間のSMSは有料という問題が残るので相変わらずダイレクトメッセージを使っています
IS12TでのTwitterのダイレクトメッセージの使い勝手はどうかと言うと、今一つかなと思います。
WindowsPhone7ではOSレベルでTwitterやFaceBookに対応していて、ピープルhubからつぶやいたり、MessageHubからFacebookのチャットが出来たりしますが、ダイレクトメッセージは使用できません。DMするにはtwitterアプリを使いますが、ちょっとひと手間あるかんじです


Twitterをあんまり活用できていない(友達少ない)僕としては、Twitterあぷりはあんまり使わないで、Peopleハブからつぶやきを見たり、開発関係のつぶやきを”ついさち”で確認したりしてます。
なのでダイレクトメールだけできるアプリがあれば良いんじゃないのと思って作りました

1月30日夜にAppHubにアプリの申請をしたら、2月2日の朝にはリジェクトの通知が来てました。公開地域をすべてにして申請したのですが、国別の条件にあっていないとの理由でした。
どうやらTwitterが禁止されている国があるので(中国とか)公開対象から外して再申請したら2月4日の昼に審査通過のメールが来ました


Messa_tw


facebookのメッセージだけのアプリMessa_fbを作って、twとfbを統合してMessaハブというアプリを作ろうと計画しましたが、もう別の事に気がイっているのでMessa_twだけになるでしょう。

ちょっとしたやり取りだけの用途なので、過去のメッセージをすべて管理とかはしません。受信するのは直近の20件程度のメッセージだけです

認証画面
初回の起動時やログアウト後は認証ページでアプリの認証をします。Usernameとパスワードを入力して認証するとパスコードが表示されるので、テキストボックスにコードを入力してEnterボタンを押します。
(パスコード入力のところは省略したいのですが、やりかたがわからなかったのです。認証の処理とかサーバーとの通信部分はReactiveOAuthライブラリを使わせてもらいました)


メイン画面
メッセージの受信はプッシュ配信やインターバルで受信とかには対応していないので、まずは更新ボタンを押します。
受信したメッセージに含まれる相手はメイン画面に登録されます。登録された相手を選ぶか、追加ボタンでフォローされているリストから相手を選んでメッセージをやり取りします。
(追加ボタンを押してもフォロワーが1000人以上いるような場合は相手を探すのはまず無理なので諦めてください)



メッセージ画面
メッセージ画面です。標準のMessagingアプリと同じ感じです
ただプッシュ配信されないので、Messageの受信はEmailへの通知とかと併用する事をお勧めします。

プッシュで通知ってどうやって実現するのだろう?












2012年1月14日土曜日

あけましておめでとうございます

いまさらですが、

あけましておめでとうございます

WindowsMobileのアプリ開発等について書いてきたこのブログですが、
去年は、8月末に 日本発のWindowsPhone7 IS12TがAUより発売される等色々ありました。

私も9月に縁があってIS12Tを開発用に頂く事ができました、実はそのとき、”月に1本MarketPlaceにアプリを申請する事”を目標としてしたのですが、実際は達成できませんでした。

9月 GuGUReader
10月 StickyIt!
11月 2011年11月11日...

と公開して

12月 バスナビ

を公開する予定でした。
バスナビアプリは完成したのですが、権利的な問題を含めて思うところがあって、公開する計画は頓挫しています。少しアプリの構成を作り直してから、公開できればなーと思っています。


2012年ですが、改めて目標は”月に1本アプリを申請するぞ!”です。
既に半年分の作りたいアプリのネタはあるので、週末プログラミングの時間とやる気さえあれば達成できるはず?



2012年1月5日木曜日

スキー旅行

年末に奥志賀高原にスキー旅行に行きました。子供たちは初スキーで、お父さんとお母さんは20年ぶりぐらいのスキーでした。

前日に雪が降ってサラサラのパウダースノー、天気もいい塩梅でスキー日和といった感じでした。

カメラはLUMIX DMC-FT1とWindowsPhone携帯電話IS12Tを持っていきました。どちらも防水仕様ですが、LUMIXはスキー手袋をした状態では電源ボタンが押せなくていちいち手袋を外さなければならなかったけど、IS12Tはシャッターボタン長押しで起動するので扱いやすかったです。さすがにツイートするのは手袋外さないとむりでした

というわけで以下IS12Tでの写真



第1リフト?で上がったゲレンデ。初心者向きの緩い傾斜。子供たちはココでスキースクールのレッスンを受けました。

手袋したままでもカメラが使えると言っても、リフトに乗っているときぐらいしか写真を撮る余裕は無いです

カンカン照りでもなく、良い天気でした

世間が本格的に休みに入る前だったので、結構すいてました。初心者には最高の環境だったと思います

樹氷。ホテルの方の先導で上の方のゲレンデまで行きました。初心者でいきなり頂上を目指すのは普通できませんが、先導があったので安心してついて行けました。

いきなり、全てのゲレンデを回れました。これも先導のおかげです。案内だけでなく、スキーのアドバイスまでしてくれました

気持ちえー

お昼ごはん、漆黒の醤油ラーメン

晩御飯 贅沢だ


贅沢すぎる~

デザート

デザートはラウンジにて頂くことにしました。窓の外は吹雪

次の日、良い天気ーと思ったらだんだん天気が崩れてきました。この日は神奈川まで帰らなきゃならないので、昼過ぎに切り上げて帰りました