달력

4

« 2025/4 »

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
2012. 5. 26. 12:41

안드로이드 - 타이머 2 안드로이드 이야기2012. 5. 26. 12:41

728x90
반응형

안드로이드 타이머 적용 방법


안드로이드에서 타이머를 이용한다면 다양한 서비스를 구현할 수 있습니다.

간단한 예를 들자면, 알람 소리를 일정시간 지난후 자동으로 종료하게 만드는 경우 필요한 기능이죠^^

아래 코드를 참고하시면 손쉽게 구현 및 응용이 가능하시리라 믿어 의심치 않습니다.


public class SmsProcess extends Service {
static final String TAG = "ANDROES";

final Handler mHandler = new Handler();
boolean stopTask = true;
private static final int TIMER_PERIOD = 1 * 1000; // 1 sec
private static final int MAXCOUNT = 10;
private int mCounter;

public void onStart(Intent intent, int startId) {
processAlarm();
}

@Override
public int onStartCommand(Intent intent, int flags, int startId) {
processAlarm();
return START_NOT_STICKY;
}

private void processAlarm() {
// TODO Auto-generated method stub

// Set volume
mAudioManager = (AudioManager) getSystemService(AUDIO_SERVICE);
int maxVolume = mAudioManager.getStreamMaxVolume(AudioManager.STREAM_ALARM);
// mAudioManager.setRingerMode(AudioManager.RINGER_MODE_SILENT); // 무음
// mAudioManager.setRingerMode(AudioManager.RINGER_MODE_VIBRATE); // 진동
mAudioManager.setStreamVolume(AudioManager.STREAM_ALARM, maxVolume, 0);
for(int i=1; i<=maxVolume; i++){
mAudioManager.adjustStreamVolume(AudioManager.STREAM_RING, AudioManager.ADJUST_RAISE, 0);
}

// 벨소리 울리게 하기
RingtoneManager ringtoneManager = new RingtoneManager(this);
alarmRingtone = ringtoneManager.getRingtone(this, RingtoneManager.getDefaultUri(RingtoneManager.TYPE_ALARM));
alarmRingtone.play();

stopTask = false;
startTimer();

// Service Stop
this.stopSelf();
}

private void startTimer() {
// TODO Auto-generated method stub
Logger.i("ANDROES", "start startAlarm() : mCounter: " + mCounter);
final Runnable r = new Runnable() {
@Override
public void run() {
// 주기적으로 반복될 내용
if (++mCounter >= MAXCOUNT) {
stopTimer();
alarmRingtone.stop();
}
Logger.i("ANDROES", "mCounter : " + mCounter);
if (!stopTask) mHandler.postDelayed(this, TIMER_PERIOD);
}
};
if (!stopTask) mHandler.postDelayed(r, TIMER_PERIOD);
}

private void stopTimer() {
// TODO Auto-generated method stub
Logger.i("ANDROES", "start stopAlarm() : mCounter: " + mCounter);
stopTask = true;
}

}

원본출처:http://www.androes.com/139 

728x90
반응형
:
Posted by mapagilove