Google+

Thursday, June 30, 2011

SmartPhones by Sachin Shelke ™: How to Create ProgressBar in Android using XML

SmartPhones by Sachin Shelke ™: How to Create ProgressBar in Android using XML: "How to use progress bar using Layout.xml file follow the steps.... Step : 1 - Create XML with as given below <Line..."

JSON Data Parsing in Android - Part - 1

We are discussing the following points to Parse JSON data in android
  • Why JSON Format?
  • Syntax & Structure of JSON Format
  • Relation Between Android  & JSON
  • Steps to Parse JSON data in Android
  • Sample Application
 Why JSON [JavaScript Object Notation] Format?
  • Lightweight data-interchangeable format
  • Text format that is completely language independent and easy to read
  • JSON is
    - A collection of name/value pairs. In various languages, this is realized as an object, record, struct, dictionary, hash table, keyed list, Key-Value Pair , or associative array.
    - An ordered list of values. In most languages, this is realized as an array, vector, list, or sequence. 


 Syntax & Structure of JSON Format
  • With Normal Object Collection
    Object_Name : {Key1 : Value1 , Key2 : Value2 , Key3 : Value3}

    Example =

    {
          "FileMenu": {
                                   "subMenu":"New","details":"Create New File",
                                   "subMenu":"Open","details":"Open Existing File",
                                   "subMenu":"Save","details":"Save File"
                             }
    }
  • With Array Based Object Collection
    Object_Name : [
                                   {Key1_1 : Value1_1 , Key1_2 : Value1_2 , Key1_3 : Value1_3},
                                   {Key2_1 : Value2_1 , Key2_2 : Value2_2 , Key2_3 : Value2_3}
                          ]

    Example =
    {
          "Menu": {
                             "menu":"File",
                             "value":"File",
                             "popup":{
                                                    "MenuItem":
                                                    [
                                                                 {"subMenu":"New","details":"Create New File"},                                                                            {"subMenu":"Open","details":"Open Existing File"},
                                                                 {"subMenu":"Save","details":"Save File"}
                                                     ]
                                          }
                        }
    }

Relation Between Android & JSON

Android already have inbuild JSON libraries. The Following class are used to parse the JSON Object.

    JSONArray          A JSONArray is an ordered sequence of values.
    JSONObject        A JSONObject is an unordered collection of name/value pairs.
    JSONStringer     JSONStringer provides a quick and convenient way of producing JSON text.
    JSONTokener     A JSONTokener takes a source string and extracts characters and tokens from it.




Steps to Parse JSON Data in Android






1. Create a JSON Object and Convert JSONString to JSON Object
    JSONObject jsonObject = new JSONObject(jsonDataString);
   
2. Create a Key based JSONObject.
    JSONObject menuObject = jsonObject.getJSONObject("Menu");

3. Get the Value
    Log.d("JSON", "Menu = " + menuObject.getString("menu"));
    Log.d("JSON",
"Value = " + menuObject.getString("value"));





Android JSON  Example




public class MainActivity extends Activity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
         String myJsonContent = "{\"Menu\": {\"menu\":\"File\",\"value\":\"File\",\"popup\":{\"MenuItem\":[{\"subMenu\":\"New\",\"details\":\"Create New File\"},{\"subMenu\":\"Open\",\"details\":\"Open Existing File\"},{\"subMenu\":\"Save\",\"details\":\"Save File\"}]}}}";
        sampleJsonParser(myJsonContent);
    }

    public void sampleJsonParser(String jsonString) {
        try {
            JSONObject jObject = new JSONObject(jsonString);
            JSONObject menuObject = jObject.getJSONObject("Menu");
            Log.d(
"JSON", "Menu = " +menuObject.getString("menu"));
            Log.d(
"JSON", "Value = " + menuObject.getString("value"));
            JSONObject popupObject = menuObject.getJSONObject("popup");
            JSONArray menuitemArray = popupObject.getJSONArray("MenuItem");
            for (int i = 0; i < 3; i++) {
                Log.d("JSON",
"Name = " + menuitemArray.getJSONObject(i).getString("subMenu")
                        .toString());
                Log.d("JSON",
"Value = " +menuitemArray.getJSONObject(i).getString(
                        "details").toString());
            }
       } catch (JSONException e) {
            e.printStackTrace();
        }
    }
}

