2013-07-12 14 views
6

यह एक उलटी गिनती टाइमर है और मैं मिनटों और सेकंड में प्रिंट करना चाहता हूं। पूर्व (300000mili) 5 मिनट, और 4:60 गिनती, 04:59 ... यहाँ मेरी कोडमिनट और सेकंड में उलटी गिनती

 final MyCounter timer = new MyCounter(300000,1000); 
    blue.setOnClickListener(new OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      timer.start(); 
     } 
    }); 
} 
public class MyCounter extends CountDownTimer{ 

    public MyCounter(long millisInFuture, long countDownInterval) { 
     super(millisInFuture, countDownInterval); 
    } 

    @Override 
    public void onFinish() { 
     blue.setText("Live"); 
    } 

    @Override 
    public void onTick(long millisUntilFinished) { 
     blue.setText((millisUntilFinished/60000)+":"+(millisUntilFinished/5000)); 
     // i tried this 
    } 
} 

और कैसे मैं कंपन करने के लिए रख सकते हैं का हिस्सा जब 20 सेकंड लापता है? और जब यह खत्म हो गया? धन्यवाद और मेरी बुरी अंग्रेजी

+0

प्रश्न कहां है? – amalBit

+0

अब यह क्या कर रहा है/नहीं? – codeMagic

उत्तर

36

http://developer.android.com/reference/android/os/CountDownTimer.html

TextView _tv = (TextView) findViewById(R.id.textView1); 
new CountDownTimer(30000, 1000) { // adjust the milli seconds here 

    public void onTick(long millisUntilFinished) { 
    _tv.setText(""+String.format("%d min, %d sec", 
        TimeUnit.MILLISECONDS.toMinutes(millisUntilFinished), 
        TimeUnit.MILLISECONDS.toSeconds(millisUntilFinished) - 
        TimeUnit.MINUTES.toSeconds(TimeUnit.MILLISECONDS.toMinutes(millisUntilFinished)))); 
    } 

    public void onFinish() { 
     _tv.setText("done!"); 
    } 
}.start(); 

जावा 1.5 के बाद से वहाँ java.util.concurrent.TimeUnit वर्ग

है
_tv.setText(""+String.format("%d min, %d sec", 
        TimeUnit.MILLISECONDS.toMinutes(millisUntilFinished), 
        TimeUnit.MILLISECONDS.toSeconds(millisUntilFinished) - 
        TimeUnit.MINUTES.toSeconds(TimeUnit.MILLISECONDS.toMinutes(millisUntilFinished)))); 

http://docs.oracle.com/javase/7/docs/api/java/util/concurrent/TimeUnit.html

एक TIMEUNIT एक दिया यूनिट में समय अवधियों का प्रतिनिधित्व करता है ग्रैन्युलरिटी का और एसीआर को परिवर्तित करने के लिए उपयोगिता विधियों को प्रदान करता है ओएसएस इकाइयों, और इन इकाइयों में समय और देरी संचालन करने के लिए।

1.5 नीचे जावा संस्करणों के लिए या प्रणाली है कि पूरी तरह से TIMEUNIT वर्ग निम्नलिखित समीकरणों इस्तेमाल किया जा सकता का समर्थन नहीं करते के लिए:

int seconds = (int) (milliseconds/1000) % 60 ; 
int minutes = (int) ((milliseconds/(1000*60)) % 60); 
int hours = (int) ((milliseconds/(1000*60*60)) % 24); 

कांपना करने के लिए

Vibrator v = (Vibrator) getSystemService(Context.VIBRATOR_SERVICE); 
      // Vibrate for 500 milliseconds 
      v.vibrate(500); 
    <uses-permission android:name="android.permission.VIBRATE"/> // permission in manifest 

संपादित करें:

कंपन 500 मिली सेकंड के लिए 4 मिनट 55 सेकंड पर

if((TimeUnit.MILLISECONDS.toMinutes(millisUntilFinished)==4) && 
        TimeUnit.MILLISECONDS.toSeconds(millisUntilFinished) - 
        TimeUnit.MINUTES.toSeconds(TimeUnit.MILLISECONDS.toMinutes(millisUntilFinished))==55) 
      { 

      Vibrator v = (Vibrator) getSystemService(Context.VIBRATOR_SERVICE); 
      // Vibrate for 500 milliseconds 
      v.vibrate(500); 
      } 
+0

और 20 सेकंड गुम होने पर मैं कंपन कैसे कर सकता हूं? और जब यह खत्म हो गया? thx –

+0

@LucaPimenta आपको संपादित उत्तर में कोड की तुलना करने और उपयोग करने का तरीका ढूंढने की आवश्यकता है – Raghunandan

+0

@LucaPimenta संपादित करें – Raghunandan

2

शेष मिलीसेकंड प्राप्त करने के लिए मॉड्यूल ऑपरेटर % का उपयोग करें और सेकेंड में कनवर्ट करने के लिए 1000 से विभाजित करें।

blue.setText((millisUntilFinished/60000)+":"+(millisUntilFinished % 60000/1000)); 
+0

कार्यरत थक्स आदमी! –

2
package com.zt.voicerecorder.controller; 

import android.os.Bundle; 
import android.os.Handler; 
import android.support.v7.app.AppCompatActivity; 
import android.widget.TextView; 
import com.zt.voicerecorder.R; 

public class MainActivity extends AppCompatActivity { 

    private TextView tvTimer; 
    private Handler handler = new Handler(); 
    private Runnable runnable; 
    private long milliSeconds = 0; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

     tvTimer = (TextView) findViewById(R.id.tvTimer); 
     timerStart(); 

    } 

    private void timerStart() { 
     runnable = new Runnable() { 
      @Override 
      public void run() { 
       handler.postDelayed(this, 1000); 
       milliSeconds = milliSeconds + 1000; 

       int hours = (int) ((milliSeconds/(1000 * 60 * 60)) % 24); 
       int minutes = (int) ((milliSeconds/(1000 * 60)) % 60); 
       int seconds = (int) (milliSeconds/1000) % 60; 

       tvTimer.setText(String.format("%02d", hours) 
         + ":" + String.format("%02d", minutes) 
         + ":" + String.format("%02d", seconds)); 
      } 
     }; 
     handler.postDelayed(runnable, 0); 
    } 

    @Override 
    protected void onDestroy() { 
     handler.removeCallbacks(runnable); 
     super.onDestroy(); 
    } 
} 
संबंधित मुद्दे