Tuesday 29 December 2015

Create Hash Key Using Open SSL

Hello Guys,

Today I am sharing how to create a Hash Key using OpenSSL Tool.

For that you have to follow the below steps.

Steps:

Step 1: Download open ssl from following link:
https://indy.fulgan.com/SSL/

Step 2: After download extract it into C Drive. Rename the folder with OpenSSL.

Step 3: Open your command prompt and enter following command.
C:\>keytool -exportcert -alias androiddebugkey -keystore C:\Users\plam\.android\
debug.keystore | C:\OpenSSL\openssl sha1 -binary | C:\OpenSSL\openssl base64

Step 4: Now press enter key and you will get to enter password option like following.
Enter keystore password:  android

Step 5: Once again press enter key after write the password and you will get your hash key.
This key is used as per your requirement.

Hash Key is: fRLJ9y6z2IL6LYDZEeWBMRclRI=

Wednesday 18 November 2015

Searchable Dictionary In Android

Hello Friends,

Today I share an example of Searchable Dictionary android app. Using this app you can search a word with its meaning.

Here I provide sample code.

Sample Code:

File: SearchableDictionary.java

package com.example.android.searchabledict;

import android.app.Activity;
import android.app.ActionBar;
import android.app.SearchManager;
import android.content.Context;
import android.content.Intent;
import android.database.Cursor;
import android.net.Uri;
import android.os.Build;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ListView;
import android.widget.SearchView;
import android.widget.SimpleCursorAdapter;
import android.widget.TextView;
import android.widget.AdapterView.OnItemClickListener;

public class SearchableDictionary extends Activity 
{
    private TextView mTextView;
    private ListView mListView;

    @Override
    public void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        mTextView = (TextView) findViewById(R.id.text);
        mListView = (ListView) findViewById(R.id.list);

        handleIntent(getIntent());
    }

    @Override
    protected void onNewIntent(Intent intent)
    {
        // Because this activity has set launchMode="singleTop", the system calls this method
        // to deliver the intent if this activity is currently the foreground activity when
        // invoked again (when the user executes a search from this activity, we don't create
        // a new instance of this activity, so the system delivers the search intent here)
        handleIntent(intent);
    }

    private void handleIntent(Intent intent) 
    {
        if (Intent.ACTION_VIEW.equals(intent.getAction()))
        {
            // handles a click on a search suggestion; launches activity to show word
            Intent wordIntent = new Intent(this, WordActivity.class);
            wordIntent.setData(intent.getData());
            startActivity(wordIntent);
        } 
        else if (Intent.ACTION_SEARCH.equals(intent.getAction()))
        {
            // handles a search query
            String query = intent.getStringExtra(SearchManager.QUERY);
            showResults(query);
        }
    }

    private void showResults(String query) 
    {

        Cursor cursor = managedQuery(DictionaryProvider.CONTENT_URI, null, null, new String[]             {query}, null);

        if (cursor == null) 
        {
            // There are no results
            mTextView.setText(getString(R.string.no_results, new Object[] {query}));
        }
        else 
        {
            // Display the number of results
            int count = cursor.getCount();
            String countString = getResources().getQuantityString(R.plurals.search_results,
                                    count, new Object[] {count, query});
            mTextView.setText(countString);

            // Specify the columns we want to display in the result
            String[] from = new String[] { DictionaryDatabase.KEY_WORD,
                                           DictionaryDatabase.KEY_DEFINITION };

            // Specify the corresponding layout elements where we want the columns to go
            int[] to = new int[] { R.id.word, R.id.definition };

            // Create a simple cursor adapter for the definitions and apply them to the ListView
            SimpleCursorAdapter words = new SimpleCursorAdapter(this, R.layout.result, cursor, from,               to);
            mListView.setAdapter(words);

            // Define the on-click listener for the list items
            mListView.setOnItemClickListener(new OnItemClickListener() 
            {
                @Override
                public void onItemClick(AdapterView<?> parent, View view, int position, long id) 
                {
                    // Build the Intent used to open WordActivity with a specific word Uri
                    Intent wordIntent = new Intent(getApplicationContext(), WordActivity.class);
                    Uri data = Uri.withAppendedPath(DictionaryProvider.CONTENT_URI,                                               String.valueOf(id));
                    wordIntent.setData(data);
                    startActivity(wordIntent);
                }
            });
        }
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu)
    {
        MenuInflater inflater = getMenuInflater();
        inflater.inflate(R.menu.options_menu, menu);

        if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB)
        {
            SearchManager searchManager = (SearchManager) getSystemService                                                   (Context.SEARCH_SERVICE);
            SearchView searchView = (SearchView) menu.findItem(R.id.search).getActionView();
            searchView.setSearchableInfo(searchManager.getSearchableInfo(getComponentName()));
            searchView.setIconifiedByDefault(false);
        }

        return true;
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) 
    {
        switch (item.getItemId()) 
        {
            case R.id.search:
                onSearchRequested();
                return true;
            default:
                return false;
        }
    }
}


