Sunday, 7 December 2014

Json Parsing in android


Here I am trying to implement jsonParsing in a Simple way using AsynTask


package com.technomobs.backdoing;

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.StreamCorruptedException;
import java.io.UnsupportedEncodingException;
import java.net.UnknownHostException;
import java.util.ArrayList;

import org.apache.http.HttpResponse;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.conn.ConnectTimeoutException;
import org.apache.http.entity.StringEntity;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.util.EntityUtils;
import org.json.JSONArray;
import org.json.JSONObject;

import android.app.ProgressDialog;
import android.content.Context;
import android.os.AsyncTask;
import android.util.Log;

import com.technomobs.Interfacez.NewsLoadingCompleteInterface;
import com.technomobs.Interfacez.PhotoLoadingCompleteInterface;
import com.technomobs.Interfacez.VideoLoadingComplateInterface;
import com.technomobs.Models.HomePageModel;
import com.technomobs.Utils.Constantz;
import com.technomobs.menaproperties.R;

public class TestimonilLoading extends AsyncTask<String, Void, Object> {
ProgressDialog dialog;
ArrayList<HomePageModel> ArrhomePageModel;
ArrayList<HomePageModel> ArrhomePageModelsnd;
ArrayList<HomePageModel> ArrhomePageModelFinal;

private String errorMessage=null;
private Context context;
JSONArray jsonArraydata; String result;
JSONArray jsonArrayres;
VideoLoadingComplateInterface callback;
HomePageModel homePageModel;
JSONObject jsobj;
JSONObject jsonObject ;
boolean needloading;
public TestimonilLoading(Context context, VideoLoadingComplateInterface promo) {
this.callback=promo;
this.context=context;

Log.e("inside","gallery");
// TODO Auto-generated constructor stub
}
@Override
protected void onPreExecute() {
// TODO Auto-generated method stub
super.onPreExecute();
this.dialog=ProgressDialog.show(context, "", "");
this.dialog.setContentView(R.layout.custom_progressbarlayout);
// this.dialog.setMessage("Please wait..");
    this.dialog.show();
 
    this.dialog.setCancelable(false);


}
@Override
protected Object doInBackground(String... params) {

ArrhomePageModelFinal=new ArrayList<HomePageModel>();


    //First time start 0 else:10


 
    Log.e("inside", "First");
//    
try{

HttpClient clientTech = new DefaultHttpClient();
HttpPost request = new HttpPost(Constantz.getRows);




   String json = "";
  // Log.e("inside", "json"+params[0]+params[1]+params[2]+params[3]);
   // 3. build jsonObject
   if(params[0].equalsIgnoreCase("First")){
    Log.e("1nd", "1nd");
    jsonObject = new JSONObject();
   jsonObject.accumulate("param", params[1]);
   jsonObject.accumulate("start", 0);
   jsonObject.accumulate("noofrows", 10);



   }//first
   
   else{
    Log.e("2nd", "2nd");
    //2nd time start: from saved data, else:10
    jsonObject = new JSONObject();
    jsonObject.accumulate("param", params[1]);
   jsonObject.accumulate("start",  params[2]);
   jsonObject.accumulate("noofrows", 10);
 
   }
   // 4. convert JSONObject to JSON to String
   json = jsonObject.toString();
 
   Log.e("inside", "json"+json);
 
// 5. set json to StringEntity
   StringEntity se = new StringEntity(json);
   Log.e("inside", "se"+se);
// 6. set httpPost Entity
   request.setEntity(se);
   // 7. Set some headers to inform server about the type of the content
   request.setHeader("Accept", "application/json");
   request.setHeader("Content-type", "application/json");
 
// request.setEntity(new StringEntity(toPass) );
HttpResponse responseTech = clientTech.execute(request);

Log.e("test","Login:"+responseTech);
String jsonResponse = EntityUtils.toString(responseTech.getEntity());

Log.e("jsonResponse","jsonResponse:"+jsonResponse);
JSONObject reader = new JSONObject(jsonResponse);
Log.e("reader","reader:"+reader);
JSONObject sys  = reader.getJSONObject("response");
Log.e("response","response:"+sys);
jsonArraydata=sys.getJSONArray("data");

ArrhomePageModel=new ArrayList<HomePageModel>();
   if(params[0].equalsIgnoreCase("First")){
   
    Log.e("First", "First");
    needloading=true;
for(int i=0;i<jsonArraydata.length();i++)
{
jsobj=jsonArraydata.getJSONObject(i);
homePageModel=new HomePageModel();
homePageModel.id=jsobj.optString("id");
homePageModel.date_added=jsobj.optString("date_added");
homePageModel.agent=jsobj.optString("agent");
homePageModel.testi=jsobj.optString("testi");
homePageModel.name=jsobj.optString("name");
homePageModel.company=jsobj.optString("company");



ArrhomePageModel.add(homePageModel);


}//for
//
//jsonArrayres reading
   }
   //2nd time
   else{
Log.e("2nd","2nd:");

    ArrhomePageModelsnd=new ArrayList<HomePageModel>();

for(int i=0;i<jsonArraydata.length();i++)
{
jsobj=jsonArraydata.getJSONObject(i);
homePageModel=new HomePageModel();
homePageModel.id=jsobj.optString("id");
homePageModel.date_added=jsobj.optString("date_added");
homePageModel.agent=jsobj.optString("agent");
homePageModel.testi=jsobj.optString("testi");
homePageModel.name=jsobj.optString("name");
homePageModel.company=jsobj.optString("company");



ArrhomePageModelsnd.add(homePageModel);

}//for
//
if(jsonArraydata.length()==0)
{
needloading=false;
Log.e("3needloading", "needloading"+needloading);
}
else{
needloading=true;
}
FileInputStream fis;
try {
fis = context.openFileInput(Constantz.MENA_DATA_OFF+params[1]);
ObjectInputStream is = new ObjectInputStream(fis);

ArrhomePageModel = (ArrayList<HomePageModel>) is.readObject();
Log.e("2nd","2nd:"+ArrhomePageModel.size());

} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (StreamCorruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
ArrhomePageModel.addAll(ArrhomePageModelsnd);
Log.e("2nd","2nd: 2nd"+ArrhomePageModel.size());

   }//else

 

   }//try
 catch (UnsupportedEncodingException exception) {
errorMessage = exception.getMessage();
} catch (ClientProtocolException e) {
errorMessage = e.getMessage();
// e.printStackTrace();
} catch (ConnectTimeoutException e) {
errorMessage = "Time Out!";
//e.printStackTrace();
} catch (UnknownHostException e) {
errorMessage = "No Connection Available!";
//e.printStackTrace();
} catch (Exception e) {
errorMessage = "No Connection Available!";
//e.printStackTrace();
}

if (errorMessage == null) {
Log.e("errorMessage", "errorMessage 7"+errorMessage);
try {
FileOutputStream fos;
fos = context.openFileOutput(Constantz.MENA_DATA_OFF+params[1], Context.MODE_PRIVATE);
ObjectOutputStream os = new ObjectOutputStream(fos);
os.writeObject(ArrhomePageModel);
os.close();
} catch (FileNotFoundException e) {
errorMessage = e.getMessage();
} catch (IOException e) {
errorMessage = e.getMessage();
}
}
else
{
Log.e("param", "param 8");
FileInputStream fis;
try {
fis = context.openFileInput(Constantz.MENA_DATA_OFF+params[1]);
ObjectInputStream is = new ObjectInputStream(fis);

ArrhomePageModel = (ArrayList<HomePageModel>) is.readObject();
Log.e("ArrhomePageModel","ArrhomePageModel final:"+ArrhomePageModel.size());

} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (StreamCorruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

}
return ArrhomePageModel;

}
@Override
protected void onPostExecute(Object result) {
if (dialog.isShowing()) {
          dialog.dismiss();
      }

callback.onVideoLoadingComplete(errorMessage, result,needloading);

}
}


//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

package com.technomobs.backdoing;

import java.util.HashMap;

import org.apache.http.HttpResponse;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.entity.StringEntity;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.util.EntityUtils;
import org.json.JSONArray;
import org.json.JSONObject;

import android.app.ProgressDialog;
import android.content.Context;
import android.os.AsyncTask;
import android.util.Log;

import com.technomobs.Interfacez.RegistrationCompleteInterface;
import com.technomobs.Interfacez.TestimonilCompleteInterface;
import com.technomobs.Utils.Constantz;

public class TestimonilFormSendingLoading extends AsyncTask<String, Void, String> {
ProgressDialog dialog;

//ArrayList<QuestModel> questions;
HashMap<String, String> promoHash;
private String errorMessage=null;
private Context context;
static JSONArray jsonArray; String result;
TestimonilCompleteInterface callback;
String MobileUserID;
public TestimonilFormSendingLoading(Context context, TestimonilCompleteInterface promo) {
this.callback=promo;
this.context=context;

Log.e("inside","gallery");
// TODO Auto-generated constructor stub
}
@Override
protected void onPreExecute() {
// TODO Auto-generated method stub
super.onPreExecute();
dialog= new ProgressDialog(context);
this.dialog.setMessage("Please wait..");
    this.dialog.show();
    this.dialog.setCancelable(false);
    Log.e("inside", "gallery");


}
@Override
protected String doInBackground(String... params) {

http://www.mena-properties.com/mena_app/mobilemanager/uploadData/


try{

HttpClient httpclient  = new DefaultHttpClient();
HttpPost httppost = new HttpPost(Constantz.UpLoadData);

    String json = "";
   // Log.e("inside", "json"+params[0]+params[1]+params[2]+params[3]);
    // 3. build jsonObject
    JSONObject jsonObject = new JSONObject();
    jsonObject.accumulate("p", "addtestimonial");
    jsonObject.accumulate("TestimonialUserName", ""+params[0]);
    jsonObject.accumulate("TestimonialPlace", ""+params[1]);
    jsonObject.accumulate("TestimonialComments", ""+params[2]);
    // 4. convert JSONObject to JSON to String
    json = jsonObject.toString();
    StringEntity se = new StringEntity(json);
    httppost.setEntity(se);
    httppost.setHeader("Accept", "application/json");
    httppost.setHeader("Content-type", "application/json");
HttpResponse responseTech = httpclient.execute(httppost);
//    
String jsonResponse = EntityUtils.toString(responseTech.getEntity());

Log.e("test","Login:"+jsonResponse);
JSONObject jobj=new JSONObject(jsonResponse);

JSONObject jsonArray=jobj.getJSONObject("response");

result=jsonArray.optString("status");

       if(result.equalsIgnoreCase("success"))
       {
      result="Testimonials added successfully";
           errorMessage="" ;

       }
       else{
      result="No connection available";
      errorMessage="No connection available" ;
       }

}
catch(Exception e)
{
            errorMessage="No connection available" ;
        result="No connection available";

}







return result;

}
@Override
protected void onPostExecute(String result) {
if (dialog.isShowing()) {
          dialog.dismiss();
      }


callback.onTestimonilCompleteInterface(errorMessage, result);

}
}


Wednesday, 24 September 2014

How to Make Android Map Scrollable Inside a ScrollView Layout

package com.technomobs.Utils;

import android.content.Context;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.MotionEvent;
import android.view.View;
import android.view.ViewGroup;
import android.widget.FrameLayout;

import com.google.android.gms.maps.SupportMapFragment;

public class MyMapFragment extends SupportMapFragment {
private OnTouchListener mListener;

    @Override
    public View onCreateView(LayoutInflater layoutInflater, ViewGroup viewGroup, Bundle savedInstance) {
        View layout = super.onCreateView(layoutInflater, viewGroup, savedInstance);

        TouchableWrapper frameLayout = new TouchableWrapper(getActivity());

        frameLayout.setBackgroundColor(getResources().getColor(android.R.color.transparent));

        ((ViewGroup) layout).addView(frameLayout,
                new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT));

        return layout;
    }

    public void setListener(OnTouchListener listener) {
    mListener = listener;
    }

    public interface OnTouchListener {
    public abstract void onTouch();
    }

    public class TouchableWrapper extends FrameLayout {

      public TouchableWrapper(Context context) {
        super(context);
      }

      @Override
      public boolean dispatchTouchEvent(MotionEvent event) {
        switch (event.getAction()) {
          case MotionEvent.ACTION_DOWN:
         mListener.onTouch();
                break;
          case MotionEvent.ACTION_UP:
         mListener.onTouch();
                break;
        }
        return super.dispatchTouchEvent(event);
      }
    }
}

...............................................

Then  create layout using following code


<?xml version="1.0" encoding="UTF-8"?>
<ScrollView
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/sv_container"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
    <!-- other child views //-->
     <fragment
        android:tag="fragment_map"
       android:id="@+id/fragment_map"
       android:layout_width="match_parent"
       android:layout_height="175dp"
       android:layout_marginTop="@dimen/activity_horizontal_margin"
       class="com.technomobs.Utils.MyMapFragment"/>
</ScrollView>

.................................


Inside map activity that uses the map,



package com.technomobs.main;
import com.technomobs.Utils.MyMapFragment ;
import com.google.android.gms.maps.GoogleMap;
import android.widget.ScrollView;

public class MyMapActivty extends MapActivity {
    private ScrollView mScrollView;
    private GoogleMap mMap;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        setContentView(R.layout.fragment_my_map);

