the error is in the way im getting the IMEI of the device. the length or the procedure of that is giving me troubles. suggest a better way?
here is the error log: followed by the code.
E/Volley: [353] NetworkDispatcher.run: Unhandled exception 
java.lang.NullPointerException: Attempt to invoke virtual method 'int 
java.lang.String.length()' on a null object reference
      java.lang.NullPointerException: Attempt to invoke virtual method 'int 
java.lang.String.length()' on a null object reference
          at libcore.net.UriCodec.encode(UriCodec.java:132)
          at java.net.URLEncoder.encode(URLEncoder.java:57)
          at com.android.volley.Request.encodeParameters(Request.java:450)
          at com.android.volley.Request.getBody(Request.java:436)
          at 
   com.android.volley.toolbox.HurlStack.addBodyIfExists(HurlStack.java:260)
           at 
com.android.volley.toolbox.HurlStack.setConnectionParametersForRequest(HurlStack.java:234) at com.android.volley.toolbox.HurlStack.performRequest(HurlStack.java:107) at com.android.volley.toolbox.BasicNetwork.performRequest(BasicNetwork.java:96) at com.android.volley.NetworkDispatcher.run(NetworkDispatcher.java:112)
package com.medref;
import android.Manifest;
import android.content.Intent;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.design.widget.FloatingActionButton;
import android.support.v4.content.ContextCompat;
import android.support.v7.app.AlertDialog;
import android.support.v7.app.AppCompatActivity;
import android.telephony.TelephonyManager;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.EditText;
import android.widget.RadioButton;
import android.widget.RadioGroup;
import android.widget.Spinner;
import android.widget.Toast;
import com.android.volley.AuthFailureError;
import com.android.volley.Request;
import com.android.volley.RequestQueue;
import com.android.volley.Response;
import com.android.volley.VolleyError;
import com.android.volley.toolbox.StringRequest;
import com.android.volley.toolbox.Volley;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.HashMap;
import java.util.Map;
public class Signup extends AppCompatActivity{
    Spinner spinner, date, month, year;
    EditText Username, Password, Phnumber;
    FloatingActionButton Signup;
    RadioGroup radioGroup;
    RadioButton radioButton;
    String Selecteddates, Selectedyear;
    String Dob;
    String m_deviceId;
    String Bloodgroups[] = new String[]{"Not Known","O+","O-","A+","A-","B+","B-","AB+","AB-"};
    String dates[] = new String[]{"Day","31", "30", "29","28", "27", "26", "25", "24", "23", "22", "21", "20", "19", "18",
    "17", "16", "15", "14", "13", "12", "11", "10", "9", "8", "7", "6", "5", "4", "3", "2", "1"};
    String months[] = new String[]{"Month","01", "02", "03", "04", "05", "06", "07", "08",
    "09", "10", "11", "12"};
    ArrayAdapter<String> adapter, dayAdapter, MonthAdapter;
    String userName, phNumber, password, gender, bloodGroup;
    String monthtonumber = "";
    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.signup);
        try{
            TelephonyManager TelephonyMgr = (TelephonyManager)getSystemService(TELEPHONY_SERVICE);
            m_deviceId = TelephonyMgr.getDeviceId();
        }catch (Exception e){}
        spinner = (Spinner) findViewById(R.id.spinner);
        date = (Spinner) findViewById(R.id.date);
        month = (Spinner) findViewById(R.id.month);
        year = (Spinner) findViewById(R.id.year);
        Username = (EditText) findViewById(R.id.Username);
        Password = (EditText) findViewById(R.id.Password);
        Phnumber = (EditText) findViewById(R.id.PhNumber);
        radioGroup = (RadioGroup) findViewById(R.id.gender);
        Signup = (FloatingActionButton) findViewById(R.id.Signup);
        adapter = new ArrayAdapter(Signup.this, R.layout.support_simple_spinner_dropdown_item, Bloodgroups);
        spinner.setAdapter(adapter);
        dayAdapter = new ArrayAdapter(Signup.this, R.layout.support_simple_spinner_dropdown_item, months);
        date.setAdapter(dayAdapter);
        MonthAdapter = new ArrayAdapter(Signup.this, R.layout.support_simple_spinner_dropdown_item, dates);
        month.setAdapter(MonthAdapter);
        ////////adding years to the array through a loop
        ArrayList<String> years = new ArrayList<>();
        years.add("Year");
        int thisYear = Calendar.getInstance().get(Calendar.YEAR);
        for (int i = 1960; i <= thisYear; i++) {
            years.add(Integer.toString(i));
        }
        ArrayAdapter<String> adapter = new ArrayAdapter<>(this, android.R.layout.simple_spinner_item, years);
        year.setAdapter(adapter);
        Signup.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                if(getVerification()){
                    //Getting RadioButton Id
                    int id = radioGroup.getCheckedRadioButtonId();
                    radioButton = (RadioButton) findViewById(id);
                    gender = radioButton.getText().toString();
                    /////COncatinating DOb
                    Dob = Selectedyear+"-"+Selecteddates+"-"+monthtonumber;
                    //Getting all the field valuesn
                    userName = Username.getText().toString().trim();
                    phNumber = Phnumber.getText().toString().trim();
                    password = Password.getText().toString().trim();
                    try {
                        //Now we have everything, lets send the data to our database
                        String url = "http://192.168.1.9/loginfiles/sendvalues.php";
                        StringRequest stringRequest = new StringRequest(Request.Method.POST, url,
                                new Response.Listener<String>() {
                                    @Override
                                    public void onResponse(String response) {
                                        if (response.equals("10")) {
                                            Toast.makeText(Signup.this, "No connection"
                                                    , Toast.LENGTH_SHORT).show();
                                        } else {
                                            Intent i = new Intent(com.medref.Signup.this, MainActivity.class);
                                            startActivity(i);
                                        }
                                    }
                                }, new Response.ErrorListener() {
                            @Override
                            public void onErrorResponse(VolleyError error) {
                                Toast.makeText(Signup.this, error.getMessage(), Toast.LENGTH_SHORT).show();
                            }
                        }) {
                            @Override
                            protected Map<String, String> getParams() throws AuthFailureError {
                                Map<String, String> params = new HashMap<>();
                                params.put("name", userName);
                                params.put("number", phNumber);
                                params.put("password", password);
                                params.put("dob", Dob);
                                params.put("gender", gender);
                                params.put("bloodGroup", bloodGroup);
                                params.put("deviceid", m_deviceId);
                                return params;
                            }
                        };
                        RequestQueue requestQueue = Volley.newRequestQueue(Signup.this);
                        requestQueue.add(stringRequest);
                    }catch (Exception e){
                        Toast.makeText(com.medref.Signup.this, e.getMessage(),Toast.LENGTH_LONG).show();
                    }
                }else{
                    Toast.makeText(Signup.this, "Please fill out the form", Toast.LENGTH_SHORT).show();
                }
            }
        });
        spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
            @Override
            public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
                bloodGroup = parent.getItemAtPosition(position).toString();
            }
            @Override
            public void onNothingSelected(AdapterView<?> parent) {
            }
        });
        date.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
            @Override
            public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
                Selecteddates = parent.getItemAtPosition(position).toString();
            }
            @Override
            public void onNothingSelected(AdapterView<?> parent) {
            }
        });
        month.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
            @Override
            public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
               monthtonumber = parent.getItemAtPosition(position).toString();
            }
            @Override
            public void onNothingSelected(AdapterView<?> parent) {
            }
        });
        year.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
            @Override
            public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
                Selectedyear= parent.getItemAtPosition(position).toString();
            }
            @Override
            public void onNothingSelected(AdapterView<?> parent) {
            }
        });
    }
    protected boolean getVerification(){
        if(Username.getText().toString().trim().equals("")){
            Username.setError("Empty");
            return false;
        }else if(Phnumber.getText().toString().trim().equals("")){
            Phnumber.setError("Empty");
            return false;
        }else if(Password.getText().toString().trim().equals("")){
            Password.setError("Empty");
            return false;
        }else if(Selecteddates.equals("") || Selectedyear.equals("")){
            return false;
        }else{
            return true;
        }
    }
}    
 
    