Output:












































































Download Full Source Code From Here: SearchableDictionary

Happy Coding...!!!

Monday 9 November 2015

Speech Recognition

Hello Friends,

Here I am sharing a sample code for Speech Recognition in Android.

Using Speech Recognition app, you can see what you said and its similar forms.

Sample Code:

File: MainActivity.java

package com.sneha.speechrecognitiondemo;

import java.util.ArrayList;
import java.util.List;
import android.app.Activity;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.content.pm.ResolveInfo;
import android.os.Bundle;
import android.speech.RecognizerIntent;
import android.speech.SpeechRecognizer;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.ListView;
import android.widget.Toast;

public class MainActivity extends Activity 
{
     private SpeechRecognizer speechRecognizer; 
     private final int SPEECHTOTEXT = 1;

    @Override
    public void onCreate(Bundle savedInstanceState) 
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        
        // Getting an instance of SpeechRecognizerduration
        speechRecognizer = SpeechRecognizer.createSpeechRecognizer(getBaseContext());
        
        // Setting Speech Recognition Listener
        //speechRecognizer.setRecognitionListener(this);
        
        // Getting an instance of btn_speak
        Button btnSpeak = (Button) findViewById(R.id.btn_speak);
        
        // Defining button click listener
        OnClickListener onClickListener = new OnClickListener() 
        {
@Override
public void onClick(View v) 
{
Intent intent = new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH);

// Getting an instance of PackageManager
PackageManager pm = getPackageManager();

// Querying Package Manager
List<ResolveInfo> activities = pm.queryIntentActivities(intent, 0);

if(activities.size()<=0)
{
Toast.makeText(getBaseContext(), "No Activity found to handle the action                                           ACTION_RECOGNIZE_SPEECH", Toast.LENGTH_SHORT).show();
return;
}

                intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL,                                                       RecognizerIntent.LANGUAGE_MODEL_FREE_FORM);
                intent.putExtra(RecognizerIntent.EXTRA_PROMPT, "Voice Recognition...");
                startActivityForResult(intent, SPEECHTOTEXT);
}
};

//Setting a click event handler for the button
btnSpeak.setOnClickListener(onClickListener);
    }
    
    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data)
    {
        super.onActivityResult(requestCode, resultCode, data);
        
        //EditText etText = (EditText) findViewById(R.id.et_text);
        ListView lvText = (ListView) findViewById(R.id.lv_text);
       
        switch (requestCode) 
        {
       case SPEECHTOTEXT: 
           if (resultCode == RESULT_OK && null != data)
           {  
               ArrayList<String> text = data.getStringArrayListExtra                                                                           (RecognizerIntent.EXTRA_RESULTS);  
        
               ArrayAdapter<String> adapter = new ArrayAdapter<String>(getBaseContext(),                                   android.R.layout.simple_list_item_1, text);
               
               lvText.setAdapter(adapter);                
           }
           break;
   }
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) 
    {
        getMenuInflater().inflate(R.menu.activity_main, menu);
        return true;
    }   
}

Output:










































































Download Full Source Code From Here: SpeechRecognition

Happy Coding...!!!

QR And Bar Code Scanning in Android

Hello Guys,

Here I share a sample code for QR Code and Bar Code Scanning using Android App.

No need to install any third party app for scanning.

Just see the sample code.

Sample Code:

