このWP7アプリで解決策のクラッシュを見つけようとしています:
- 新しい WP7 アプリを作成します。
ロックされた画面でのアプリの実行を許可:
// in App() PhoneApplicationService.Current.ApplicationIdleDetectionMode = IdleDetectionMode.Disabled;
- メインページの場所ボタン
CameraCaptureTask を実行するボタン コードを追加します。
var cameraCapture = new CameraCaptureTask(); cameraCapture.Completed += cameraCapture_Completed; cameraCaptureTask.Show();
- ハードウェア ボタンで画面をロックします。
- 画面ロック解除 - クラッシュ :-(
例外:
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 でテストしました - 常にクラッシュします。
編集:
アプリをクラッシュする手順:
- プロジェクト テンプレート: Windows Phone アプリケーション
- 対象の 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 を使用できます。