Wednesday 28 March 2012

Generate QRCode Image In Blackberry

This following Code gives the Bitmap Image of QRCode when User Enters Text/PhoneNumber/Url:
---------------------------------------QRCodeScreen.java-----------------------------------

public class QRCodeScreen extends MainScreen implements FieldChangeListener
{
    private static final int BARCODE_WIDTH=250;
    private Font font=Font.getDefault().derive(Font.BOLD|Font.ITALIC, 20);
    private BitmapField barcodeImage;
    public BasicEditField enterText;
    public ButtonField create;
    public QRCodeScreen()
    {
        createGUI();
    }

    private void createGUI()
    {
        barcodeImage=new BitmapField(new Bitmap(BARCODE_WIDTH, BARCODE_WIDTH),FIELD_HCENTER);
        barcodeImage.setBorder(BorderFactory.createBevelBorder(new XYEdges(2, 2, 2, 2)));
        add(barcodeImage);
       
        LabelField label=new LabelField("Enter Any Text/URL/Phone Number/SMS",Field.NON_FOCUSABLE);
        label.setFont(font);
        label.setPadding(5, 0, 5, 0);
        add(label);
       
        enterText=new BasicEditField("", "",250,BasicEditField.FOCUSABLE);       
        enterText.setFont(font);
        add(enterText);
       
        create=new ButtonField("Create BarCode",FIELD_HCENTER);
        create.setPadding(5, 0, 0, 0);
        create.setFont(font);
        create.setChangeListener(this);
        add(create);
    }
   
    public void fieldChanged(Field field, int context)
    {
        if(field==create)
        {
            if(enterText.getText().equals(""))
            {
                QRCodeStartUp.errorHandling("Please Enter Data");
            }
            else
            {
                generateQRCode();                       
            }
        }
    }

    private void generateQRCode()
    {
        try
        {
            QRCode qrCode=new QRCode();
            Encoder.encode(enterText.getText(), ErrorCorrectionLevel.L, qrCode);
            ByteMatrix barcode=qrCode.getMatrix();
            Bitmap bitmap=BarcodeBitmap.createBitmap(barcode, BARCODE_WIDTH);
            barcodeImage.setBitmap(bitmap);
            enterText.setText("");
        }
        catch (Exception e)
        {
            QRCodeStartUp.errorHandling("Exception: "+e.getMessage());
        }   
    }
   
    protected boolean onSavePrompt()
    {
        return true;
    }   
}

Scan Any Type of Barcode Image In Blackberry;

This following class Scans Any type of the Barcode Image which is supports in Blackberry;

Only For Using Version >=6.0
-----------------------------------LoadingScreen.java-------------------------------------

public class LoadingScreen extends MainScreen implements FieldChangeListener
{
    public BarCodeScannerScreen codeScannerView;   
    private LabelField showMessage;
    private ButtonField scan;
    private Font font;
   
    private short _frequency = 1046;
    private short _duration = 200;
    private int _volume = 100;
   
    public LoadingScreen()
    {
        setTitle("BAR CODE Demo");
        font=Font.getDefault().derive(Font.BOLD|Font.ITALIC, 20);
        createGUI();
    }

    private void createGUI()
    {   
        LabelField label=new LabelField("Click The Button To Scan", Field.NON_FOCUSABLE|Field.FIELD_LEADING);
        label.setFont(font);
        label.setPadding(10, 0, 10, 0);
        add(label);
       
        scan=new ButtonField("Scan BARCODE", FIELD_HCENTER);
        scan.setFont(font);
        scan.setChangeListener(this);
        add(scan);
       
        showMessage=new LabelField();
        showMessage.setFont(font);
        showMessage.setPadding(10, 0, 0, 0);
        add(showMessage);
    }

    public void fieldChanged(Field field, int context)
    {
        if(field==scan)
        {
            codeScannerView=new BarCodeScannerScreen(this);
            UiApplication.getUiApplication().pushScreen(codeScannerView);
            codeScannerView.startScan();           
        }
    }
   