File: CaptureActivity.java

package com.sneha.quick_response_code;

import java.text.DateFormat;
import java.util.Date;
import java.util.EnumSet;
import java.util.Map;
import java.util.Set;
import com.sneha.quick_response_code.result.ResultHandler;
import com.sneha.quick_response_code.result.ResultHandlerFactory;
import com.google.zxing.Result;
import com.google.zxing.ResultMetadataType;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.os.Bundle;
import android.util.Log;
import android.util.TypedValue;
import android.view.KeyEvent;
import android.view.View;
import android.widget.ImageView;
import android.widget.TextView;


public class CaptureActivity extends DecoderActivity
{
    private static final String TAG = CaptureActivity.class.getSimpleName();
    private static final Set<ResultMetadataType> DISPLAYABLE_METADATA_TYPES =                     EnumSet.of(ResultMetadataType.ISSUE_NUMBER, ResultMetadataType.SUGGESTED_PRICE,
    ResultMetadataType.ERROR_CORRECTION_LEVEL,                                                                         ResultMetadataType.POSSIBLE_COUNTRY);

    private TextView statusView = null;
    private View resultView = null;
    private boolean inScanMode = false;

    @Override
    public void onCreate(Bundle icicle)
    {
        super.onCreate(icicle);
        setContentView(R.layout.capture);
        Log.v(TAG, "onCreate()");

        resultView = findViewById(R.id.result_view);
        statusView = (TextView) findViewById(R.id.status_view);

        inScanMode = false;
    }

    @Override
    protected void onDestroy()
    {
        super.onDestroy();
        Log.v(TAG, "onDestroy()");
    }

    @Override
    protected void onResume()
    {
        super.onResume();
        Log.v(TAG, "onResume()");
    }

    @Override
    protected void onPause()
    {
        super.onPause();
        Log.v(TAG, "onPause()");
    }

    @Override
    public boolean onKeyDown(int keyCode, KeyEvent event)
    {
        if (keyCode == KeyEvent.KEYCODE_BACK)
        {
            if (inScanMode)
                finish();
            else
                onResume();
            return true;
        }
        return super.onKeyDown(keyCode, event);
    }

    @Override
    public void handleDecode(Result rawResult, Bitmap barcode)
    {
        drawResultPoints(barcode, rawResult);

        ResultHandler resultHandler = ResultHandlerFactory.makeResultHandler(this, rawResult);
        handleDecodeInternally(rawResult, resultHandler, barcode);
    }

    protected void showScanner()
    {
        inScanMode = true;
        resultView.setVisibility(View.GONE);
        statusView.setText(R.string.msg_default_status);
        statusView.setVisibility(View.VISIBLE);
        viewfinderView.setVisibility(View.VISIBLE);
    }

    protected void showResults()
    {
        inScanMode = false;
        statusView.setVisibility(View.GONE);
        viewfinderView.setVisibility(View.GONE);
        resultView.setVisibility(View.VISIBLE);
    }

