BlackBerry Forums Support Community               

Closed Thread
 
LinkBack Thread Tools
Old 10-08-2010, 01:51 PM   #1 (permalink)
New Member
 
Join Date: Oct 2010
Model: 8520
PIN: N/A
Carrier: Digitel
Posts: 4
Post Thanks: 0
Thanked 0 Times in 0 Posts
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 (permalink)
New Member
 
Join Date: Oct 2010
Model: 8520
PIN: N/A
Carrier: Digitel
Posts: 4
Post Thanks: 0
Thanked 0 Times in 0 Posts
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


Thread Tools

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

vB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are On

Skinner X52LB2100 Honeywell Solenoid Valve **NEW IN BOX**
$139.95
Skinner X52LB2100 Honeywell Solenoid Valve **NEW IN BOX** pictureNumatics Solenoid Valve - Model No. 082SA436K000030 120VAC Coil NOS Sealed Pouch
$100.2
Numatics Solenoid Valve - Model No. 082SA436K000030 120VAC Coil NOS Sealed Pouch pictureSMC SY5445-5FU Solenoid Valve - New
$35.0
SMC SY5445-5FU Solenoid Valve - New pictureSMC VQ1400N-5 Solenoid Valve
$30.0
SMC VQ1400N-5 Solenoid Valve pictureNEW SPORLAN SOLENOID VALVE E6S130 LESS COIL 3/8" #371
$25.0
NEW SPORLAN SOLENOID VALVE E6S130 LESS COIL 3/8






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