2017-05-24 9 views
0

LibGDXを使用してAndroid用ゲームを作成しています。私のゲームモードの1つでは、ユーザーは加速度センサーを使ってプレーヤーを移動させますが、ユーザーは画面に触れていないので、画面は暗くなり、スリープ状態になります。Android画面が特定の画面(LibGDX)でスリープ状態にならないようにする

私はアプリ全体の間、スリープ状態になるから画面を保つためのフラグを追加するとクリアすることができます知っている:罰金アプリ目を覚ました作品を保つためにthatを使用し

// Add flags 
getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON); 
// Clear flags 
getWindow().clearFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON). 

が、私はそれをオンにする方法をうまくカントonCreate()メソッドでフラグを追加する必要があるため、特定の画面(加速度計を使用する)に対してのみオンとオフを切り替える必要があります。さもなければ、画面はではありませんは、ユーザーが加速度計を使用するゲームモードにないとき(例えば、メインメニューで...)スリープ状態になります。


基本的には、画面がスリープ状態にならないようにプログラムでオン/オフを切り替えることができます。 ありがとうございました!

注:私はlibGDXを使用しています:私は本当にそれが(それを解放しないことで)特別な許可を必要とし、潜在的に危険なことができるよう


EDITウェイクロックを使用したくない私のさまざまな画面(メニュー、オプション、ゲームなど)のための​​。私が知っている限り、これはすべて1つのアンドロイドの視野に入っています。私は、アプリケーション全体ではなく、私の画面の中の一つだけで、 "keep_Screen_on"をtrueに設定したいと思っています。

+0

特定のViewでスリープモードを防止したい場合は、[link](http://developer.android.com/reference/android/view/View.html#setKeepScreenOn%28boolean%29)を呼び出してください。setKeepScreenOnそのビューで(true)、またはkeepScreenOnプロパティをtrueに設定します。これは、ビューが画面上に表示されている間、画面が消えることを防ぎます。特別な許可は必要ありません。 出典:Witekの答えはhttps://stackoverflow.com/questions/3723634/how-do-i-prevent-an-android-device-from-going-to-sleep-programmatically –

+1

[Force Screen On]の可能な複製(https://stackoverflow.com/questions/2131948/force-screen-on) – user3382203

+0

@MallikarjunM返信いただきありがとうございます。私はLibGDXとゲーム/画面インターフェースを使用しています。これは、アプリ全体が1つのビューにあることを意味します。つまり、keepScreenOnプロパティをtrueに設定すると、特定のゲームモードだけでなく、アプリケーション全体にそのプロパティが設定されます。 –

答えて

1

同じようにインターフェイスを使用できます。

あなたがの参照をしたコアモジュール内

public class Main extends ApplicationAdapter { 

    Service service; 

    public Main(Service service){ 
     this.service=service; 
    } 
} 

をごcoreモジュール

public interface Service { 

    void keepScreenOn(boolean isOn); 
} 

アンドロイドモジュールで、このインタフェースを実装し

public class AndroidLauncher extends AndroidApplication implements Service { 

    View gameView; 

    @Override 
    protected void onCreate (Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 

     gameView=initializeForView(new Main(this), config); 
     setContentView(gameView); 
    } 

    @Override 
    public void keepScreenOn(final boolean isOn) { 

     runOnUiThread(new Runnable() { 
      @Override 
      public void run() { 
       gameView.setKeepScreenOn(isOn); 
      } 
     }); 
    } 
} 

メイン/ ApplicationListenerクラス内部インターフェイスを作成します。 Service、partiに移動するとcular画面を開き、Service interfaceのkeepScreenOn()に電話をかけることができます。

これはテストしていませんが、うまくいくはずです。

+0

ありがとう、私はそれを試して、それは働いた。唯一の問題は、私が実行してUIスレッドで 'view.setKeepScreenOn(ISON)' を実行するために必要なことだった: runOnUiThread(新しいRunnableを(){@Override ます。public void実行(){ view.setKeepScreenOn(ISON) ; } }); –

関連する問題