vik-y
7/11/2015 - 12:28 PM

hackathon android code

hackathon android code

package com.example.samyakandroid.plivosamyak;

import android.os.Bundle;
import APIConnect.APIConnectPlivo;

import android.os.AsyncTask;
import android.app.Activity;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.view.View.OnClickListener;
import android.widget.Toast;
import android.database.Cursor;
import android.database.SQLException;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.util.Log;

import java.io.UnsupportedEncodingException;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;

public class MainActivity extends Activity {

    private Button callButton;
    private EditText inputNumber;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        inputNumber = (EditText) findViewById(R.id.userPhone);
        callButton = (Button) findViewById(R.id.makeCall);
        int count =0;

        callButton.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                String from = inputNumber.getText().toString();
                SQLiteDatabase mydatabase = openOrCreateDatabase("wdigital", MODE_PRIVATE, null);

                //mydatabase.execSQL("DROP TABLE IF EXISTS transactions");

                mydatabase.execSQL("CREATE TABLE IF NOT EXISTS transactions (" +
                        "id INT PRIMARY KEY NOT NULL, " +
                        "sp INT NOT NULL, " +
                        "ep INT NOT NULL, " +
                        "timestamp TEXT, " +
                        "age INT, " +
                        "gender INT, " +
                        "token TEXT" +
                        ");");
                //mydatabase.execSQL("INSERT INTO transactions VALUES('1','admin', 'admin', 'tstamp', 20, 0, 'trialanderror');");
                //mydatabase.execSQL("INSERT INTO transactions VALUES (2, 1, 2, \"works\", 20, 0, 20");

                mydatabase.execSQL("INSERT INTO transactions (id, sp, ep, token) VALUES (1, 2, 5, 'trialanderror')");

                Cursor resultSet = mydatabase.rawQuery("SELECT * from transactions", null);
                resultSet.moveToFirst();
                Log.v("vikas", "New Data: "+generateDatatoWrite("age=15&g=10&token=1001"));


                Log.v("vikas", resultSet.getString(2));
                checkToken("trialanderror");
                Log.v("vikas", "Generated Token: "+generateToken());



                Toast.makeText(getApplicationContext(), "pressed call button",
                        Toast.LENGTH_SHORT).show();
                new Call().execute(new String[]{from});
            }
        });


    }

    public boolean checkToken(String token){
        /*
        If token found in db return true else return false

        for now, just search for the token in the db and if found return 1
         */
        SQLiteDatabase mydatabase = openOrCreateDatabase("transactions", MODE_PRIVATE, null);

        Cursor resultSet = mydatabase.rawQuery("SELECT * FROM transactions WHERE token='"+token+"'", null);
        resultSet.moveToFirst();

        if(resultSet.getString(5)!=null)
            Log.v("vikas", "Result set: "+resultSet.getString(5));
        else{
            Log.v("vikas", "No result found");
        }
        return true;
    }


    public static final String md5(final String s) {
        final String MD5 = "MD5";
        try {
            // Create MD5 Hash
            MessageDigest digest = java.security.MessageDigest.getInstance(MD5);
            digest.update(s.getBytes());
            byte messageDigest[] = digest.digest();

            // Create Hex String
            StringBuilder hexString = new StringBuilder();
            for (byte aMessageDigest : messageDigest) {
                String h = Integer.toHexString(0xFF & aMessageDigest);
                while (h.length() < 2)
                    h = "0" + h;
                hexString.append(h);
            }
            return hexString.toString();

        } catch (NoSuchAlgorithmException e) {
            e.printStackTrace();
        }
        return "";
    }

    public void makeTable(){
        SQLiteDatabase mydatabase = openOrCreateDatabase("wdigital", MODE_PRIVATE, null);
        mydatabase.execSQL("CREATE TABLE IF NOT EXISTS transactions (" +
                "id INT PRIMARY KEY NOT NULL, " +
                "sp INT NOT NULL, " +
                "ep INT NOT NULL, " +
                "timestamp TEXT, " +
                "age INT, " +
                "gender INT, " +
                "token TEXT" +
                ");");
        mydatabase.close();
    }



    public static final String generateToken(){
        //A simple method to generate token based on some serial
        /*
        for now generete a random number and put that in db
         */
        int minimum=30000, maximum=100000;

        Integer randomNum = minimum + (int)(Math.random()*maximum);

        return md5(randomNum.toString());
    }

    public static final String generateDatatoWrite(String DatafromCard){
        //read contents as it is from card - use Samyak's code here
        //just change one parameter
        String string = DatafromCard;
        String output = "";

        String[] parts = string.split("&");
        for (int j=0; j<parts.length;j++){
            String[] part1 = parts[j].split("=");
            //part1[0], part1[1] - key , value
            if(!part1[0].equals("token")){
                output+=part1[0]+"="+part1[1]+"&";
            }
        }
        output+="token="+generateToken();

        return output;
    }

    class Call extends AsyncTask<String, Void, Boolean> {

        @Override
        protected Boolean doInBackground(String... params) {
            Log.v("vikas", "async here");
            try {
                return APIConnectPlivo.executePostCall(params[0]);
            } catch (UnsupportedEncodingException e) {
                e.printStackTrace();
            }
            Toast.makeText(getApplicationContext(),"working",
                    Toast.LENGTH_SHORT).show();
            return true;
        }

        @Override
        protected void onPostExecute(Boolean aBoolean) {
            super.onPostExecute(aBoolean);
        }
    }
}

