List of all Iphone and Blackberry Development codes in a one click Iphone,objective C,xcode,blackberry Development,iOS Development

Tuesday, May 15, 2012

Draw painting and save as Image in Blackberry




Draw your paintings and save it as an image. This will help you for doing that.

















Background white image for drawing your paintings.

_bitmap= Bitmap.getBitmapResource("background.png");//white color background image
_signatureField = new SignatureField(_bitmap);
add(_signatureField);


When you press the capture button on the menu, it will save your painting as an image.

private MenuItem _captureItem = new MenuItem("Capture", 200000, 10) {
public void run() {
//Create a new instance of the encoder to encode the bitmap into an image
PNGEncoder encoder = new PNGEncoder(_bitmap, true);
try {
byte[] imageBytes = encoder.encode(true);
EncodedImage image = EncodedImage.createEncodedImage(imageBytes, 0, imageBytes.length);
try {
FileConnection fconn = (FileConnection) Connector.open(
new StringBuffer().append("file:///store/home/user/").append("Signature-").append(System.currentTimeMillis()).append(".png").toString());
if (!fconn.exists())
fconn.create();
DataOutputStream ds = fconn.openDataOutputStream();
ds.write(image.getData());
ds.close();
fconn.close();
} catch (IOException e) {
Dialog.alert(e.getMessage());
e.printStackTrace();
}
} catch (IOException e) {
Dialog.alert(e.getMessage());
e.printStackTrace();
}
}
};

/**
* MenuItem to clear the signature field
*/
private MenuItem _clearItem = new MenuItem("Clear", 200000, 10) {
public void run() {
_signatureField.clear();
}

};

/**
* MenuItem to close the application
*/
private MenuItem _closeItem = new MenuItem("Close", 200000, 10) {
public void run() {
onClose();
}
};

/**
* Create the menu
*/
protected void makeMenu(Menu menu, int instance) {
menu.add(_captureItem);
menu.add(_clearItem);
menu.add(_closeItem);
}

final class SignatureField extends BitmapField {

private Graphics _graphics;

/**
* Constructor
*/
public SignatureField(Bitmap b) {
this.setBitmap(b);
_graphics = new Graphics(b);
}

/**
* Handle touch events
*/
protected boolean touchEvent(TouchEvent message) {
try {
if (message.getEvent() == TouchEvent.MOVE) { //Move event fired
//Get the move points
int pointsSize = message.getMovePointsSize();

if (pointsSize > 1)
{
int[] xPoints = new int[pointsSize];
int[] yPoints = new int[pointsSize];
message.getMovePoints(1, xPoints, yPoints, null);
drawPath(xPoints,yPoints);
}
} else if (message.getEvent() == TouchEvent.GESTURE) { //Gesture event fired
TouchGesture gesture = message.getGesture();
if (gesture.getEvent() == TouchGesture.TAP) { //Tap Gesture
//Since we have a tap only draw a single point
int xPoint = message.getX(1);
int yPoint = message.getY(1);
drawPoint(xPoint,yPoint);
} else if (gesture.getEvent() == TouchGesture.SWIPE) { //Swipe Gesture
//Get the move points
int pointsSize = message.getMovePointsSize();
int[] xPoints = new int[pointsSize];
int[] yPoints = new int[pointsSize];
message.getMovePoints(1, xPoints, yPoints, null);
drawPath(xPoints,yPoints);
}
}
} catch (Throwable e) {
throw new RuntimeException(e.toString());
}
return true;
}

/**
* Draw a path through the set of points
*/
private void drawPath(int[] xPoints, int[] yPoints) {
int oldColor = _graphics.getColor();
//Draw a path through the points
_graphics.setColor(Color.RED);
_graphics.drawPathOutline(xPoints,yPoints, null, null, false);
_graphics.setColor(oldColor);
//Repaint
invalidate();
}

/**
* Draw a point
*/
private void drawPoint(int xPoint, int yPoint) {
int oldColor = _graphics.getColor();
_graphics.setColor(0x000000);
_graphics.drawPoint(xPoint, yPoint);
_graphics.setColor(oldColor);
//Repaint
invalidate();
}

/**
* Clear the field
*/
private void clear() {
int oldColor = _graphics.getColor();
_graphics.setColor(0xFFFFFF);
_graphics.fillRect(0, 0, _bitmap.getWidth(), _bitmap.getHeight());
_graphics.setColor(oldColor);
invalidate();
}
}




        

