2011-01-25 6 views
1

나는 앱을 만들고 있는데 앱의 유휴 시간 제한을 무시하고 싶습니다. 대부분의 게임과 마찬가지로 절대로 타임 아웃하지 않기를 바란다. 아무도 당신이 어떻게하는지 알지 못합니다. 나는 잠시 동안 인터넷을 돌아 다니고 있었고 확실하지 않습니다.android의 유휴 시간 초과 무시

iPhone은 idleTimeout = NO입니다.

슈퍼 쉽습니다. 안드로이드에서 사용할 수있는 것과 같은 모든 글로벌 설정이 있습니까? 안드로이드 개발자 나 내가 보았던 웹 페이지에는 아무 것도 보이지 않습니다.

감사합니다.

두 번째 피기 백 질문이 있습니다. 나는 또한 메모리 누수가있다. 코드는 다음과 같습니다 [코드] package fourguys.testing.IntentTest;

import android.app.Activity; 가져 오기 android.media.MediaPlayer; import android.os.Bundle; import android.os.Handler; import android.os.Message; 가져 오기 android.media.MediaPlayer; 가져 오기 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;

import android.app.Activity; import android.content.Intent; 가져 오기 android.media.MediaPlayer; import android.os.Bundle; import android.view.View; 가져 오기 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

이러한 종류의 사용에는 웨이크 잠금 장치가 필요하지 않습니다. 깨우기 잠금 장치를 잘못 사용하면 사용자의 배터리 수명에 큰 영향을 줄 수 있습니다. "화면 유지"창 플래그를 사용하는 것이 훨씬 간단합니다. – adamp

6

웨이크 잠금 장치를 사용하지 말고 대신 화면이 표시된 상태에서 화면을 켜도록 설정하십시오. 시스템이 세부 사항을 처리합니다.활동 내역 :

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

Sweet, ty. 약간 다른 질문이 있습니다. 내 애플 리케이션 메모리 누수가 발생합니다. 나는 앱을 종료 할 때 정리를 위해 onPause를 사용하고 있습니다. 몇 가지 제안이있었습니다. 앱을 종료하면 테스트 핸드셋이 손상됩니다. 내 캔버스를 제대로 종료하지 않았거나 Mediaplayer의 인스턴스를 제대로 종료하지 않는 것 같습니다. 이견있는 사람? 대신 onFinish()를 사용해야합니까? 많은 사람들이 맹렬히 반대하지 않았지만이 버튼을 눌러야합니다. – user571866

+0

다른 사람들이 찾을 수 있도록 별도의 질문으로 질문해야합니다. :) – adamp