locked
【WP7】Backボタンで長押し RRS feed

  • 質問

  • お世話になります。

    XNAのみでWP7アプリを作成したのですが、
    エミュレータ上で、Backボタンを長押しすると、
    画面が小さくなり、アプリタイトルと共に表示されます。
    その小さくなった画面が潰れているので、
    Backボタン長押しがどういう状態なのか調べておりましたら、

    http://daiwp.blogspot.com/2011/07/windows-phone_17.html
    に、

    「(省略)Windows PhoneのSilverlightアプリケーションは基本的に何もしなければ履歴としてメモリ上に残ります。その証拠にバックボタンを長押しすると、アプリケーションの履歴が表示されて自分のアプリケーションが表示されていることが分かるかと思います。」

    とあるのを見つけまして、タスク一覧表示のような状態らしいことがわかりました。

    一覧から選択したり、更にBackボタンを押下すると、以前、別の質問でご教授頂いて追加した擬似マルチタスク処理のおかげで、
    アプリに復帰はできるようにはなったのですが、
    潰れた画面がみっともないので、どうにかして対策を施したく、調べてみましたところ、
    この状態になっているときの描画処理自体は、こちらのアプリの制御下にないようなので、
    描画ルーチン自体では対応がとれないような感じでした。

    OnExiting前後のタイミング(もしくは別のイベントハンドラ)で、一覧表示のための画像を作成する必要があるのかな???
    など考えましたが、回避策を探しきれませんでした。

    因みに潰れた画像の症状は、800X480の解像度が、
    実際には430X260程度の解像度で縮小表示されているため、
    言葉は変ですが、フレームバッファのダンプを解像度を変えて表示したといいますか、
    ピクセルの改行位置がずれている様な表示になっております。
    Silverlightではないので、描画は殆どスプライト表示されており、解像度が変わればはみ出るだけのような気もするのですが。
    でも逆にInternetExplorerは文字なども正常に縮小表示されています。

    もしくはこの現象はエミュレータだけの問題なのでしょうか。

    環境は
    Windows7-64bit最新アップデート
    Microsoft Visual Studio 2010 Express for Windows Phone
    Version WPDTRTM Rel-40219.209.00
    となっています。

    どなたか、ご教授願えませんでしょうか。
    よろしくお願いいたします。

    2012年4月10日 20:56

回答

  • お世話になります。

    実機デバッグ可能な状態に復旧したので、確認してみましたが、やはり実機では発生いたしません。
    ということで、エミュレータのバグもしくは、エミュレータとこのPCとの相性問題ということで、Microsoft社様で解決すべき問題かなと思いますので、
    この問題は解決と致します。

    ありがとうございました。
    2012年7月10日 19:59