    protected void beepSound()
    {
        UiApplication.getUiApplication().invokeLater(new Runnable()
        {
            public void run()
            {               
                Alert.startAudio(new short[]{_frequency, _duration}, _volume);                
            }
        });
    }
   
    public void displayMessage(String text)
    {       
        synchronized (Application.getEventLock())
        {
            UiApplication.getUiApplication().popScreen(codeScannerView);
            showMessage.setText(text);
        }       
    }
   
    protected boolean onSavePrompt()
    {
        return true;
    }
}
-----------------------------------BarCodeScannerScreen .java-------------------------------------
public class BarCodeScannerScreen extends MainScreen
{
    private LoadingScreen qrCodeScanner;
    private BarcodeScanner barcodeScanner;  
  
    public BarCodeScannerScreen(LoadingScreen loadingScreen)
    {
        this.qrCodeScanner=loadingScreen;
        Hashtable hashtable=new Hashtable();      
        Vector formats=new Vector(10);
        formats.addElement(BarcodeFormat.QR_CODE);//In Blackberry These are the supported Formats
        formats.addElement(BarcodeFormat.PDF_417);
        formats.addElement(BarcodeFormat.CODE_128);
        formats.addElement(BarcodeFormat.CODE_39);
        formats.addElement(BarcodeFormat.DATA_MATRIX);
        formats.addElement(BarcodeFormat.EAN_13);
        formats.addElement(BarcodeFormat.EAN_8);
        formats.addElement(BarcodeFormat.ITF);
        formats.addElement(BarcodeFormat.UPC_A);
        formats.addElement(BarcodeFormat.UPC_E);
      
        hashtable.put(DecodeHintType.POSSIBLE_FORMATS, formats);
      
        BarcodeDecoder barcodeDecoder=new BarcodeDecoder(hashtable);
      
        BarcodeDecoderListener barcodeDecoderListener=new BarcodeDecoderListener()
        {
            public void barcodeDecoded(String rawText)
            {
                try
                {
                    qrCodeScanner.beepSound();
                    barcodeScanner.stopScan();
                    qrCodeScanner.displayMessage(rawText);
                }
                catch (Exception e)
                {
                    //Catch The Exception
                }                          
            }         
        };
        try
        {
            barcodeScanner=new BarcodeScanner(barcodeDecoder, barcodeDecoderListener);
            barcodeScanner.getVideoControl().setDisplayFullScreen(true);
            add(barcodeScanner.getViewFinder());                      
        }
        catch (Exception e)
        {
            //Catch The Exception
        }
    }
  
    public void startScan()
    {
        try
        {
            barcodeScanner.startScan();          
        }
        catch (MediaException e)
        {
            //Catch The Exception
        }
    }
  
    protected boolean keyChar(char key, int status, int time)
    {
        if (key == Characters.ESCAPE)
        {
            try
            {
                barcodeScanner.stopScan();
                UiApplication.getUiApplication().popScreen(this);
            }
            catch (MediaException e)
            {
                QRCodeStartUp.errorHandling(e.getMessage());
            }
        }
      
        return super.keyChar(key, status, time);
    }
  
    public void close()
    {
        try
        {
            barcodeScanner.stopScan();
        }
        catch (MediaException e)
        {
            //Catch The Exception
        }
        super.close();
    }
  
    protected boolean onSavePrompt()
    {
        return true;
    }  
}

any doubts feel free to mail on alishaik001@gmail.com 


XMLFileParsing Using DOM In Blackberry

The sample XML file is:

sample.xml:

<ROOT>
<ROW Name="Product Name~B" CheckBox="" Type="PerformanceNormal" Count="1" ChildCount="1" Show="Y" Refine="B">   
   <COL Page="1" Image="" ProductID="3">Sainsbury's aromatherapy citrus mint</COL>
   <COL Page="1" Image="" ProductID="4">TestPerf</COL>      
   <COL Page="2" Image="" ProductID="25">Acb</COL>