Download Source Code & SVN Repository



Check Your Log with  Tag JSON

Enjoy The Code................




Don't Forget to Leave Comments....

Wednesday, June 29, 2011

How to Create ProgressBar in Android using XML

How to use progress bar using Layout.xml file
follow the steps....
Step : 1 -
Create XML with <ProgressBar .....> as given below


<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical" android:layout_width="fill_parent"
    android:layout_height="fill_parent">
    <TextView android:layout_width="fill_parent"
        android:layout_height="wrap_content" android:text="My Progress Bar Demo" />

    <ProgressBar android:id="@+id/progressbar"
        android:layout_width="wrap_content" android:layout_height="wrap_content"  android:layout_gravity="center" style="?android:attr/progressBarStyleLarge"/>

</LinearLayout>



Note: You can change the ProgressBar Style to 
  • android:progressBarStyle
  • android:progressBarStyleHorizontal
  • android:progressBarStyleLarge
  • android:progressBarStyleSmall
See the screen Show Below


Step : 2 -

Create an Activity to show progress bar on Screen

public class MyProgressBar extends Activity 
{    
    private static int progress = 0;
    private ProgressBar progressBar;
    private int progressStatus = 0;
    private Handler handler = new Handler();
 
    @Override
    public void onCreate(Bundle savedInstanceState) 
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.basicviews);
 
        progressBar = (ProgressBar) findViewById(R.id.progressbar);
 
        //---do some work in background thread---
        new Thread(new Runnable() 
        {
            public void run() 
            {
                //---do some work here---
                while (progressStatus < 10) 
                {
                    progressStatus = taskToDo();
                }
 
                //---hides the progress bar---
                handler.post(new Runnable() 
                {
                    public void run() 
                    {
                        progressBar.setVisibility(View.GONE);
                    }
                });
            }    
 
            //---do some long lasting work here---
            private int taskToDo() 
            {
                try {
                    Thread.sleep(500);
                } catch (InterruptedException e) 
                {
                    e.printStackTrace();
                }
                return ++progress;
            }
 
        }).start();  
    }
}












Thursday, June 9, 2011

How To Remove Extra Spaces From String


public static String LRTrim(String str) {

        str = str.replaceAll("  ", " ");         // replace all double spaces with single Space
        return str.trim();   // remove all LEFT side & Right Side Extra white spaces from the string
    }

Wednesday, June 8, 2011

Sending ThirdParty Email in Android

Hi All,
This is first step to send third party email from Android Application.


There are total 5 steps to create to send email application in android.
Please Compile program after complete all steps.
Yout have to add some external Library into Application. Find the Step 5 For the Same.


Step : 1 Write the Main Activity where you want to send email.


final Button send = (Button) this.findViewById(R.id.sentBtn);
send.setOnClickListener(new View.OnClickListener()
{
    public void onClick(View view)
    {
        //this is use to send email from which account
        GMailSender sender = new GMailSender("<Gmail UserName>", "<Ur PASSWORD>");
        try
        {
            // Add your Data like subject , message, senderEmail and email to
            sender.sendMail("Demo Transaction Receipt", "This is Demo Transaction email",
                            "<Sender Email Address>", "<email TO>");
        } catch (Exception e)
        {
            Log.e("SendMail", e.getMessage(), e);
        }
    }
});




Step : 2 --> Write the GMailSender where you have set you email sender setting. we are using Google setting  as we are sending email using Gmail account







//import necessary packages

public class GMailSender extends javax.mail.Authenticator
{
    private String mailhost = "smtp.gmail.com";
    private String user;
    private String password;
    private Session session;

