Windows Phone FMラジオを操作するアプリの注意点

というわけで、またFM Radio Wave Level CheckerがRejectされてしまいました。「音楽を演奏した状態でこのアプリを起動して、端末のボリュームスイッチ(IS12Tの場合は、電源ボタンの下)を押し、表示されたPlayerメニューバーで音楽を止めると、例外発生するよ」と、フィードバックには英語で書いてあり、実際やってみると、あ本当だ!!。

発生したExceptionをじっと見ると、どうやらXna FrameworkのFrameworkDispatcherのUpdate()がコールされていないのが原因と判明。
前に、マイクロフォンからの音を録音する方法をこのブログで紹介した時紹介した、FrameworkDispatcher、どうもアプリでPlayer系を弄る時には、回さないと駄目らしい。

ということで、ページのクラスに、OnNavigatedTo()メソッドを加え、

        private DispatcherTimer loopTimer;
        protected override void OnNavigatedTo(System.Windows.Navigation.NavigationEventArgs e)
        {
            loopTimer = new DispatcherTimer();
            loopTimer.Interval = TimeSpan.FromMilliseconds(50);
            loopTimer.Tick += delegate { try { Microsoft.Xna.Framework.FrameworkDispatcher.Update(); } catch { } };
            loopTimer.Start();

            base.OnNavigatedTo(e);
        }

とコーディングし、OnNavigatedFrom()メソッドで、このloopTimerのStop()メソッドをコールするルーチンを追加しました。

これでやってみると、音楽の演奏を止めた時の例外が発生しなくなったので、これでOKなのだろうなぁ…ということで、また懲りずにMarketplaceに登録。幾らなんでももう大丈夫かな?結果は多分クリスマスイブ辺り。プレゼントになるかどうか、お楽しみ。

教訓:
Microsoft.Xna.Framework.Media.MediaPlayerを弄るアプリを作る場合は、FrameworkDispatcherのUpdate()コールループを入れるべし!!

…SilverlightプロジェクトよりXnaプロジェクトで最初からやったほうが良いかも。

FM Radio Wave Level Checkerに関する過去の投稿は以下のとおり

转载于:https://www.cnblogs.com/iphone6/archive/2011/12/27/2303955.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值