</ROW>
<ROW Name="Region~H" CheckBox="" Type="PerformanceNormal" Count="2" ChildCount="1" Show="Y" Refine="H">   
   <COL Page="1" Image="" ProductID="3">Western Europe</COL>  
   <COL Page="1" Image="" ProductID="5">Western Europe</COL>
   <COL Page="1" Image="" ProductID="24">Central and Eastern Europe</COL>   
</ROW>

</ROOT>
--------------------------------
and parse this xml file like:

XMLFileParsingScreen.java :

public class XMLFileParsingScreen extends MainScreen implements FieldChangeListener
{
    private ButtonField domparser;
    public XMLFileParsingScreen() {
        createGUI();
    }
    private void createGUI(){
        domparser=new ButtonField("DOM Parser");
        domparser.setChangeListener(this);
        add(domparser);       
    }
    public void fieldChanged(Field field, int context)
    {
        if(field==domparser)
        {
            ReadAndPrintXMLfileUsingDOM();
        }      
    }
    public void ReadAndPrintXMLfileUsingDOM()
    {

        try {
              DocumentBuilderFactory docBuilderFactory = DocumentBuilderFactory.newInstance();
              DocumentBuilder docBuilder = docBuilderFactory.newDocumentBuilder();
              InputStream rStream = null;
                  try
                  {
                      rStream = getClass().getResourceAsStream("sample.xml");
                  }catch (Exception e)
                  {
                      System.out.println(e.getMessage());
                  }
                  Document doc = docBuilder.parse(rStream);
                  doc.getDocumentElement ().normalize ();
                  System.out.println ("Root element of the doc is " +
                  doc.getDocumentElement().getNodeName());
                NodeList listOfPersons = doc.getElementsByTagName("ROW");
                int totalPersons = listOfPersons.getLength();
                System.out.println("Total no of people : " + totalPersons);
                for(int s=0; s<listOfPersons.getLength() ; s++)
                {
                    Node firstPersonNode = listOfPersons.item(s);
                    Element firstPersonElement = (Element)firstPersonNode;
                    System.out.println( "==============Name value = " + firstPersonElement.getAttribute( "Name" ) );
                    System.out.println( "===============CheckBox value = " + firstPersonElement.getAttribute( "CheckBox" ));
                    System.out.println( "==============Type value = " + firstPersonElement.getAttribute( "Type" ));
                    System.out.println( "==============Count value = " + firstPersonElement.getAttribute( "Count" ));
                    System.out.println( "==============ChildCount value = " + firstPersonElement.getAttribute( "ChildCount" ));
                    System.out.println( "==============Show value = " + firstPersonElement.getAttribute( "Show" ));
                    System.out.println( "==============Refine value = " + firstPersonElement.getAttribute( "Refine" ));
                    NodeList firstNameList = firstPersonElement.getElementsByTagName("COL");
                   
                    int child_lng=firstNameList.getLength();
                    for(int j=0;j<child_lng;j++)
                    {
                            Node innernode=firstNameList.item(j);
                             Element firstPersonElement1 = (Element)innernode;
//                             NamedNodeMap attributes = innernode.getAttributes();
                               Node value=firstNameList.item(j).getChildNodes().item(0);
                             System.out.println( "==============Page value = " + firstPersonElement1.getAttribute( "Page" ) );
                             System.out.println( "==============Image value = " + firstPersonElement1.getAttribute( "Image" ) );
                             System.out.println( "==============ProductID value = " + firstPersonElement1.getAttribute( "ProductID" ) );
                             System.out.println("+++++++++++++++Node Value : " +value.getNodeValue());
                          
                    }
                 }
          }catch (SAXParseException err)
          {
              System.out.println ("** Parsing error" + ", line "
               + err.getLineNumber () + ", uri " + err.getSystemId ());
              System.out.println(" " + err.getMessage ());
          }catch (SAXException e)
          {
              Exception x = e.getException ();
              ((x == null) ? e : x).printStackTrace ();
          }catch (Exception t)
          {
              System.out.println(t.getMessage());
          }
    }
}


any doubts feel free to mail on alishaik001@gmail.com