9

iPhone 画面をアクティブのままにしておく必要があるアプリケーションがあります (ユーザーの選択に応じて、アクティブでない場合もあります)。これは、アプリケーションのアイドル タイマーを無効にすることで実現しました。このタイマーは、MPMusicPlayerController を介してメディアの再生を開始するまで問題なく動作します。SDK のバグが原因で、アイドル タイマーが再び有効になり、再び無効にする明らかな方法はありません。

私のアプリの流れは次のとおりです。

  1. アプリの起動
  2. 画面がオンのまま
  3. <...時が経ち...>
  4. オーディオファイルを再生
  5. アイドルタイマーが作動
  6. 画面が消える

バックグラウンドで空のオーディオ ファイルを再生して、電話がディープ スリープ状態にならないようにしていますが、画面のロックも解除したままにしたいと思っています。

誰かがこれの回避策を見つけましたか?

4

4 に答える 4

5

同様の問題があり、それに対する修正が見つかりました。修正もあなたに役立つかもしれません:

定期的に (10 秒ごとに) メソッドを呼び出します。このメソッドは、まず idleTimerDisabled を NO に設定し、次に YES に設定します。

- (void)calledEveryTenSeconds
{
    [UIApplication sharedApplication].idleTimerDisabled = NO;
    [UIApplication sharedApplication].idleTimerDisabled = YES;
}

YES だけに設定するだけでは問題は解決しません。UIApplication によって認識されるには、最初にプロパティを変更する必要があるようです。

私の問題は、ヘッドフォンのリモコンを介して iPod プレーヤーの音楽トラックを切り替えるとすぐに、画面が暗くなり続けることでした。私の推測では、これはあなたが経験しているのと同じ問題です。

于 2010-07-25T22:06:58.147 に答える
1

アイドルタイマーをオフにするだけです。「起きている」必要があるビューコントローラーで私が通常行うことは次のとおりです。

- (void) viewWillAppear:(BOOL)animated
{
    [[UIApplication sharedApplication] setIdleTimerDisabled: YES];
}

- (void) viewWillDisappear: (BOOL) animated
{
    [[UIApplication sharedApplication] setIdleTimerDisabled: NO];
}

これにより、ユーザーが操作を行わないために画面がロックされることがなくなります。

于 2010-02-08T14:02:22.570 に答える
1

この問題の解決策を見つけました。音楽の再生を開始してから約 5 秒後に idleTimer を無効にするメソッドを呼び出します。これはちょっとしたハックですが、回避策です。

[[SoundEngine mainEngine] playMusic];

[self performSelector:@selector(setIdleTimeDisabled) withObject:nil afterDelay:5.0];

- (void) setIdleTimeDisabled {
[UIApplication sharedApplication].idleTimerDisabled = YES;
NSLog(@"Setting idleTimer to TRUE");}
于 2010-06-11T13:55:22.483 に答える