티스토리 뷰



이 자료들은 팁스소프트에서 제공하는 [ 알짜배기 ] 프로그램을 이용하면 더 편리하게 볼수 있습니다.
* 알짜배기 프로그램 받기 - http://www.tipssoft.com/bulletin/tb.php/QnA/8406
* 관리자의 Tipssoft 이야기를 들어보세요 ( 트위터 ID : tipssoft )
* 안드로이드 강좌 목록 - http://www.tipssoft.com/bulletin/tb.php/old_bbs/501
일반적으로 유선을 통해서 전원을 공급받지 못하는 모바일 기기들은 한정된 전원으로 최대한 긴 시간을
유지해야하기 때문에 시스템에 설정된 시간동안 사용자의 입력을 받지 않으면 화면이 꺼지도록 설정되어
있습니다. 이러한 기능은 모바일 기기가 전원을 낭비하지 않도록 도와주는 고마운 기능이지만
DMB, 동영상 시청, 게임 등과 같이 사용자 조작이 없더라도 화면이 꺼지면 안되는 상황에서는 난감한
기능일 것입니다.
그래서 안드로이드 시스템에서는 사용자가 화면이 꺼지지 않도록 방지하는 기능 또한 제공해주고
있습니다. 이번 강좌에서는 사용자가 어플리케이션을 실행하면서 원하는 시점에 화면이 꺼지는 것을
방지하도록 설정하고, 해제하는 방법에 대하여 알아보도록 하겠습니다.
1. 기능 구현하기
화면이 꺼지는 것을 막는 기능은 시스템의 권한이 필요한 일이기때문에 먼저 AndroidManifest.xml
파일에서 아래의 코드를 추가하여 해당 기능을 사용할 수 있는 권한을 부여해주어야 합니다.
<manifest>
// ... 생략 ...
<application>
// ... 생략 ...
</application>

<uses-permission android:name="android.permission.WAKE_LOCK" />

</manifest>
화면이 꺼지는 것을 막기위해서는 전원에 관련된 작업을 관리하는 PowerManager 객체를
시스템서비스로부터 얻은 후에 해당 객체를 이용해서 화면 꺼짐을 제어할 수 있는 WakeLock 객체를
얻어야합니다. 해당 객체를 이용하면 화면이 꺼지지 않도록 설정, 해제할 수 있습니다.
public class NonSleepActivity extends Activity implements OnClickListener
{
// 화면 꺼짐 제어용 변수
WakeLock m_sleep_lock = null;

/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main);

// 컨텍스트의 전원에 관한 시스템 서비스를 얻는다.
PowerManager power = (PowerManager)getSystemService(Context.POWER_SERVICE);
// 화면이 꺼지 않도록 제어할 수 있는 권리를 얻는다.
m_sleep_lock = power.newWakeLock(PowerManager.FULL_WAKE_LOCK, "NonSleepActivity");

// 화면이 꺼지지 않도록 설정한다.
m_sleep_lock.acquire();

Button btn = (Button) findViewById(R.id.set_btn);
// 버튼에 리스너를 등록한다.
btn.setOnClickListener(this);
}

// 버튼을 클릭했을 때 호출되는 메소드
public void onClick(View view)
{
Button btn = (Button) findViewById(R.id.set_btn);

// 화면 제어가 동작중인 경우
if(m_sleep_lock.isHeld()) {
// 화면 제어를 해제한다.
m_sleep_lock.release();

// 버튼의 캡션을 변경한다.
btn.setText("지 않도록 설정");

} else { // 화면 제어가 동작중이지 않은 경우
// 화면이 꺼지지 않도록 설정한다.
m_sleep_lock.acquire();

// 버튼의 캡션을 변경한다.
btn.setText("도록 설정");
}
}

// 액티비티가 Pause 상태가 될 때 호출되는 메소드
protected void onPause()
{
super.onPause();

// 화면 제어가 동작중인 경우
if(m_sleep_lock.isHeld()) {
// 화면 제어를 해제한다.
m_sleep_lock.release();
}
}
}
2. 실행 화면


댓글