2

私はを使用してゲームを開発しましたandengine

電源を使用するときに問題が発生しButtonます。ゲームのプレイ中にPOWERを押すButtonと、画面がオフになり、onPause()期待どおりに呼び出されます。しかし、HOMEボタンまたはPOWERボタンをもう一度押して画面をオンにすると、onResume()メソッドが呼び出されますが、がlockscreen表示されます。

そのonResume()方法では、ゲームの音楽を再開します。

そのため、結果としてlockscreen表示されますが、ゲーム音楽はバックグラウンドで再生されます。で音楽を再生したくないlockscreen。これを解決するのを手伝ってください。ありがとう

4

1 に答える 1

2

解決策は次のとおりです。画面のロックが解除されたときのアクティビティハンドル

BroadcastReceiverフィルタリングとアクションを登録することによりIntent.ACTION_SCREEN_ON、次の3つのケースを処理できるようになります。Intent.ACTION_SCREEN_OFFIntent.ACTION_SCREEN_PRESENT

  • Intent.ACTION_SCREEN_OFFPOWERボタンを押して画面が真っ暗になったとき。
  • Intent.ACTION_SCREEN_ONPOWERボタンをもう一度押してロック画面が表示されたとき。
  • Intent.ACTION_SCREEN_PRESENT:locksreenを通過して、ゲームに戻ったとき。

ただし、私の場合(Froyo2.2でGalaxyS GT I9000を使用)、HOMEボタンを処理するときにこれらのアクションは呼び出されません(これは一般的な動作だと思います)。

HOMEPOWERボタンの両方を処理して音楽を一時停止および再開するための簡単で迅速な(ただし、おそらく最善ではない)方法の1つは、onPauseonResumeメソッドを保持し、次のような単純なブールフラグを使用することです。

private boolean mPowerButton = false;

@Override
public void onPause() {
    super.onPause();

    // Pause your music
    Log.d("Game activity", "Music paused");
}

@Override
public void onResume() {
    super.onResume();

    if (!this.mPowerButton) {
        // Resume your music
        Log.d("Game activity", "[HOME button] Music resumed inside onResume");
    }
}

public class receiverScreen extends BroadcastReceiver {

    @Override
    public void onReceive(Context context, Intent intent) {

        if (intent.getAction().equals(Intent.ACTION_SCREEN_ON)) {
            // This is the lockscreen, onResume has been already called at this  
            // step but the mPowerButton boolean prevented the resumption of music
        }

        if (intent.getAction().equals(Intent.ACTION_SCREEN_OFF)) {
            LevelActivity.this.mPowerButton = true;
        }

        if (intent.getAction().equals(Intent.ACTION_USER_PRESENT)) {
            // Resume your music
            Log.d("Game activity", "[POWER button] Music resumed inside ACTION_USER_PRESENT action");
            LevelActivity.this.mPowerButton = false;
        }
    }
}

それが役に立てば幸い!

于 2012-08-31T06:02:11.413 に答える