Wednesday, May 2, 2012

BarGraph in Blackberry



















If you want to display a bar graph, then lets try this code sample. This will help you in drawing a bar graph in blackberry.

//BarScreen  - MainScreen class ---

import net.rim.device.api.ui.component.NullField;
import net.rim.device.api.ui.container.MainScreen;
import net.rim.device.api.ui.container.VerticalFieldManager;

public class BarScreen extends MainScreen
{
 
    private BarGraphField _bar;
    private boolean _barChanged = false;
    private MainScreen _barScreen;
 
    public BarScreen(long style)
    {
        super(style);
     
        _barScreen = this;
     
        //Graph data.
        VerticalFieldManager graphLayout = new VerticalFieldManager(VerticalFieldManager.FIELD_VCENTER);
        final int[] values = {60,50,40,30,20,10};
        final int[] colors = {0x00FF0000,0x007F525D , 0x00E77471, 0x00C8B560, 0x00ADDFFF,0};      
        _bar = new BarGraphField(values, colors, 100, 5, 30, BarGraphField.PADDING_MEDIUM, BarGraphField.PADDING_HIGH, true);
        //Add a focusable NullField for scrolling purposes.
        this.add(new NullField(NullField.FOCUSABLE));
        _bar.setPadding(20, 0, 0, 20);
        graphLayout.add(_bar);
        this.add(graphLayout);
        this.add(new NullField(NullField.FOCUSABLE));
     
    }
}


// BarGraphField  class--------

import net.rim.device.api.ui.Graphics;
import net.rim.device.api.util.Arrays;
import net.rim.device.api.ui.Font;

public class BarGraphField extends GraphField
{
    
    public static final int PADDING_NONE = 0;
    
    public static final int PADDING_LOW = 4;
  
    public static final int PADDING_MEDIUM = 8;
    
  
    public static final int PADDING_HIGH = 12;
    
    private int _scale, _increment, _barWidth, _barPadding, _scalePadding;
    private boolean _showScale;
    
  
    public BarGraphField(int[] values, int[] colors, int scale, int increment, int barWidth)
    {
        this(values, colors, scale, increment, barWidth, PADDING_MEDIUM, PADDING_MEDIUM, false);
    }
    
   
    public BarGraphField(int[] values, int[] colors, int scale, int increment, int barWidth, boolean showScale)
    {
        this(values, colors, scale, increment, barWidth, PADDING_MEDIUM, PADDING_MEDIUM, showScale);
    }
    
    
    public BarGraphField(int[] values, int[] colors, int scale, int increment, int barWidth, int barPadding, 
        int scalePadding, boolean showScale)
    {
        
        //Ensure the scale is greater than 0.
        if (scale <= 0)
            throw new IllegalArgumentException("Scale must be greater than 0.");
            
        //Ensure the increment is greater than 0.
        if (increment <= 0)
            throw new IllegalArgumentException("Increment must be greater than 0.");
            
        //Ensure the barWidth is greater than 0.
        if (barWidth <= 0)
            throw new IllegalArgumentException("Bar width must be greater than 0.");
            
        //Ensure barPadding is a valid value.
        switch (barPadding)
        {
            case PADDING_NONE:
            case PADDING_LOW:
            case PADDING_MEDIUM:
            case PADDING_HIGH:
            break;
            default:
                throw new IllegalArgumentException("Invalid bar padding specified");
        }
        
        //Ensure scalePadding is a valid value.
        switch (scalePadding)
        {
            case PADDING_NONE:
            case PADDING_LOW:
            case PADDING_MEDIUM:
            case PADDING_HIGH:
            break;
            default:
                throw new IllegalArgumentException("Invalid scale padding specified");
        }
        
        //Ensure the number of bar values match the number of colors.
        if (values.length != colors.length)
            throw new IllegalArgumentException("Non matching array lengths for values and colors.");
            
        //Ensure not values are greater than the scale value.
        for(int count = values.length - 1; count >= 0; --count)
        {
            if (values[count] > scale)
                throw new IllegalArgumentException("Value greater than scale.");
        }
        
        _values = values;
        _colors = colors;
        _scale = scale;
        _increment = increment;
        _barWidth = barWidth;
        _barPadding = barPadding;
        _scalePadding = scalePadding;
        _showScale = showScale;
        _width = calcWidth();
        _height = calcHeight();
    }
    
   