    // Put up our own UI for how to handle the decodBarcodeFormated contents.
    private void handleDecodeInternally(Result rawResult, ResultHandler resultHandler, Bitmap barcode)
    {
        onPause();
        showResults();

        ImageView barcodeImageView = (ImageView) findViewById(R.id.barcode_image_view);
     
        if (barcode == null)
        {
            barcodeImageView.setImageBitmap(BitmapFactory.decodeResource(getResources(),                         R.drawable.icon));
        }
        else
        {
            barcodeImageView.setImageBitmap(barcode);
        }

        TextView formatTextView = (TextView) findViewById(R.id.format_text_view);
        formatTextView.setText(rawResult.getBarcodeFormat().toString());

        TextView typeTextView = (TextView) findViewById(R.id.type_text_view);
        typeTextView.setText(resultHandler.getType().toString());

        DateFormat formatter = DateFormat.getDateTimeInstance(DateFormat.SHORT,                                   DateFormat.SHORT);
        String formattedTime = formatter.format(new Date(rawResult.getTimestamp()));
        TextView timeTextView = (TextView) findViewById(R.id.time_text_view);
        timeTextView.setText(formattedTime);

        TextView metaTextView = (TextView) findViewById(R.id.meta_text_view);
        View metaTextViewLabel = findViewById(R.id.meta_text_view_label);
        metaTextView.setVisibility(View.GONE);
        metaTextViewLabel.setVisibility(View.GONE);
        Map<ResultMetadataType, Object> metadata = rawResult.getResultMetadata();
       
        if (metadata != null)
        {
            StringBuilder metadataText = new StringBuilder(20);
           
            for (Map.Entry<ResultMetadataType, Object> entry : metadata.entrySet())
            {
                if (DISPLAYABLE_METADATA_TYPES.contains(entry.getKey()))
                {
                    metadataText.append(entry.getValue()).append('\n');
                }
            }
           
            if (metadataText.length() > 0)
            {
                metadataText.setLength(metadataText.length() - 1);
                metaTextView.setText(metadataText);
                metaTextView.setVisibility(View.VISIBLE);
                metaTextViewLabel.setVisibility(View.VISIBLE);
            }
        }

        TextView contentsTextView = (TextView) findViewById(R.id.contents_text_view);
        CharSequence displayContents = resultHandler.getDisplayContents();
        contentsTextView.setText(displayContents);
        // Crudely scale betweeen 22 and 32 -- bigger font for shorter text
        int scaledSize = Math.max(22, 32 - displayContents.length() / 4);
        contentsTextView.setTextSize(TypedValue.COMPLEX_UNIT_SP, scaledSize);
    }
}

Output:
































































Download Full Source Code From Here: QRBarCodeScanner

Happy Coding...!!!

Saturday 7 November 2015

Unit Converter in Android

Hello Guys,

Here I share a sample code for Unit Converter Uisng Android App.

Sample Code:

File: UnitConverter.java

package com.sneha.unitconverter;

import android.app.Activity;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Spinner;
import android.widget.Toast;

//this is for git testing

public class UnitConverter extends Activity implements OnClickListener, AdapterView.OnItemSelectedListener
{
    /** Called when the activity is first created. */

private Spinner SpinnerUnit;
private EditText inputValue;
private Spinner SpinnerFrom;
private Spinner SpinnerTo;
private Button ButtonConvert;
private EditText ResultView;
    ArrayAdapter<String> unitarray;
    ArrayAdapter<String> unitarrayadapter;
    private Strategy currentStrategy;
    private Strategy lastStrategy;
    private String unitfrom;
    private String unitto;
    private static UnitConverter instance;

    //this is to test the Git repository
@Override
    public void onCreate(Bundle savedInstanceState)
{   
        super.onCreate(savedInstanceState);
        
      //Som++ 
        //to get the parameter passed from the URI that has launched this app
        final Intent intent = getIntent();
        String scheme = intent.getScheme();
        
        if(scheme != null)
        {
       final Uri myURI=intent.getData();
       String queryString = new String();
       
       if(myURI!=null)
       {
        queryString = myURI.getQuery();
       }
       
       String split1 = "&";
       String split2 = "=";
    
       if (queryString != null)
       {
           final String[] arrParameters = queryString.split("&");
           
           for (final String tempParameterString : arrParameters)
           {
               final String[] arrTempParameter = tempParameterString.split("=");
               
               if (arrTempParameter.length >= 2)
               {
                   final String parameterKey = arrTempParameter[0];
                   final String parameterValue = arrTempParameter[1];
                   //do something with the parameters
                   Toast.makeText(this, parameterValue, 500).show();
               }
           }
       }
        }
        
        setContentView(R.layout.main);
        
        SpinnerUnit = (Spinner)findViewById(R.id.SpinnerUnit);
        SpinnerUnit.setOnItemSelectedListener(this);
        
        unitarray=new ArrayAdapter<String>(this,android.R.layout.simple_spinner_item);
        unitarray.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
        SpinnerUnit.setAdapter(unitarray);
        unitarray.add(getResources().getString(R.string.unit1));
        unitarray.add(getResources().getString(R.string.unit2));
        unitarray.add(getResources().getString(R.string.unit3));
        unitarray.add(getResources().getString(R.string.unit4));
        unitarray.add(getResources().getString(R.string.unit5));
        unitarray.add(getResources().getString(R.string.unit6));
        unitarray.add(getResources().getString(R.string.unit7));
        unitarray.add(getResources().getString(R.string.unit8));
        unitarray.setNotifyOnChange(true);
        
        SpinnerFrom = (Spinner)findViewById(R.id.SpinnerFrom);
        SpinnerFrom.setOnItemSelectedListener(this);
        SpinnerTo = (Spinner)findViewById(R.id.SpinnerTo);
        SpinnerTo.setOnItemSelectedListener(this);
        
        unitarrayadapter = new ArrayAdapter<String>(this,android.R.layout.simple_spinner_item); 
        unitarrayadapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
        SpinnerFrom.setAdapter(unitarrayadapter);
        SpinnerTo.setAdapter(unitarrayadapter);
        
        unitarrayadapter.setNotifyOnChange(true);
        
        ResultView = (EditText)findViewById(R.id.TextViewResult);
        ResultView.setClickable(false);
        
        ButtonConvert = (Button)findViewById(R.id.Button01);
        
        ButtonConvert.setOnClickListener(this);
        
        inputValue = (EditText)findViewById(R.id.EditTextValue);
        
        //initialization
        currentStrategy = new TemperatureStrategy();
       
        lastStrategy = currentStrategy;
       
        instance = this;
    }
    
public static UnitConverter getInstance()
{
return instance;
}

