1

このWP7アプリで解決策のクラッシュを見つけようとしています:

  1. 新しい WP7 アプリを作成します。
  2. ロックされた画面でのアプリの実行を許可:

     // in App()
    PhoneApplicationService.Current.ApplicationIdleDetectionMode = IdleDetectionMode.Disabled;
    
  3. メインページの場所ボタン
  4. CameraCaptureTask を実行するボタン コードを追加します。

    var cameraCapture = new CameraCaptureTask();
    cameraCapture.Completed += cameraCapture_Completed;
    cameraCaptureTask.Show();
    
  5. ハードウェア ボタンで画面をロックします。
  6. 画面ロック解除 - クラッシュ :-(

例外:

    System.Runtime.InteropServices.COMException - "0x8000ffff"

スタックトレース:

    at Microsoft.Phone.Execution.NativeEmInterop.NotifyFullObscurityChanged(Boolean isObscured)
    at Microsoft.Phone.Shell.PhoneApplicationService.OnFullObscurityChanged(Object sender, LockStateChangeEventArgs e)
    at Microsoft.Phone.Shell.Interop.ShellPageManager.ShellPageCallback_OnLockStateChange(Object source, LockStateChangeEventArgs e)
    at Microsoft.Phone.Shell.Interop.ShellPageCallback.FireOnLockStateChange(Boolean fLocked)

実際のハードウェア (Samsung Omnia W) ではクラッシュします - エミュレーターはありません。私はこれを EmailComposeTask/CameraCaptureTask/PhotoChooserTask でテストしました - 常にクラッシュします。

編集:

アプリをクラッシュする手順:

  1. プロジェクト テンプレート: Windows Phone アプリケーション
  2. 対象の Windows Phone OS バージョン: Windows Phone OS 7.1

App.xaml.cs - App コンストラクターの最後に 1 行だけ追加します。

    [...]
    public App()
    {
        UnhandledException += Application_UnhandledException;
        InitializeComponent();
        InitializePhoneApplication();

        if (System.Diagnostics.Debugger.IsAttached)
        {
            Application.Current.Host.Settings.EnableFrameRateCounter = true;
            PhoneApplicationService.Current.UserIdleDetectionMode = IdleDetectionMode.Disabled;
        }

        PhoneApplicationService.Current.ApplicationIdleDetectionMode = IdleDetectionMode.Disabled;
    }
    [...]

MainPage.xaml、追加されたボタン:

    <Button Content="Button" HorizontalAlignment="Left" Margin="361,262,0,0" VerticalAlignment="Top" Click="Button_Click_1"/>

MainPage.xaml.cs - 追加されたメソッド:

    private void Button_Click_1(object sender, RoutedEventArgs e)
    {
        PhotoChooserTask objPhotoChooser = new PhotoChooserTask();
        objPhotoChooser.Completed += objPhotoChooser_Completed;
        objPhotoChooser.Show();
    }

    private void objPhotoChooser_Completed(object sender, PhotoResult e)
    {
    }

電話を接続し、プログラムをコンパイルして電話に展開し、電話を切断します (PhotoChooserTask は Zune では機能しません)。デバイスでプログラムを実行し、「ボタン」をクリックし、ハードウェア ボタンで画面をロックし、ロックを解除します - クラッシュしてプログラムを閉じます。これをデバッグするには、Zune の代わりに WPConnect を使用できます。

4

1 に答える 1

0

これを WP8 デバイス (Lumia 820 Developer Edition) でテストしたところ、問題なく動作しました。私が見ることができる唯一の問題は、デバイスのロックを解除すると、ランチャー画面ではなくアプリ画面に戻ることです。この問題は、WP7 と WP8 でのランチャーの低レベル実装における異なるアプローチに関連していると思います。

于 2013-01-14T21:14:42.123 に答える