    private int calcWidth()
    {
        int theWidth;
        
        if (_showScale)
            theWidth = Font.getDefault().getAdvance(Integer.toString(_scale)) + 8 
                + (_values.length * _barWidth) + ((_values.length - 1) * _barPadding);
        else
            theWidth = 10 + (_values.length * _barWidth) + ((_values.length - 1) * _barPadding); 
       
        return theWidth;
    }
    private int calcHeight()
    {
        if (_showScale)
            return 2 + (Font.getDefault().getHeight() * (_scale / _increment));
        else if (_scalePadding == PADDING_NONE)
            return 2 + (PADDING_LOW * (_scale / _increment));
        else
            return 2 + (_scalePadding * (_scale / _increment));
    }
    
   protected void paint(Graphics graphics)
    {
        int count, tempX, tempY, leftOver, graphHeight = 0;
        
        int tickHeight;             //The height of the scale ticks.
        int tickIndent;             //The distance to indent the scale ticks.
        
        if (_showScale)
        {
            tickHeight = Font.getDefault().getHeight();
            //Subtract 4 from the width of the scale (2 pixels for the scale width and 2 pixels for spacing).
            tickIndent = Font.getDefault().getAdvance(Integer.toString(_scale)) - 4;
        }
        else
        {
            if (_scalePadding == PADDING_NONE)
                tickHeight = PADDING_LOW;
            else
                tickHeight = _scalePadding;
            
            tickIndent = 0;
        }
        
        //Wipe out any existing graph image data.
        graphics.clear();
        
        graphics.setColor(0);
        
        //In case the increment doesn't divide into the scale evenly.
        leftOver = _scale % _increment;
        tempY = 0;
        
        //Draw the scale.
        for (count = _scale; count > leftOver; count-=_increment)
        {
            graphics.fillRect(tickIndent, tempY, 6, 2);
            
            if (_showScale)
                graphics.drawText(Integer.toString(count), 0, tempY);
            
            tempY += tickHeight;
        }
        
        tempX = tickIndent + 6;
        
        //Draw the x axis.
        graphics.fillRect(tempX, tempY, _width - tempX, 2);
        
        //Draw the y axis.
        graphics.fillRect(tempX, 0, 2, _height);
        
        tempX = _width - _barWidth;
        
        //Draw the bars.
        for (count = _values.length - 1; count >= 0; --count)
        {
            graphics.setColor(_colors[count]);
            
            //Calculate the top bar as a percentage of the available graphing space
            //relating to the value.  Graphing space is _height - 2 (2 pixel y axis).
            tempY = _height - (((_height - 2) * _values[count]) / _scale);
            graphHeight = _height - tempY - 2;
            
            graphics.fillRect(tempX, tempY, _barWidth, graphHeight);
            
            //Calculate the next graph starting point.
            tempX -= (_barWidth + _barPadding);
        }
    }
    
   
    public int getBarPadding()
    {
        return _barPadding;
    }
    
    
    public int getBarWidth()
    {
        return _barWidth;
    }
    

   
    public int getIncrement()
    {
        return _increment;
    }
    
   
    public int getScale()
    {
        return _scale;
    }
    
  
    public int getScalePadding()
    {
        return _scalePadding;
    }
   
