簡體   English   中英

覆蓋Android中的空閑超時

[英]Overriding the idle timeout in android

我正在構建一個應用程序,但我想覆蓋該應用程序的空閑超時。 我希望它永遠不會超時,就像大多數游戲一樣。 有誰知道你會怎么做。 我已經拖曳互聯網一段時間了,我不確定。

iPhone為idleTimeout = NO;

超級容易,是否有任何我可以在Android中達到的全局設置? 在android開發人員或我瀏覽過的任何網頁上都看不到任何內容。

萬分感謝!

我還有第二個問題。 我也有內存泄漏。 這是代碼[code]包fourguys.testing.IntentTest;

導入android.app.Activity; 導入android.media.MediaPlayer; 導入android.os.Bundle; 導入android.os.Handler; 導入android.os.Message; 導入android.media.MediaPlayer; 導入android.media.AudioManager; 導入android.content.Context;

公共類CanvasDrawingActivity擴展Activity {

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; 導入android.content.Intent; 導入android.media.MediaPlayer; 導入android.os.Bundle; 導入android.view.View; 導入android.widget.Button; 導入android.view.WindowManager;

公共類IntentTest擴展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,還是我不清理東西而錯過了?

請勿為此使用喚醒鎖,而應將窗口設置為在顯示時保持屏幕打開。 系統將處理細節。 根據您的活動:

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

這是你想要的? 您可以使用PowerManager和喚醒鎖強制屏幕,CPU等保持喚醒狀態:

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

只要確保不要濫用此功能,您就必須擁有可以盡快釋放鎖的代碼。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM