Wednesday 29 June 2016

Android Camera

Camera is mainly used to capture picture and video. We can control the camera by using methods of camera api.




activity_main.xml
---------------------------
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
   
xmlns:tools="http://schemas.android.com/tools"
   
android:layout_width="match_parent"
   
android:layout_height="match_parent"
   
android:orientation="vertical"
   
tools:context="com.sgp.anil.camera.MainActivity">

    <
Button
       
android:id="@+id/button_camera"
       
android:layout_width="wrap_content"
       
android:layout_height="wrap_content"
       
android:layout_gravity="center_horizontal"
       
android:text="Camera" />

    <
ImageView
       
android:id="@+id/display_imageView"
       
android:layout_width="350dp"
       
android:layout_height="350dp"
       
android:layout_gravity="center" />
</
LinearLayout>

MainActivity.Java
----------------------
package com.sgp.anil.camera;

import android.Manifest;
import android.content.Intent;import android.graphics.Bitmap;
import android.os.Bundle;
import android.provider.MediaStore;
import android.support.annotation.NonNull;
import android.support.v4.app.ActivityCompat;
import android.support.v4.content.ContextCompat;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.Button;
import android.widget.ImageView;

public class MainActivity extends AppCompatActivity {
    Button
camerabtn;
    ImageView
imageView;
   
int REQUEST_CAMERA = 1;

   
@Override
   
protected void onCreate(Bundle savedInstanceState) {
       
super.onCreate(savedInstanceState);
        setContentView(R.layout.
activity_main);
       
camerabtn = (Button) findViewById(R.id.button_camera);
       
imageView = (ImageView) findViewById(R.id.display_imageView);
       
camerabtn.setOnClickListener(new View.OnClickListener() {
            
@Override
           
public void onClick(View v) {
                

                    Intent intent =
new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
                    startActivityForResult(intent,
0);
               

            }
        });
    }

   
@Override
   
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        Bitmap bp = (Bitmap) data.getExtras().get(
"data");
        
imageView.setImageBitmap(bp);
       
super.onActivityResult(requestCode, resultCode, data);
    }

   

    }
}



Monday 27 June 2016

Checking internet connection in android





If you are developing an Android app you may already fetching information from internet. While doing so there is a chance that internet connection is not available on users handset. Hence its always a good idea to check the network state before performing any task that requires internet connection.
You might also want to check what kind of internet connection is available in handset. For example is wifi currently enabled? or is mobile data network is connected
Checking internet connection in android
-------------------------------------------
activity_main.xml
-------------------------
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
   
xmlns:tools="http://schemas.android.com/tools"
   
android:layout_width="match_parent"
   
android:layout_height="match_parent"
   
android:orientation="vertical"
   
android:gravity="center"
   
tools:context="com.sgp.anil.checkinginternetconnection.MainActivity">


    <
Button
       
android:layout_width="wrap_content"
       
android:layout_height="wrap_content"
       
android:text="Google"
       
android:id="@+id/button"
       
android:layout_gravity="center_horizontal" />
</
LinearLayout>
InternetCheckClass:
---------------------
package com.sgp.anil.checkinginternetconnection;

import android.content.Context;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
/**
 * Created by Anil on 27-06-2016.
 */

public class InternetCheckingClass {
   
private Context _context;

   
public InternetCheckingClass(Context context) {
       
this._context = context;
    }

   
public boolean isConnectingToInternet() {
        ConnectivityManager connectivity = (ConnectivityManager)
_context.getSystemService(Context.CONNECTIVITY_SERVICE);
       
if (connectivity != null) {
            NetworkInfo[] info = connectivity.getAllNetworkInfo();
           
if (info != null)
               
for (int i = 0; i < info.length; i++)
                   
if (info[i].getState() == NetworkInfo.State.CONNECTED) {
                       
return true;
                    }

        }
       
return false;
    }

}

MainActivity.Java
--------------------------
package com.sgp.anil.checkinginternetconnection;

import android.content.Intent;
import android.net.Uri;
import android.support.design.widget.Snackbar;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;

public class MainActivity extends AppCompatActivity {
    Button
googlebtn;

   
@Override
   
protected void onCreate(Bundle savedInstanceState) {
       
super.onCreate(savedInstanceState);
        setContentView(R.layout.
activity_main);
       
googlebtn=(Button)findViewById(R.id.button);
       
googlebtn.setOnClickListener(new View.OnClickListener() {
           
@Override
           
public void onClick(View v) {
               
if(new InternetCheckingClass(getApplicationContext()).isConnectingToInternet()){
                    startActivity(
new Intent(Intent.ACTION_VIEW, Uri.parse("http://www.google.com")));

                }
else {
                    Snackbar snackbar=Snackbar.make(v,
"Network is Not Connected Check Your Interne tConnection",Snackbar.LENGTH_LONG);
                    snackbar.show();
                }
            }
        });
    }
}

goto AndroidManifest.xml give Permissions
<uses-permission android:name="android.permission.INTERNET"/>
 <
uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>











Thursday 9 June 2016

Read Phone Contacts Using ContentProvider in Android

Read Phone Contacts using ContentProvider in Android.

Contact Name,Multiple Phone numbers,Multiple Emails and Contact Image




ContactDetails.java:
package com.jc.practice.model; import android.net.Uri; import java.util.ArrayList;
public class ContactDetails {    String name;     ArrayList<String> no;    ArrayList<String> email;     Uri uri;     public String getName() {       return name;     }     public void setName(String name) {         this.name = name;     }     public ArrayList<String> getNo() {         return no;     }     public void setNo(ArrayList<String> no) {         this.no = no;     }     public ArrayList<String> getEmail() {         return email;     }     public void setEmail(ArrayList<String> email) {         this.email = email;     }     public Uri getUri() {         return uri;     }    public void setUri(Uri uri) {         this.uri = uri;     } }
contacts_li.xml:
<?xmlversion="1.0" encoding="utf-8"?>
<android.support.v7.widget.CardView
xmlns:android="http://schemas.android.com/apk/res/android"     xmlns:card_view="http://schemas.android.com/apk/res-auto"     android:layout_width="match_parent"     android:layout_height="wrap_content"     android:orientation="horizontal"     card_view:cardCornerRadius="5dp"     card_view:cardElevation="2dp"     card_view:cardUseCompatPadding="true">
   <LinearLayout         android:layout_width="match_parent"         android:layout_height="match_parent"         android:background="#93a617"         android:orientation="vertical">   <LinearLayout             android:layout_width="match_parent"             android:layout_height="wrap_content"             android:orientation="horizontal"> <ImageView                 android:id="@+id/imageViewContact"                 android:layout_width="50dp"                android:layout_height="50dp"                 android:src="@drawable/c" />           <LinearLayout                 android:layout_width="match_parent"                 android:layout_height="wrap_content"                 android:orientation="vertical">                 <TextView                     android:id="@+id/tvName"                     android:layout_width="match_parent"                     android:layout_height="wrap_content"                     android:layout_marginTop="5dp"                     android:text="Name"                     android:textColor="#bc3535"                     android:textSize="16sp" />                 <TextView                     android:id="@+id/tvNo"                     android:layout_width="match_parent"                     android:layout_height="wrap_content"                     android:layout_marginBottom="5dp"                     android:text="No"                     android:textColor="#600fb1"                     android:textSize="16sp" />             </LinearLayout>         </LinearLayout> <TextView             android:id="@+id/tvEmail"             android:layout_width="match_parent"             android:layout_height="wrap_content"             android:background="#c57b7a7a"             android:gravity="center"             android:text="Email"             android:textColor="#ffffff" />     </LinearLayout> </android.support.v7.widget.CardView>
LoaderRcvAdapter.java:         package com.jc.practice.adapter;        import android.content.Context;         import android.net.Uri;        import android.support.v7.widget.RecyclerView;         import android.view.LayoutInflater;         import android.view.View;        import android.view.ViewGroup;         import android.widget.ImageView;         import android.widget.TextView;         import com.bumptech.glide.DrawableRequestBuilder;         import com.bumptech.glide.Glide;         import com.bumptech.glide.load.engine.DiskCacheStrategy;         import com.jc.practice.R;         import com.jc.practice.model.ContactDetails;         import com.jc.practice.model.MyContacts;         import java.util.ArrayList;         import java.util.Objects;         import butterknife.Bind;         import butterknife.ButterKnife; public class LoaderRcvAdapter extends RecyclerView.Adapter<LoaderRcvAdapter.LoaderHolder> {     Context context;     ArrayList<ContactDetails> list;     public LoaderRcvAdapter(Context context, ArrayList<ContactDetails> list) {         this.context = context;         this.list = list;     }   @Override     public LoaderHolder onCreateViewHolder(ViewGroup parent, int viewType) {         return new LoaderHolder(LayoutInflater.from(parent.getContext()).inflate(R.layout.contacts_li, parent, false)); }   @Override   public void onBindViewHolder(LoaderHolder holder, int position) { String name = "NA";         if (list.get(position).getName() != null) {             name = list.get(position).getName();         }         holder.tvName.setText(name);         String no = "NA";         if (list.get(position).getNo() != null && list.get(position).getNo().size() != 0) {   no = "";    for (int i = 0; i < list.get(position).getNo().size(); i++) {                 no = no + list.get(position).getNo().get(i);                 if (i < list.get(position).getNo().size() - 1) {                     no = no + "\n";                 }             }         }
holder.tvNo.setText(no);         String email = "NA";      if (list.get(position).getEmail() != null) {             email = "";             for (int i = 0; i < list.get(position).getEmail().size(); i++) {                 email = email + list.get(position).getEmail().get(i);                 if (i < list.get(position).getEmail().size() - 1) {                   email = email + "\n";                 }             }         }         holder.tvEmail.setText(email);         if (list.get(position).getUri() != null) {            DrawableRequestBuilder<String> thumbnailRequest = Glide                     .with(context)                     .load(list.get(position).getUri().toString());             Glide.with(context)                     .load(list.get(position).getUri().toString())                 .placeholder(R.drawable.launcher)  .error(R.drawable.ic_up_arrow) .override(100, 100)                   .fitCenter()                   .diskCacheStrategy(DiskCacheStrategy.NONE)                    .skipMemoryCache(true)                 .thumbnail(thumbnailRequest)                     .into(holder.imageViewContact);         }     }     @Override     public int getItemCount() {         return list.size();    }     public class LoaderHolder extends RecyclerView.ViewHolder {         @Bind(R.id.tvName)         TextView tvName;         @Bind(R.id.tvNo)         TextView tvNo;         @Bind(R.id.tvEmail)         TextView tvEmail;         @Bind(R.id.imageViewContact)         ImageView imageViewContact;         public LoaderHolder(View itemView) {             super(itemView);             ButterKnife.bind(this, itemView);         }     } }
activity_my_loader.xml:
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"     xmlns:tools="http://schemas.android.com/tools"     android:layout_width="match_parent"     android:layout_height="match_parent"     android:orientation="vertical"     tools:context="com.jc.practice.MyLoaderActivity">     <LinearLayout         android:layout_width="match_parent"         android:layout_height="wrap_content"         android:gravity="center_vertical"         android:orientation="horizontal">         <Button            android:id="@+id/button"             android:layout_width="wrap_content"             android:layout_height="wrap_content"             android:text="Sample"             android:textAllCaps="false"             android:visibility="gone" />
    </LinearLayout>     <android.support.v7.widget.RecyclerView       android:id="@+id/rcvLoader"         android:layout_width="match_parent"         android:layout_height="wrap_content" /> </LinearLayout>
MyLoaderActivity.java:         package com.jc.practice;
        import android.content.ContentUris;         import android.database.Cursor;         import android.net.Uri;         import android.os.AsyncTask;         import android.os.Bundle;         import android.provider.ContactsContract;        import android.support.v7.app.AppCompatActivity;         import android.support.v7.widget.LinearLayoutManager;         import android.support.v7.widget.RecyclerView;         import android.widget.Button;         import com.jc.practice.adapter.LoaderRcvAdapter;         import com.jc.practice.model.ContactDetails;         import java.util.ArrayList;         import java.util.Collections;         import java.util.Comparator;         import butterknife.Bind;         import butterknife.ButterKnife; public class MyLoaderActivity extends AppCompatActivity {     @Bind(R.id.button)     Button button;     @Bind(R.id.rcvLoader)     RecyclerView rcvLoader;    ArrayList<ContactDetails> contactsDetailsList;     LoaderRcvAdapter loaderRcvAdapter;     @Override     protected void onCreate(Bundle savedInstanceState) {         super.onCreate(savedInstanceState);    setContentView(R.layout.activity_my_loader);         ButterKnife.bind(this);         rcvLoader.hasFixedSize();         rcvLoader.setLayoutManager(new LinearLayoutManager(MyLoaderActivity.this));       new MyAsynctask().execute();    }     class MyAsynctask extends AsyncTask<Void, Void, Void> {        @Override         protected void onPreExecute() {           super.onPreExecute();             contactsDetailsList = new ArrayList<>();             loaderRcvAdapter = new LoaderRcvAdapter(MyLoaderActivity.this, contactsDetailsList);             rcvLoader.setAdapter(loaderRcvAdapter);         }         @Override         protected Void doInBackground(Void... params) {             getContacts();             return null;         }       @Override         protected void onPostExecute(Void aVoid) {             super.onPostExecute(aVoid);             Collections.sort(contactsDetailsList, new Comparator<ContactDetails>() {                 @Override                 public int compare(ContactDetails lhs, ContactDetails rhs) {                     return lhs.getName().compareToIgnoreCase(rhs.getName())                 }             });             loaderRcvAdapter.notifyDataSetChanged();         }     }     public void getContacts() {         Cursor mCursor = getContentResolver().query(ContactsContract.Contacts.CONTENT_URI, null, null, null, null);         if (mCursor.getCount() > 0) {             while (mCursor.moveToNext()) {                 ContactDetails contactDetails = new ContactDetails();                 String mContact_Id = mCursor.getString(mCursor.getColumnIndex(ContactsContract.Contacts._ID));                 String mName = mCursor.getString(mCursor.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME)).trim();       contactDetails.setName(mName);                 String has_phone_no = mCursor.getString(mCursor.getColumnIndex(ContactsContract.Contacts.HAS_PHONE_NUMBER));                if (has_phone_no.equals("1")) {                     Cursor mPhoneCursor = getContentResolver().query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null, ContactsContract.CommonDataKinds.Phone.CONTACT_ID + "=?", new String[]{mContact_Id}, null);                     if (mPhoneCursor.getCount() > 0) {         ArrayList<String> nos = new ArrayList<>();                         while (mPhoneCursor.moveToNext()) {
                           String mNo = mPhoneCursor.getString(mPhoneCursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER)).trim().replaceAll("[ ,-]", "").replace("+91", "");                             if (!nos.contains(mNo)) {                    nos.add(mNo);                         }                         }       contactDetails.setNo(nos);                     }                     mPhoneCursor.close();                 }                 Cursor mEmailCursor = getContentResolver().query(ContactsContract.CommonDataKinds.Email.CONTENT_URI, null, ContactsContract.CommonDataKinds.Email.CONTACT_ID + "=?", new String[]{mContact_Id}, null);                 if (mEmailCursor.getCount() > 0) {             ArrayList<String> emails = new ArrayList<>();                     while (mEmailCursor.moveToNext()) {                         String mEmail = mEmailCursor.getString(mEmailCursor.getColumnIndex(ContactsContract.CommonDataKinds.Email.DATA)).trim();                         if (!emails.contains(mEmail)) {                     emails.add(mEmail);                         }                     }                contactDetails.setEmail(emails);               }                 mEmailCursor.close();                 Uri personUri = ContentUris.withAppendedId(ContactsContract.Contacts.CONTENT_URI, Long.parseLong(mContact_Id));                 Uri photoUri = Uri.withAppendedPath(personUri, ContactsContract.Contacts.Photo.CONTENT_DIRECTORY);              contactDetails.setUri(photoUri);                 contactsDetailsList.add(contactDetails);             }         }         mCursor.close();     } }

Encryption Decryption Example Android Using AES Alogirthm

activity_main.xml ------------------------- <?xml version="1.0" encoding="utf-8"?> <LinearLayou...