すべての返信

  • ほかのタスク(たとえばTask Switcher)に切り替わった際にスクリーンショットが取られるようですが、
    このスクリーンショットが撮られる前に特にイベント等は発生していないようですので、
    開発者がこのスクリーンショットをコントロールすることはおそらくできません。
    2012年4月13日 8:57
  • お世話になります。
    Shinobuさん、早速のご回答ありがとうございます。

    そうなのですか。
    通常の画面は正常に表示できているように見え、
    特にTaskSwitcherのキャプチャ以外では問題も発生していないと思われるのですが。

    これは、結構厄介な症状なのかもしれませんね。

    他にもいろいろと作成しているプロジェクトでも検証してみましたが、
    このアプリ特有の現象のようです。
    Backボタンを押した瞬間に、特に気に留めていなかったのですが、
    一瞬画面が乱れているようです。
    そのタイミングでスクリーンショットをキャプチャしている模様です。
    特に何か処理した記憶も無かったのですが、
    もう少し調査してみます。

    有益な情報ありがとうございました。
    2012年4月13日 11:47
  • お世話になります。

    >他にもいろいろと作成しているプロジェクトでも検証してみましたが、
    このアプリ特有の現象のようです。

    他のXNAアプリでも発生しておりました・・。
    ランドスケープを許可し、エミュレーターを横位置にしているときに、
    発生するようです。

    AppHubなどに挙がってるサンプルなどでも発生するようです。
    エミュレーターの障害のような気がしないでもないですが、
    それなら、他の方も発生しそうだし・・・。

    OS7.0で作成しております。
    2012年4月15日 11:51
  • 再現性があり、それが問題であれば、サポートに問い合わせてみる方法もあるかと思います。
    ここのアプリケーション開発に関するフォーラムの範疇としての回答は、
    「少なくともアプリケーションの実装レベルでは対応は難しい」ということです。

    >もしくはこの現象はエミュレータだけの問題なのでしょうか。
    まずはご自身で実機で確かめていただくことがよいのではないでしょうか?

    なお、開発環境については過去の問題が最新の環境で治っている場合もあります。
    ですのでできる限り最新の環境を使うことをお勧めします。
    2012年4月15日 14:48
  • Shinobu様、度々お世話になります。
    早速のご回答ありがとうございます。

    グラフィックボード&ドライバーとエミュレーターのレンダリングルーチンの相性って線もあるかな。

    >再現性があり、それが問題であれば、サポートに問い合わせてみる方法もあるかと思います。

    なるほど。そうしてみます。


    >>もしくはこの現象はエミュレータだけの問題なのでしょうか。
    >まずはご自身で実機で確かめていただくことがよいのではないでしょうか?

    そうなんですよね。
    ただ、現在事情がありまして、実機でテストできない状況にあり、
    知り合いにはWPユーザーがいないこともあって・・。

    大変参考になりました。
    ありがとうございました。
    2012年4月19日 17:01
  • Windows Phone SDK は 最新版が7.1.1になっております。まずはそちらの環境で試されることをお勧めします。
    その際条件として、3GBのRAMが必要、Windows Phone Emulator には、Windows Display Driver Model (WDDM) 1.1 ドライバーと DDI 10 以降のバージョンを使用する Microsoft DirectX® 10 または DirectX 11 グラフィックス カードが必要といった条件がございます。
    上記条件以外での動作は保証していませんのでご注意ください。

    仮に、上記の正しい環境で、エミュレーター上のタスクスイッチ画面で本来の画面と差異があったとしても、
    エミュレーターにおけるタスクスイッチ画面で画面を正確に再現することを仕様では保証しているわけではありません。
    また、プログラム側からもタスクスイッチ画面でのアプリ画面をコントロールするような機能は提供していないことを改めてご理解ください。

    上記を踏まえたうえで、サポートに問い合わせる際に、どういった用件で問い合わせるのかを確認していただいたうえで必要があればご利用いただければと思います。
    (個人的には、今回の件でサポートに問い合わせる項目はあまりないのかな?と感じています)

    ご参考までに。

    >知り合いにはWPユーザーがいないこともあって・・。
    どこかにXapファイルを置いていただければ確認することくらいはできるかと思います。
    (その前に、具体的ン問題となっている画面のスクリーンショットは必要かと思いますが)
    2012年4月19日 17:43
  • お世話になります。

    Shinobu
    早速のご回答ありがとうございます。

    Windows Phone SDK は 7.1.1にアップデートしておりますが、発生しております。
    DellのノートPCで、
    Windows7 Pro 64bit
    ATI MobilityRadeon HD4570
    ドライバーモデルはWDDM1.1
    DirectXはver11
    RAMは8GB
    と、見た目のスペック上では問題ない仕様になっているかと思います。

    >どこかにXapファイルを置いていただければ確認することくらいはできるかと思います。

    マーケットに登録してあるアプリでよければ、試用版をサポートしておりますので、
    お迷惑かと思いますが、ご確認いただけますでしょうか。

    アプリへのディープリンク
    http://windowsphone.com/s?appid=de6f9e46-aeb6-4ea0-b03d-df7331483ad9

    >(その前に、具体的ン問題となっている画面のスクリーンショットは必要かと思いますが)

    正常な表示(ゲーム中)の画像例
    http://7.yproj.com/HitnStay/scrnshot2.png

    上記の状態から長押ししたタスクスイッチ画面の画像例
    http://7.yproj.com/HitnStay/scrnshot.png

    となっております。
    因みに、当方の環境では、ラーニングに上がっておりますSkinningSampleなど、
    横向きをサポートしたXNAアプリではどれでも発生いたしているようです。

    お手数ですが、以上よろしくお願い致します。
    2012年4月21日 18:53
  • 追記。
    横向きのみサポートしているアプリでは、エミュレーターが横向きでも縦向きでも発生しますが、
    縦横両方をサポートしたアプリでは、エミュレーターを横向きにしないと発生しないようです。
    内部的に横向き表示のロジックが走る必要があるのかと思われます。(私の環境では)
    2012年4月21日 19:21
  • お世話になります。

    実機デバッグ可能な状態に復旧したので、確認してみましたが、やはり実機では発生いたしません。
    ということで、エミュレータのバグもしくは、エミュレータとこのPCとの相性問題ということで、Microsoft社様で解決すべき問題かなと思いますので、
    この問題は解決と致します。

    ありがとうございました。
    2012年7月10日 19:59