마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

타이머 소스인데요 한번 봐주세요

0 추천
타이머 소스이구요 다른 액티비티에서 시간을 설정한후 그 값을 받아와서 카운트하는 소스인데요
예를들어 55초라면  0초까지 진행되고 다음화면으로 넘어가는데요
여기서 스마트폰화면이 꺼져있을때는 시간이 진행이 안되게 하려는데요
그냥 다른작업할때나 켜져있을때는 시간이 계속 진행 되구요
어떻게 해야하나요?
<타이머 소스가 화면이 꺼지면 정지하구요 화면이 켜져있으면 계속 진행되게요 다른작업상관없이 화면꺼지고 켜지는 거에 따라서요 > 부탁드립니다. 초보라서요
 
package park.dongju;
import android.annotation.SuppressLint;
import android.annotation.TargetApi;
import android.app.Activity;
import android.app.Notification;
import android.app.NotificationManager;
import android.graphics.PixelFormat;
import android.net.Uri;
import android.os.Build;
import android.os.Bundle;
import android.os.CountDownTimer;
import android.os.Handler;
import android.content.Context;
import android.content.Intent;
import android.webkit.WebView;
import android.util.Log;
import android.view.Window;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.WindowManager;
import android.widget.Button;
import android.widget.ImageButton;
import android.widget.TextView;
import android.widget.Toast;
@TargetApi(Build.VERSION_CODES.HONEYCOMB)
@SuppressLint("NewApi")
public class CountActivity extends Activity{
  TextView tv;
     Handler h = new Handler();
 @Override
 protected void onCreate(Bundle savedInstanceState) {
  // TODO Auto-generated method stub
  super.onCreate(savedInstanceState);
  Window window = this.getWindow();
  
   this.requestWindowFeature(Window.FEATURE_NO_TITLE);
         window.setFormat(PixelFormat.TRANSLUCENT);// 화占쏙옙占쏙옙 占싫쇽옙占쏙옙 占쏙옙占쏙옙占쏙옙占쏙옙 占쏙옙占쏙옙
   setContentView(R.layout.count);
      
  
  Bundle bundle = getIntent().getExtras();
  int value = bundle.getInt("some_key");
  int value2 = bundle.getInt("some_key2");
  int time;
  
        tv  = (TextView)findViewById(R.id.tv);
        tv.setText("value"); // startting from 10.
        time = value*60000+ value2*1000;
        final MyCounter timer = new MyCounter(time,1000);
        timer.start();
}
 @TargetApi(Build.VERSION_CODES.JELLY_BEAN)
 @SuppressLint("NewApi")
 public class MyCounter extends CountDownTimer{
  
        public MyCounter(long millisInFuture, long countDownInterval) {
            super(millisInFuture, countDownInterval);
        }
 
        @SuppressLint("NewApi")
  @Override
        public void onFinish() {
            System.out.println("Timer Completed.");
            tv.setText("Timer Completed.");
           
            Intent intent = new Intent(CountActivity.this, Jamgeum1Activity.class);
   startActivity(intent);
            finish();
         //android.os.Process.killProcess(android.os.Process.myPid() );
        }
 
        @Override
        public void onTick(long millisUntilFinished) {
         tv.setText((millisUntilFinished/60000)+"시"+(millisUntilFinished%60000/1000)+"분");
         if((millisUntilFinished%60000/1000)==30)
         {
         Notification.Builder notiBuilder = new Notification.Builder(getApplicationContext());
            notiBuilder.setSmallIcon(R.drawable.icon);
            notiBuilder.setContentTitle("스마트폰 중독 탈출 앱");
            notiBuilder.setContentText("30분 남았습니다.");
            Context context = getApplicationContext();
            Toast.makeText(context, "30분 남았습니다.", Toast.LENGTH_SHORT).show();
            Notification noti = notiBuilder.build();
          
            //------------------------------------------------------------------
            // Notify
          
            NotificationManager notiManager = (NotificationManager)getSystemService(NOTIFICATION_SERVICE);
            notiManager.notify(0, noti);
         }
            System.out.println("Timer  : " + (millisUntilFinished/1000));
        }
    }
}

 

친구영웅 (160 포인트) 님이 2013년 9월 15일 질문

1개의 답변

0 추천
화면이 꺼지면 onPause가 호출되는 것으로 알고있습니다.

액티비티에서 onPause를 Override해서 사용해보세요..

화면이 다시 켜지면 onResume이 호출되구요..

onPause가 불리면 정지, onResume이 불리면 시작 이런식으로요.
인연 (31,880 포인트) 님이 2013년 9월 28일 답변
...