2011-01-25 18 views
1

私はアプリを構築していますが、アプリのアイドルタイムアウトを無効にしたいと思います。ほとんどのゲームと同様にタイムアウトしないようにしたいと思います。誰もあなたがこれをやる方法を知っていますか?私はしばらくの間インターネットを動かしてきましたが、わかりません。アンドロイドのアイドルタイムアウトを無効にする

iPhoneはidleTimeout = NOです。

超簡単、Androidでヒットできるようなグローバル設定はありますか?私はアンドロイドの開発者、または私が見たWebページの何かに何も見ていないよ。

ありがとうございます!

私は2番目のピギーバックの質問があります。私はまた、メモリリークを持っています。ここにコードは [コード] パッケージfourguys.testing.IntentTest;

輸入android.app.Activity。 import android.media.MediaPlayer; import android.os.Bundle; インポートandroid.os.Handler; import android.os.Message; import android.media.MediaPlayer; import android.media.AudioManager; import android.content.Context;

パブリッククラスCanvasDrawingActivityアクティビティ{

private static final int FIRE = 0; 
private int initVolume = 0; 
private Handler handler; 
private MyCanvas v; 
private MediaPlayer mp; 
private AudioManager am; 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 

    am = (AudioManager)this.getSystemService(Context.AUDIO_SERVICE); 

     // this method gets the current volume setting for music 
     initVolume = am.getStreamVolume(AudioManager.STREAM_MUSIC); 


     am.setStreamVolume(AudioManager.STREAM_MUSIC,100,AudioManager.FLAG_REMOVE_SOUND_AND_VIBRATE); 

    mp = MediaPlayer.create(this, R.raw.test); 

    makeHandler(); 
    v =new MyCanvas(this); 
    new Thread(new Runnable(){ 
     @Override 
     public void run() { 
      while(true) 
       handler.sendEmptyMessage(FIRE); 
     }}).start(); 
    setContentView(v); 
    mp.setLooping(true); 
    mp.start(); 
} 
private void makeHandler() 
{ 
    handler = new Handler(){ 

     @Override 
     public void handleMessage(Message msg) { 
      switch(msg.what) 
      { 
      case FIRE: 
      { 
       v.invalidate(); 
       break; 
      } 
      } 
     } 

    }; 
} 
protected void onPause() { 
    super.onPause(); 
    mp.stop(); 
} 
protected void onFinish() { 
    mp.stop(); 
} 

} 

[/コード]

この延び:

[コード] パッケージfourguys.testing.IntentTest。

輸入android.app.Activity。 import android.content.Intent; import android.media.MediaPlayer; import android.os.Bundle; import android.view.View; import android.widget.Button; import android.view.WindowManager;

public class IntentTest extends Activity { /**アクティビティが初めて作成されたときに呼び出されます。 */

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 
    getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON); 

    //reciever intentReceiver = new reciever(); 

    // IntentFilter intentFilter = new IntentFilter("com.app.REC"); 

    //registerReceiver(intentReceiver, intentFilter); 
    Button b = (Button)this.findViewById(R.id.endButton); 
    b.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      Intent i = new Intent(IntentTest.this,CanvasDrawingActivity.class); 
      startActivity(i); 

     } 
    }); 
} 
// the onPause method get called when the app is either being hidden or being closed so this the place where we would want to clean anything up like stoping the media player. 
@Override 
protected void onPause() 
{ 
    super.onPause(); 
} 
} 

[/コード]

私は、アプリケーションを実行し、それが終了時にグラグラ取得します。受話器をロックして、バッテリーを熱くします。再起動するには、バッテリーを物理的に引き出す必要があります。それがなぜ起こったのかについての考えはありますか?それはエミュレータ上で幻想的に動作します。私は代わりにonFinishを使用すべきですか、何かをきれいにしていないと思いますか?

答えて

1

これはあなたが探しているものですか?あなたは、PowerManagerを使用して目を覚まし滞在するなど、CPUの画面を強制的にロックを覚ますことができます。

http://developer.android.com/reference/android/os/PowerManager.html

をちょうどあなたができるだけ早くあなたのようにロックを解除するコードを持っている必要があり、この機能を乱用しないように注意してくださいできる。

+0

ある場合があります。私は基本的に画面がタイムアウトしないようにしたい。アプリは手動で終了するまでフォーカスを維持する必要があります。 – user571866

+0

はい。 SCREEN_BRIGHT_WAKE_LOCKを使用すると、画面を最大輝度で強制的にオンにすることができます。これによりCPUも自動的にオンになりますので、詳細はその記事の表を参照してください。 – Jems

+0

この種の使用には、ウェイクロックは必要ありません。ウェイクロックを誤って使用すると、ユーザーのバッテリ寿命に大幅な影響を与える可能性があります。 "keep screen on"ウィンドウフラグを使用する方がはるかに簡単です。 – adamp

6

ウェイクロックを使用しないでください。代わりに、表示中に画面をオンにするようにウィンドウを設定してください。システムが詳細を処理します。あなたの活動から:

getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON); 
+0

Sweet、ty。私はもう少し異なる質問があります。私のアプリにはメモリリークがあります。私はonPauseを使用して、アプリケーションを終了するときにクリーンアップしています。そうするための提案がいくつかありました。アプリを終了すると、テスト用のハンドセットがクラッシュします。私はキャンバスを正しく終了していない、またはMediaplayerのインスタンスを正しく終了していないと思います。何かご意見は?代わりにonFinish()を使用する必要がありますか?多くの人が丁寧にいいえと言ったが、私はこれをボタンにする必要がある。 – user571866

+0

他の人がそれを見つけることができるように、それを別の質問として尋ねるべきです。 :) – adamp

関連する問題