package APIConnect;

import android.util.Base64;
import android.util.Log;
import android.widget.Toast;

import org.apache.http.HttpResponse;
import org.apache.http.NameValuePair;
import org.apache.http.client.HttpClient;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.entity.StringEntity;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.message.BasicNameValuePair;
import org.apache.http.util.EntityUtils;
import org.json.JSONException;
import org.json.JSONObject;

import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.util.ArrayList;
import java.util.List;

/**
 * Created by Samyak on 24-04-2015.
 */
public class APIConnectPlivo {
    public static boolean executePostCall(String to) throws UnsupportedEncodingException {

        HttpClient client = new DefaultHttpClient();
        HttpPost post = new HttpPost("http://192.168.150.1/wdigital/rest/buyticket");
        Log.v("vikas", "reached here bc");
        //post.setHeader("Authorization", "Basic " + Base64.encodeToString("MAZDC5MTCXMMUZYZNLZG:YjY4ZjE5ZDJkOTEwMjY2YzZjMTc2YjcyNDYwN2Fk".getBytes(), Base64.NO_WRAP));
        JSONObject request = new JSONObject();

        /*
        List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(2);
       nameValuePairs.add(new BasicNameValuePair("id", "01"));
       nameValuePairs.add(new BasicNameValuePair("message", msg));
       httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));

         */
        List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(2);
        nameValuePairs.add(new BasicNameValuePair("id", "1"));
        nameValuePairs.add(new BasicNameValuePair("serial", "223"));
        nameValuePairs.add(new BasicNameValuePair("amount", "1"));
        nameValuePairs.add(new BasicNameValuePair("token", "1234"));


        /*StringEntity stringEntity = null;
        try {
            stringEntity = new StringEntity(request.toString());
            stringEntity.setContentType("application/json");
        } catch (UnsupportedEncodingException e) {
            e.printStackTrace();
        }*/

        post.setEntity(new UrlEncodedFormEntity(nameValuePairs));
        HttpResponse response = null;
        try {
            response = client.execute(post);
            Log.v("Vikas", response.toString());
        } catch (IOException e) {
            e.printStackTrace();
        }

        try{
            String result = EntityUtils.toString(response.getEntity());
            Log.v("vikas", result);
        }
        catch (Exception e){
            e.printStackTrace();
        }

        return true;
    }
}