2016-07-05 6 views
1

私はユーザーがカウントダウンタイマーである特定のタスクを完了できる残りの時間を表示する必要があるアンドロイドアプリを開発しています。ユーザーが規定時間を超えた場合、タイマーはカウントアップを開始するか、またはクロノメーターになります。だから、私は同じコンポーネントで両方を使用する必要があります。 APIレベル24のクロノメーターでsetCountdownメソッドが追加されましたが、これは使用できません。誰かがライブラリのリファレンスや、私のユースケースを実装する方法を見つけることができるいくつかのコードを提供してください。アンドロイドアプリでタイマーとカウントダウンタイマーの両方を使用する

答えて

1

あなたは時間decreases..iは、ここでは例を掲載しています。この目的や火災放送用Asynctaskを使用することができます。

/******************* 
* asyncTask for timer 
********************/ 
public class MyTimer extends AsyncTask<String, String, String> { 
private AsyncTimer asyncTimer; 
private Context context; 

public MyTimer(Context context) { 
    asyncTimer = (AsyncTimer) context; 
    this.context = context; 
} 

@Override 
protected void onPreExecute() { 
    super.onPreExecute(); 
    asyncTimer.updateUi(false); //updates UI 
} 

@Override 
protected void onPostExecute(String s) { 
    asyncTimer.updateUi(true); 
} 

@Override 
protected void onProgressUpdate(String... values) { 
    super.onProgressUpdate(values); 
    int time = Integer.parseInt(values[0]); 
    Intent i = new Intent(Constants.BROADCAST_TIMER_KEY); 
    i.putExtra(Constants.INTENT_BROADCAST_TIME, time); 
    context.sendBroadcast(i); 
} 

@Override 
protected String doInBackground(String... params) { 
    long i = Integer.parseInt(params[0]); 
    while (i >= 0) { 
     publishProgress(String.valueOf(i)); 
     try { 
      Thread.sleep(1000); 
     } catch (InterruptedException e) { 
      e.printStackTrace(); 
     } 
     i = i - 1; 
    } 
    return null; 
} 
} 
TimeSetは私のインターフェイスはUI

上の値を変更することである放送時間を変更する

public class BroadcastTimer extends BroadcastReceiver { 
@Override 
public void onReceive(Context context, Intent intent) { 
    TimeSet timeSet = (TimeSet) context; 
    int time = intent.getExtras().getInt(Constants.INTENT_BROADCAST_TIME); 
    int min = (time)/60; 
    int sec = time % 60; 
    timeSet.FinalResult(min + context.getString(R.string.str_mins) + sec + context.getString(R.string.str_secs)); 
} 
} 
関連する問題