    static
    {
          //you have to create JSSEProvider() please find the Class Below

          Security.addProvider(new JSSEProvider());
    }

    public GMailSender(String user, String password)
    {
        this.user = user;
        this.password = password;

        Properties props = new Properties();
        props.setProperty("mail.transport.protocol", "smtp");
        props.setProperty("mail.host", mailhost);
        props.put("mail.smtp.auth", "true");
        props.put("mail.smtp.port", "465");
        props.put("mail.smtp.socketFactory.port", "465");
        props.put("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory");
        props.put("mail.smtp.socketFactory.fallback", "false");
        props.setProperty("mail.smtp.quitwait", "false");

        session = Session.getDefaultInstance(props, this);
    }

    protected PasswordAuthentication getPasswordAuthentication()
    {
        return new PasswordAuthentication(user, password);
    }

    public synchronized void sendMail(String subject, String body, String sender, String recipients) throws Exception
    {
        try
        {
            MimeMessage message = new MimeMessage(session);
            DataHandler handler = new DataHandler(new ByteArrayDataSource(body.getBytes(), "text/html"));
            message.setSender(new InternetAddress(sender));
            message.setSubject("Demo Transaction Receipt");
            message.setDataHandler(handler);
            if (recipients.indexOf(',') > 0)
                message.setRecipients(Message.RecipientType.TO, InternetAddress.parse(recipients));
            else
                message.setRecipient(Message.RecipientType.TO, new InternetAddress(recipients));
            Transport.send(message);
        } catch (MessagingException e)
        {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (Exception e)
        {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }

    public class ByteArrayDataSource implements DataSource
    {
        private byte[] data;
        private String type;

        public ByteArrayDataSource(byte[] data, String type)
        {
            super();
            this.data = data;
            this.type = type;
        }

        public ByteArrayDataSource(byte[] data)
        {
            super();
            this.data = data;
        }

        public void setType(String type)
        {
            this.type = type;
        }

        public String getContentType()
        {
            if (type == null)
                return "application/octet-stream";
            else
                return type;
        }

        public InputStream getInputStream() throws IOException
        {
            return new ByteArrayInputStream(data);
        }

        public String getName()
        {
            return "ByteArrayDataSource";
        }

        public OutputStream getOutputStream() throws IOException
        {
            throw new IOException("Not Supported");
        }
    }
}





Step : 3 Write the JSSEProvider for Security Setting



public final class JSSEProvider extends Provider
{

    public JSSEProvider()
    {
        super("HarmonyJSSE", 1.0, "Harmony JSSE Provider");
        AccessController.doPrivileged(new java.security.PrivilegedAction<Void>()
        {
            public Void run()
            {
                put("SSLContext.TLS", "org.apache.harmony.xnet.provider.jsse.SSLContextImpl");
                put("Alg.Alias.SSLContext.TLSv1", "TLS");
                put("KeyManagerFactory.X509", "org.apache.harmony.xnet.provider.jsse.KeyManagerFactoryImpl");
                put("TrustManagerFactory.X509", "org.apache.harmony.xnet.provider.jsse.TrustManagerFactoryImpl");
                return null;
            }
        });
    }
}




Step : 4 Setting Internet Permission in AndroidManifest.xml

 As We know, to send email we required Internet Connection and Permission to the application.
Add the following permission in AndroidMenifest.xml above <application Tag......></application>


<uses-permission android:name="android.permission.INTERNET"></uses-permission>




Step : 4 Adding External Library

To Send email we need to Add some External Library into an Application
Download the Following Libraries and follow the Steps


Activation.jar
Additionnal.jar
Mail.jar
 

 

How To add External Libraries in Eclipse Project
  1. Open Package Explorer
  2. Write Click on the Project
  3. Mouse Over on "Build Path" --> and select "Add External Archives"
  4. Select all the Libraries which you want to add. Here we are adding above libraries.
  5. Congratulation.
  
Now You Can Compile your project and send email.




Don't Forget to Leave Comments 
Google+