BlackBerry Forums Support Community
              

Closed Thread
 
Thread Tools
Old 10-08-2010, 01:51 PM   #1
8vius
New Member
 
Join Date: Oct 2010
Model: 8520
PIN: N/A
Carrier: Digitel
Posts: 4
Default Displaying a timer

Please Login to Remove!

Hey people, i'm making a voice note app and i need to display to the user how long he's been recording and how long he's been playing the voice note, does anyone have any idea on how i can display the timer?
Offline  
Old 10-11-2010, 02:19 PM   #2
8vius
New Member
 
Join Date: Oct 2010
Model: 8520
PIN: N/A
Carrier: Digitel
Posts: 4
Default

I managed to display the timer, but now that i did, i'm gettin a RuntimeException when i try to record my voice note on the simulator.

The following code is my StopWatch class which measures the time and displays it on a labelfield on the screen, the error occurs in the run() method when DisplayTime is called

Code:
package Clases;

import net.rim.device.api.ui.component.Dialog;
import net.rim.device.api.ui.component.LabelField;

public class StopWatch extends Thread {
	   public final static int COUNT_UP   = 0;
	   public final static int COUNT_DOWN = 1;

	   private int type = COUNT_DOWN;
	   private volatile int speedFactor = 1;
	   private long currentTime;
	   private long allowedTime;
	   private long elapsedTime;
	   private long timeChange;
	   private long interval = 50;
	   
	   private LabelField _label;

	   private final Object runLock = new Object();

	   private volatile boolean alive = true;
	   private volatile boolean paused = false;
	   
	   public StopWatch(long ticks, LabelField label){
	      allowedTime = ticks;
	      _label = label;
	   }

	   public StopWatch(int type, long ticks){
	      this.type = type;
	      allowedTime = ticks;
	   }

	   public StopWatch(int type, long ticks, long interval){
	      this.type = type;
	      allowedTime = ticks;
	      this.interval = interval;
	   }

	   public void run(){
	      currentTime = System.currentTimeMillis();
	      while( alive ){
	         if( !paused ){
	            synchronized( runLock ){
	               timeChange = ((System.currentTimeMillis() - currentTime) / speedFactor);
	               elapsedTime = elapsedTime + timeChange;
	               currentTime = System.currentTimeMillis();
	               
	               try {
	            	   if ((elapsedTime/1000)%60 == 0)
		            	   DisplayTime(elapsedTime);
	               }
	               catch (Exception e)
	               {
	            	   Dialog.alert(e.toString());
	               }
	               
	            	  
	              
	              
	            }
	         } else {
	            synchronized( runLock ){
	               currentTime = System.currentTimeMillis();
	            }
	         }
	         try {
	            Thread.sleep(interval);
	         } catch(Exception e) {
	         }
	      }
	   }

	   public void pause(){
	      paused = true;      
	   }

	   public void unpause(){
	      paused = false;
	   }

	   public void stop(){
	      alive = false;
	   }

	   public void reset(){
	      synchronized( runLock ){
	         elapsedTime = 0;
	      }
	   }

	   public long getAllowedTime(){
	      return allowedTime;
	   }

	   public void addTime(long time){
	      synchronized( runLock ){
	         allowedTime = allowedTime + time;
	      }
	   }

	   public void removeTime(long time){
	      synchronized( runLock ){
	         allowedTime = allowedTime - time;
	      }
	   }

	   public void clockFactor(int factor){
	      speedFactor = factor;
	   }

	   public long getTimeMillis(){
	      long remainingTime = 0;
	      if(type == COUNT_DOWN){
	         synchronized( runLock ){
	            remainingTime = allowedTime - elapsedTime;
	            if( remainingTime < 0 ) remainingTime = 0;
	         }
	      } else
	      if(type == COUNT_UP){
	         synchronized( runLock ){
	            remainingTime = elapsedTime;
	            if( remainingTime > allowedTime ) remainingTime = allowedTime;
	         }
	      }

	      return remainingTime;
	   }
	   
	   public void DisplayTime(long timeMillis)
	   {
		    long time = timeMillis / 1000;  
		    
		    String seconds = Integer.toString((int)(time % 60));  
		    String minutes = Integer.toString((int)((time % 3600) / 60));  
		    
		    for (int i = 0; i < 2; i++) {  
		    
		    	if (seconds.length() < 2) {  
		    		seconds = "0" + seconds;  
		    	}  
		    	if (minutes.length() < 2) {  
		    		minutes = "0" + minutes;  
		    	}  
		   }  
		    
		   _label.setText(minutes + ":" + seconds);
	   }

}
Offline  
Closed Thread



Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump


Blackberry Advertising Banner Vinyl Mesh Sign Fruit Vegetable Berry Farm Fresh picture

Blackberry Advertising Banner Vinyl Mesh Sign Fruit Vegetable Berry Farm Fresh

$219.95



Nice Vintage Working RIM Blackberry 857, with Cradle, Collector's Item R857D-2-5 picture

Nice Vintage Working RIM Blackberry 857, with Cradle, Collector's Item R857D-2-5

$124.95



BLACKBERRY MEAD Advertising Vinyl Banner Flag Sign Many Sizes MEDIEVAL picture

BLACKBERRY MEAD Advertising Vinyl Banner Flag Sign Many Sizes MEDIEVAL

$118.19



(2 Pack) Gourmet BLACKBERRY SYRUP 32oz. Coffee Drink & Italian Soda Flavor picture

(2 Pack) Gourmet BLACKBERRY SYRUP 32oz. Coffee Drink & Italian Soda Flavor

$24.50



BLACKBERRY MEAD Advertising Vinyl Banner Flag Sign Many Sizes MEDIEVAL picture

BLACKBERRY MEAD Advertising Vinyl Banner Flag Sign Many Sizes MEDIEVAL

$118.19



BLACKBERRY MEAD Advertising Vinyl Banner Flag Sign Many Sizes MEDIEVAL picture

BLACKBERRY MEAD Advertising Vinyl Banner Flag Sign Many Sizes MEDIEVAL

$118.19







Copyright © 2004-2016 BlackBerryForums.com.
The names RIM © and BlackBerry © are registered Trademarks of BlackBerry Inc.