    public boolean isScaleVisible()
    {
        return _showScale;
    }
    
    
    public void setBarPadding(int barPadding)
    {
        //Don't do anything unless the bar padding has changed.
        if (_barPadding != barPadding)
        {
            //Ensure barPadding is a valid value.
            switch (barPadding)
            {
                case PADDING_NONE:
                case PADDING_LOW:
                case PADDING_MEDIUM:
                case PADDING_HIGH:
                break;
                default:
                    throw new IllegalArgumentException("Invalid bar padding specified");
            }
            
            _barPadding = barPadding;
            _width = calcWidth();
        }
    }
    
    
    public void setBarWidth(int barWidth)
    {
        //Dont do anything unless the bar width has changed.
        if (_barWidth != barWidth)
        {
            //Ensure the barWidth is greater than 0.
            if (barWidth <= 0)
                throw new IllegalArgumentException("Bar width must be greater than 0.");
                
            _barWidth = barWidth;
            _width = calcWidth();
        }
    }
    
  
    public void setGraphData(int[] values, int[] colors)
    {
        //Don't do anything unless the data has changed.
        if (!Arrays.equals(_values, values) || !Arrays.equals(_colors, colors))
        {
            //Ensure the number of values match the number of colors.
            if (values.length != colors.length)
                throw new IllegalArgumentException("Non matching array lengths for bars and colors.");
                
            //Ensure not values are greater than the scale value.
            for(int count = values.length - 1; count >= 0; --count)
            {
                if (values[count] > _scale)
                    throw new IllegalArgumentException("Value greater than scale.");
            }                
                            
            _values = values;
            _colors = colors;

            _width = calcWidth();
            _height = calcHeight();
        }
    }
  
   
    public void setIncrement(int increment)
    {
        //Don't do anything unless the increment has changed.
        if (_increment != increment)
        {
            //Ensure the increment is greater than 0.
            if (increment <= 0)
                throw new IllegalArgumentException("Increment must be greater than 0.");
                
            //Only the height changes with an increment change.
            _increment = increment;
            _height = calcHeight();
        }
    }
    
   
    public void setScale(int scale)
    {
        ///Don't do anything unless the scale has changed.
        if (_scale != scale)
        {
            //Ensure the scale is greater than 0.
            if (scale <= 0)
                throw new IllegalArgumentException("Scale must be greater than 0.");
                
            //Ensure no values are greater than the scale value.
            for(int count = _values.length - 1; count >= 0; --count)
            {
                if (_values[count] > scale)
                    throw new IllegalArgumentException("Value greater than scale.");
            }
            
            _scale = scale;
            _width = calcWidth();
            _height = calcHeight();
        }
    }
    
   
    public void setScalePadding(int scalePadding)
    {
        //Don't do anything unless the scale padding has changed.
        if (_scalePadding != scalePadding)
        {
            //Ensure scalePadding is a valid value.
            switch (scalePadding)
            {
                case PADDING_NONE:
                case PADDING_LOW:
                case PADDING_MEDIUM:
                case PADDING_HIGH:
                break;
                default:
                    throw new IllegalArgumentException("Invalid scale padding specified");
            }
            
            _scalePadding = scalePadding;
            _height = calcHeight();
        }
    }
    
   
    public void setScaleVisible(boolean showScale)
    {
        //Don't do anything unless the flag has changed.
        if (_showScale != showScale)
        {
            _showScale = showScale;
            _width = calcWidth();
            _height = calcHeight();
        }
    }
}


//GraphField  class ------

import net.rim.device.api.ui.Field;
public abstract class GraphField extends Field
{
    protected int[] _values;
    
    
    protected int[] _colors;
   
    protected int _width;
    
    
    protected int _height;
    
   
    GraphField() 
    {    
        super();
    }
    
   
    public int getColor(int index)
    {
        return _colors[index];
    }
   
    public int[] getColors()
    {
        return _colors;
    }
   
    public int getValue(int index)
    {
        return _values[index];
    }
    
   
    public int[] getValues()
    {
        return _values;
    }
   
    public void setGraphData(int[] values, int[] colors)
    {
        _values = values;
        _colors = colors;
    }
    
    public int getPreferredHeight()
    {
    return _height;
    }
    
    public int getPreferredWidth()
    {
    return _width;
    }
  
    protected void layout(int width, int height)
    {
    int w, h;
   
    if (width >= _width)
    {
    w = _width;
    }
    else
    {
    w = width;
   
    }
   
    if (height >= _height)
    {
    h = _height;
    }
    else
    {
    h = height;
    }
   
    setExtent(w, h);
    }




        

Tuesday, May 1, 2012

Display Stop Watch (Timer) in Blackberry


        import java.util.Timer;
    import java.util.TimerTask;
    import net.rim.device.api.ui.Field;
    import net.rim.device.api.ui.FieldChangeListener;
    import net.rim.device.api.ui.UiApplication;
    import net.rim.device.api.ui.component.ButtonField;
    import net.rim.device.api.ui.component.Dialog;
    import net.rim.device.api.ui.component.RichTextField;
    import net.rim.device.api.ui.container.HorizontalFieldManager;
    import net.rim.device.api.ui.container.MainScreen;