        mMap = ((MyMapFragment ) getSupportFragmentManager().findFragmentById(R.id.fragment_map)).getMap();
        mScrollView = (ScrollView) findViewById(R.id.sv_container);

       ((MyMapFragment ) getSupportFragmentManager().findFragmentById(R.id.fragment_map)).setListener(new WorkaroundMapFragment.OnTouchListener() {
          @Override
          public void onTouch() {
              mScrollView.requestDisallowInterceptTouchEvent(true);
          }
     });
   }
}

Sunday, 21 September 2014

Check EditText View Empty or Not in Android

public class Util
{


public static boolean isEmpty(EditText etText) {
   if (etText.getText().toString().trim().length() > 0) {
       return false;
   } else {
       return true;
   }
}


}


..........................


public class MainActivity
  extends Activity
{

EditText sample;

@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_createaccount);
sample=(EditText)findViewById(R.id.sample);
if(Util.emailValidator(sample)){
                                                // edittext box empty
                                                      }
                                                        else{



                                                         }

Hide Keyboard in android

public class Util
{


public static void onHideKeyboard(Activity context)
{
try{
InputMethodManager imm = (InputMethodManager) context
           .getSystemService(Context.INPUT_METHOD_SERVICE);

   if (imm.isAcceptingText()) {
     
    imm.hideSoftInputFromWindow(context.getCurrentFocus().getWindowToken(), 0);
   } else {
       //Log.e("Software Keyboard was not shown","no");
   }
}catch(Exception e)
{

}
}

}