    public void onItemSelected(AdapterView<?> parent)
    {
    }
    
    public void onNothingSelected(AdapterView<?> parent)
    {
    }
    
    public void onItemSelected(AdapterView<?> parent, View v, int position, long id)
    {    
    if(v.getParent() == SpinnerUnit)
    {
        switch(position)
        {
        case 0:
        setStrategy(new TemperatureStrategy());
        break;
       
        case 1:
        setStrategy( new WeightStrategy());
        break;
       
        case 2:
        setStrategy(new LengthStrategy());
        break;
       
        case 3:
        setStrategy(new PowerStrategy());
        break;
       
        case 4:
        setStrategy(new EnergyStrategy());
        break;
       
        case 5:
        setStrategy(new VelocityStrategy());
        break;
       
        case 6:
        setStrategy(new AreaStrategy());
        break;
       
        case 7:
        setStrategy(new VolumeStrategy());
        break;
        }
       
       
        fillFromToSpinner(position);
       
        SpinnerFrom.setSelection(0);
        SpinnerTo.setSelection(0);
       
        //If only first spinner is selected and
        //the from and to spinners are not clicked at all
        unitfrom = (String)(SpinnerFrom.getItemAtPosition(0).toString());
        unitto = (String)(SpinnerTo.getItemAtPosition(0).toString());
       
        //reset the result
        ResultView.setText("");
       
       
    }
    else if(v.getParent() == SpinnerFrom)
    {
    unitfrom = (String)(SpinnerFrom.getSelectedItem().toString());
    }
   
    else if(v.getParent() == SpinnerTo)
    {
    unitto = (String)(SpinnerTo.getSelectedItem().toString());
    }
    }  
    
    private void fillFromToSpinner(int position)
    {
    switch(position)
    {
    case 0:
    fillSpinnerWithTempUnit();
    break;
   
    case 1:
    fillSpinnerWithWeightUnit();
    break;
   
    case 2:
    fillSpinnerWithLengthUnit();
    break;
   
    case 3:
    fillSpinnerWithPowerUnit();
    break;
   
    case 4:
    fillSpinnerWithenErgyUnit();
    break;
   
    case 5:
    fillSpinnerWithVelocityUnit();
    break;
   
    case 6:
    fillSpinnerWithAreaUnit();
    break;
   
    case 7:
    fillSpinnerWithVolumeUnit();
    break;
    }
    }
    
    private void fillSpinnerWithTempUnit()
    {
    unitarrayadapter.clear();
    unitarrayadapter.add(getResources().getString(R.string.temperatureunitc));
    unitarrayadapter.add(getResources().getString(R.string.temperatureunitf));
    unitarrayadapter.notifyDataSetChanged();
    }
    