    public class stopwatch extends MainScreen
    {

       private RichTextField _chronometer;
       Timer timer;
       private int second = 0, minute = 0, hour = 0;
       private boolean _sec = false, _min = false, _hou = false;
       ButtonField record,stop;

       public stopwatch()
       {

           record=new ButtonField("Start");
           stop=new ButtonField("Stop");

           _chronometer = new RichTextField("0" + hour + ":0" + minute + ":0" + second, RichTextField.TEXT_ALIGN_HCENTER | Field.NON_FOCUSABLE);
           add(_chronometer);

           HorizontalFieldManager hfm=new HorizontalFieldManager(FIELD_HCENTER);
           record.setMargin(net.rim.device.api.system.Display.getHeight()/2,0,0,0);
           stop.setMargin(net.rim.device.api.system.Display.getHeight()/2,0,0,20);
           hfm.add(record);

           hfm.add(stop);

           add(hfm);


           FieldChangeListener listener = new FieldChangeListener() {
               public void fieldChanged(Field field, int context) {

                   if(field==record){
                        try
                           {

                               try {
                                   timer = new Timer();
                                   resetChronometer();
                                   timer.scheduleAtFixedRate(new Chronometer(), 1000, 1000);
                               } catch (Exception e) {
                                   e.printStackTrace();
                               }
                           }
                           catch (Exception e)
                           {
                               Dialog.alert(e.toString());
                           }
                   }
                   if(field==stop){

                           try
                           {

                                   timer.cancel();

                           }
                           catch (Exception e)
                           {
                               Dialog.alert(e.toString());
                           }





                   }

               }
           };
           record.setChangeListener(listener);
           stop.setChangeListener(listener);

       }

           private class Chronometer extends TimerTask {
               public void run() {
                   try {
                       second++;
                       UiApplication.getUiApplication().invokeLater(new Runnable() {
                           public void run() {

                               if (_min == true) {
                                   _min = false;
                                   minute = minute + 1;
                                   second = 0;
                               }

                               if (_hou == true) {
                                   _hou = false;
                                   hour = hour + 1;
                                   minute = 0;
                               }

                               if (second == 59) {
                                   _min = true;
                                   if (minute == 59) {
                                       _hou = true;
                                   }
                               }

                               if (second <= 9 && minute <= 9 && hour <= 9) {
                                   _chronometer.setText("0" + hour + ":0" + minute + ":0" + second);
                               }

                               if (second > 9 && minute <= 9 && hour <= 9) {
                                   _chronometer.setText("0" + hour + ":0" + minute + ":" + second);
                               }

                               if (second <= 9 && minute > 9 && hour <= 9) {
                                   _chronometer.setText("0" + hour + ":" + minute + ":0" + second);
                               }

                               if (second <= 9 && minute <= 9 && hour > 9) {
                                   _chronometer.setText("" + hour + ":0" + minute + ":0" + second);
                               }

                               if (second > 9 && minute > 9 && hour > 9) {
                                   _chronometer.setText(hour + ":" + minute + ":" + second);
                               }

                               if (second > 9 && minute > 9 && hour <= 9) {
                                   _chronometer.setText("0" + hour + ":" + minute + ":" + second);
                               }

                               if (second > 9 && minute <= 9 && hour > 9) {
                                   _chronometer.setText("" + hour + ":0" + minute + ":" + second);
                               }

                               if (second <= 9 && minute > 9 && hour > 9) {
                                   _chronometer.setText("0" + hour + ":" + minute + ":" + second);
                               }

                               // rt.setText(hour+":"+minute+":"+second);
                           }
                       });

                       // timer.cancel();
                   } catch (Exception e) {
                       e.printStackTrace();
                   }
               }
           }

           public void resetChronometer() {
             _chronometer.setText("00:00:00");
             second = 0;
             minute = 0;
             hour = 0;
    }

    }


        

Get Memory usage in Blackberry

If you want to know the memory usage of your blackberry phone, then use the following code.
   Memory.getRAMStats().getFree();
   Memory.getRAMStats().getAllocated());