..........................


Call in Activity

String name="abcd@gmail.com";

public class MainActivity
  extends Activity
{
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_createaccount);


//Hide Keyboard in android
Util.onHideKeyboard(MainActivity.this);


}

}

email Validation in Android

public class Util
{


public static boolean emailValidator(String email)
{
   Pattern pattern;
   Matcher matcher;
   final String EMAIL_PATTERN = "^[_A-Za-z0-9-]+(\\.[_A-Za-z0-9-]+)*@[A-Za-z0-9]+(\\.[A-Za-z0-9]+)*(\\.[A-Za-z]{2,})$";
   pattern = Pattern.compile(EMAIL_PATTERN);
   matcher = pattern.matcher(email);
   return matcher.matches();
}


}


..........................


Call in Activity

public class MainActivity
  extends Activity
{

String emailSample="abcd@gmail.com"
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
if(Util.emailValidator(emailSample)){
                                                // email format is correct
                                                      }
                                                        else{

                                                         }


}

}


Set Font in android

publi class Util{
public static void setFont(TextView textview, String font) {

Typeface myTypeface = Typeface.createFromAsset(textview.getContext().getAssets(), font);
textview.setTypeface(myTypeface);

}

}
........................................................

In side Activity Class the following code

put HelveticaNeue-Medium.ttf font type into assets

assets->create folder fonts ->HelveticaNeue-Medium.ttf


TextView name=(TextView)findViewById(R.id.name);
//set font
Util.setFont(name, "fonts/HelveticaNeue-Medium.ttf");

Network Availability check in Android

public static boolean isNetworkAvailable(Context act) {
        ConnectivityManager connectivityManager
              = (ConnectivityManager) act.getSystemService(Context.CONNECTIVITY_SERVICE);
        NetworkInfo activeNetworkInfo = connectivityManager.getActiveNetworkInfo();
        return activeNetworkInfo != null;
    }

if(isNetworkAvailable(MainActivity.this)
{
//connection avilable
}
else{
//no connection

}