    private void fillSpinnerWithWeightUnit()
    {
    unitarrayadapter.clear();
    unitarrayadapter.add(getResources().getString(R.string.weightunitkg));
    unitarrayadapter.add(getResources().getString(R.string.weightunitgm));
    unitarrayadapter.add(getResources().getString(R.string.weightunitlb));
    unitarrayadapter.add(getResources().getString(R.string.weightunitounce));
    unitarrayadapter.add(getResources().getString(R.string.weightunitmg));
    unitarrayadapter.notifyDataSetChanged();
    }
    
    private void fillSpinnerWithLengthUnit()
    {
    unitarrayadapter.clear();
    unitarrayadapter.add(getResources().getString(R.string.lengthunitmile));
    unitarrayadapter.add(getResources().getString(R.string.lengthunitkm));
    unitarrayadapter.add(getResources().getString(R.string.lengthunitm));
    unitarrayadapter.add(getResources().getString(R.string.lengthunitcm));
    unitarrayadapter.add(getResources().getString(R.string.lengthunitmm));
    unitarrayadapter.add(getResources().getString(R.string.lengthunitinch));
    unitarrayadapter.add(getResources().getString(R.string.lengthunitfeet));
    }
    
    private void fillSpinnerWithPowerUnit()
    {
    unitarrayadapter.clear();
    unitarrayadapter.add(getResources().getString(R.string.powerunitwatts));
    unitarrayadapter.add(getResources().getString(R.string.powerunithorseposer));
    unitarrayadapter.add(getResources().getString(R.string.powerunitkilowatts));
    }
    
    private void fillSpinnerWithenErgyUnit()
    {
    unitarrayadapter.clear();
    unitarrayadapter.add(getResources().getString(R.string.energyunitcalories));
    unitarrayadapter.add(getResources().getString(R.string.energyunitjoules));
    unitarrayadapter.add(getResources().getString(R.string.energyunitkilocalories));
    }
    
    private void fillSpinnerWithVelocityUnit()
    {
   unitarrayadapter.clear();
   unitarrayadapter.add(getResources().getString(R.string.velocityunitkmph));
   unitarrayadapter.add(getResources().getString(R.string.velocityunitmilesperh));
   unitarrayadapter.add(getResources().getString(R.string.velocityunitmeterpers));
   unitarrayadapter.add(getResources().getString(R.string.velocityunitfeetpers));
    }
    
    private void fillSpinnerWithAreaUnit()
    {
    unitarrayadapter.clear();
    unitarrayadapter.add(getResources().getString(R.string.areaunitsqkm));
    unitarrayadapter.add(getResources().getString(R.string.areaunitsqmiles));
    unitarrayadapter.add(getResources().getString(R.string.areaunitsqm));
    unitarrayadapter.add(getResources().getString(R.string.areaunitsqcm));
    unitarrayadapter.add(getResources().getString(R.string.areaunitsqmm));
    unitarrayadapter.add(getResources().getString(R.string.areaunitsqyard));
    }
    
    private void fillSpinnerWithVolumeUnit()
    {
    unitarrayadapter.clear();
    unitarrayadapter.add(getResources().getString(R.string.volumeunitlitres));
    unitarrayadapter.add(getResources().getString(R.string.volumeunitmillilitres));
    unitarrayadapter.add(getResources().getString(R.string.volumeunitcubicm));
    unitarrayadapter.add(getResources().getString(R.string.volumeunitcubiccm));
    unitarrayadapter.add(getResources().getString(R.string.volumeunitcubicmm));
    unitarrayadapter.add(getResources().getString(R.string.volumeunitcubicfeet));
    }
    
    public void onClick(View v)
    {
    if(v == ButtonConvert)
    {
    if(!inputValue.getText().toString().equals(""))
    {
    double in = Double.parseDouble(inputValue.getText().toString());
    double result = currentStrategy.Convert(unitfrom, unitto, in);
    ResultView.setText(Double.toString(result));
    }
    else 
    {
    ResultView.setText("");
    }
    }
    }
    
    private void setStrategy(Strategy s)
    {
    lastStrategy = currentStrategy;
    currentStrategy = s;
    //make the last strategy eligible for garbage collection
    lastStrategy = null;
    }        

}

Output:


















































Download Full Source Code From Here: Unitconverter

Happy Coding...!!!