Android Examples

Setting Up Buttons with OnClickListener

	
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android=
	"http://schemas.android.com/apk/res/android"
	xmlns:ads=
	"http://schemas.android.com/apk/lib/com.google.ads"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    >
	<TextView  
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:text="Your total is 0"
    android:id="@+id/tvNumber"
    android:textSize="40dp"
    android:gravity="center"
    />
    <Button
    android:layout_width="250dp"
   	android:layout_height="wrap_content"  
   	android:text="Add One"	
    android:id="@+id/bAddOne"
    android:layout_gravity="center"
    />
     <Button
    android:layout_width="250dp"
    android:layout_height="wrap_content"
    android:text="Subtract One"
    android:id="@+id/bSubOne"
    android:layout_gravity="center"
    />
</LinearLayout>

package com.jtechies.androidapp;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;

public class MainActivity extends Activity {
	
	int counter;
	Button add, sub;
	TextView display;

    @Override
    protected void onCreate
    	(Bundle savedInstanceState) 
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        counter = 0;
        add = (Button) findViewById(R.id.bAddOne);
        sub = (Button) findViewById(R.id.bSubOne);
        display = (TextView)
        	findViewById(R.id.tvNumber);
        
        add.setOnClickListener
        	(new View.OnClickListener() 
        {
			
			@Override
			public void onClick(View v)
			{
				// TODO Auto-generated method stub
				counter++;
				display.setText
					("Your Total is " + counter);
			}
		});
		sub.setOnClickListener
			(new View.OnClickListener() 
		{
			@Override
			public void onClick(View v) {
				// TODO Auto-generated method stub
				counter--;
				display.setText
					("Your Total is " + counter);
			}
		});
	}   
}
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android=
	"http://schemas.android.com/apk/res/android"
    package="com.jtechies.androidapp"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk
        android:minSdkVersion="8"
        android:targetSdkVersion="17" />

    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
       <activity
            android:name=
            	"com.jtechies.androidapp.MainActivity"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name=
                	"android.intent.action.MAIN" />

               <category android:name=
               	"android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
   </application>

</manifest>

Setting Up Background Image

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android=
	"http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:background="@drawable/splash_back"
    >
</LinearLayout>
package com.jtechies.androidapp;

import android.app.Activity;
import android.content.Intent;
import android.content.SharedPreferences;
import android.media.MediaPlayer;
import android.os.Bundle;
import android.preference.PreferenceManager;

public class Splash extends Activity{

	MediaPlayer ourSong;
	
	@Override
	protected void onCreate(Bundle jtechies) {
		// TODO Auto-generated method stub
		super.onCreate(jtechies);
		setContentView(R.layout.splash);		
		
		Thread timer = new Thread(){
			public void run(){
				try{
					sleep(5000);
					
				} catch(InterruptedException e){
					e.printStackTrace();
				} finally{
					Intent openStartingPoint = new Intent
					("com.jtechies.androidapp.Menu");
					startActivity(openStartingPoint);
				}
			}
		};
		timer.start();
	}

	@Override
	protected void onPause() {
		// TODO Auto-generated method stub
		super.onPause();
		ourSong.release();
		finish();
	}
	
}
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android=
	"http://schemas.android.com/apk/res/android"
    package="com.jtechies.androidapp"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk
        android:minSdkVersion="8"
        android:targetSdkVersion="17" />

    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        
       <activity
            android:name=".Splash"
            android:label="@string/app_name" >
             <intent-filter>
                 <action android:name=
                 	"android.intent.action.MAIN" />

                 <category android:name=
                 	"android.intent.category.LAUNCHER" />
             </intent-filter>
       </activity>
       
       <activity
            android:name=
            	"com.jtechies.androidapp.MainActivity"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name=
                	"android.intent.action.MAIN" />

               <category android:name=
               	"android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
   </application>

</manifest>

Setting Up Toggle Button, Gravity [left, center, right] and Color for Text

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android=
	"http://schemas.android.com/apk/res/android"
    android:padding="25dp"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >
    
    <EditText
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:id="@+id/etCommands"
    android:hint="Type a Command"
    android:password="true"
    >

</EditText>

    <LinearLayout 
    android:weightSum="100"    
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:orientation="horizontal"
        >
    
    <Button
        android:layout_weight="20"
        android:id="@+id/bResults"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="Try Command" />

    <ToggleButton
        android:layout_weight="80"
        android:paddingBottom="15dp"
        android:checked="true"
        android:id="@+id/tbPassword"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="ToggleButton" />
	
	</LinearLayout>
    
    
    <TextView
        android:id="@+id/tvResults"
        android:gravity="center"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="invalid" />

</LinearLayout>
package com.jtechies.androidapp;

import java.util.Random;

import android.app.Activity;
import android.graphics.Color;
import android.os.Bundle;
import android.text.InputType;
import android.view.Gravity;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.ToggleButton;

public class TextPlay extends Activity
	implements View.OnClickListener{
	
	Button chkCmd;
	ToggleButton passTog;
	EditText input;
	TextView display;
	@Override
	protected void onCreate
		(Bundle savedInstanceState) {
		// TODO Auto-generated method stub
		super.onCreate(savedInstanceState);
		setContentView(R.layout.text);
		
		jtechies();
		passTog.setOnClickListener(this);
		chkCmd.setOnClickListener(this);
	}
	private void jtechies() {
		// TODO Auto-generated method stub
		chkCmd = (Button)
			findViewById(R.id.bResults);
		passTog = (ToggleButton)
			findViewById(R.id.tbPassword); 
		input = (EditText)
			findViewById(R.id.etCommands);
		display = (TextView)
			findViewById(R.id.tvResults);
	}
	@Override
	public void onClick(View view) {
		// TODO Auto-generated method stub
		switch(view.getId()){
		case R.id.bResults:
			
				// TODO Auto-generated method stub
				String check =
					input.getText().toString();
				display.setText(check);
				if(check.contentEquals("left")){
					display.setGravity(Gravity.LEFT);
				}
				else if (check.contentEquals("center")){
					display.setGravity(Gravity.CENTER);
				}
				else if (check.contentEquals("right")){
					display.setGravity(Gravity.RIGHT);
				}
				else if (check.contentEquals("blue")){
					display.setTextColor(Color.BLUE);
				}
				else if (check.contains("WTF")){
					Random crazy = new Random();
					display.setText("WTF!!!!");
					display.setTextSize
					(crazy.nextInt(75));
					display.setTextColor
					(Color.rgb(crazy.nextInt(265),
					crazy.nextInt(265),
					crazy.nextInt(265)));
					switch(crazy.nextInt(3)){
					case 0:
						display.setGravity
							(Gravity.LEFT);
						break;
					case 1:
						display.setGravity
							(Gravity.CENTER);
						break;
					case 2:
						display.setGravity
							(Gravity.RIGHT);
						break;
					}
				}
				else{
					display.setText("invalid");
					display.setGravity(Gravity.CENTER);
					display.setTextColor(Color.WHITE);
				}
			break;
			
		case R.id.tbPassword:
			if(passTog.isChecked()){
				input.setInputType
					(InputType.TYPE_CLASS_TEXT | 
				InputType.TYPE_TEXT_VARIATION_PASSWORD);
			}
			else{
				input.setInputType
					(InputType.TYPE_CLASS_TEXT);
			}
			break; 
		}
	}
}
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android=
	"http://schemas.android.com/apk/res/android"
    package="com.jtechies.androidapp"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk
        android:minSdkVersion="8"
        android:targetSdkVersion="17" />

    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        
       <activity           
            android:name=".TextPlay"
            android:label="@string/app_name"
            android:theme="@android:style/Theme.Black">
       </activity>
       
   </application>

</manifest>

E-mail sending Application in Android

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android=
	"http://schemas.android.com/apk/res/android"
	android:orientation="vertical"
	android:layout_width="match_parent"
	android:weightSum="100"
	android:layout_height="match_parent">
	<ScrollView 
	    android:layout_weight="30"
	    android:layout_width="fill_parent"
		android:layout_height="fill_parent">

		<LinearLayout
		    android:orientation="vertical"
			android:layout_width="match_parent"
			android:layout_height="match_parent">
			<TextView
			    android:text="Email address(es):"
				android:layout_width="wrap_content"
				android:layout_height="wrap_content">
			    
			</TextView>
			<EditText
			    android:layout_height="wrap_content"
				android:layout_width="match_parent"
				android:id="@+id/etEmails">
			</EditText>
			<TextView
			    android:text="Introduction:"
				android:layout_width="wrap_content"
				android:layout_height="wrap_content">
			    
			</TextView>
			<EditText
			    android:layout_height="wrap_content"
				android:layout_width="match_parent"
				android:id="@+id/etIntro">
			    
			</EditText>
			<TextView
			    android:text="Person's name"
			    android:layout_width="wrap_content"
				android:layout_height="wrap_content">
			    
			</TextView>
			<EditText
			    android:layout_height="wrap_content"
				android:layout_width="match_parent"
				android:id="@+id/etName">
			    
			</EditText>
			<TextView
			    android:text=
			    	"What Things that this Person does"
				android:layout_width="wrap_content"
				android:layout_height="wrap_content">
			    
			</TextView>
			<EditText
			    android:layout_height="wrap_content"
				android:layout_width="match_parent"
				android:id="@+id/etThings">
			    
			</EditText>
			<TextView
			    android:text=
			    	"What you want to do to this person:"
				android:layout_width="wrap_content"
				android:layout_height="wrap_content">
			    
			</TextView>
			<EditText
			    android:layout_height="wrap_content"
				android:layout_width="match_parent"
				android:id="@+id/etAction">
			    
			</EditText>
			<TextView
			    android:text="Outro"
			    android:layout_width="wrap_content"
				android:layout_height="wrap_content">
			    
			</TextView>
			<EditText
			    android:layout_height="wrap_content"
				android:layout_width="match_parent"
				android:id="@+id/etOutro">
			    
			</EditText>
		</LinearLayout>
	</ScrollView>
	<LinearLayout
	    android:orientation="vertical"
		android:layout_width="match_parent"
		android:layout_weight="40"
		android:layout_height="fill_parent">
		<Button
		    android:text="Send Email"
		    android:id="@+id/bSentEmail"
			android:layout_width="fill_parent"
			android:layout_height="fill_parent">
		    
		</Button>
	</LinearLayout>
	<LinearLayout
	    android:orientation="vertical"
		android:layout_width="match_parent"
		android:layout_weight="30"
		android:layout_height="fill_parent">
		<AnalogClock
		    android:id="@+id/analogClock1"
			android:layout_width="fill_parent"
			android:layout_height="fill_parent">
		    
		</AnalogClock>
	</LinearLayout>
</LinearLayout>
package com.jtechies.androidapp;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;

public class Email extends Activity
	implements View.OnClickListener {

	EditText personsEmail, intro,
	personsName, stupidThings, hatefulAction,
			outro;
	String emailAdd, beginning, name,
		stupidAction, hatefulAct, out;
	Button sendEmail;

	@Override
	protected void onCreate
		(Bundle savedInstanceState) {
		// TODO Auto-generated method stub
		super.onCreate(savedInstanceState);
		setContentView(R.layout.email);
		initializeVars();
		sendEmail.setOnClickListener(this);
	}

	private void initializeVars() {
		// TODO Auto-generated method stub
		personsEmail = (EditText)
			findViewById(R.id.etEmails);
		intro = (EditText)
			findViewById(R.id.etIntro);
		personsName = (EditText)
			findViewById(R.id.etName);
		stupidThings = (EditText)
			findViewById(R.id.etThings);
		hatefulAction = (EditText)
			findViewById(R.id.etAction);
		outro = (EditText)
			findViewById(R.id.etOutro);
		sendEmail = (Button)
			findViewById(R.id.bSentEmail);
	}

	public void onClick(View v) {
		// TODO Auto-generated method stub

		convertEditTextVarsIntoStrings
		AndYesThisIsAMethodWeCreated();
		String emailaddress[] = { emailAdd };
		String message = "Hello Dear, "
				+ name
				+ " Welcome to the world of jtechies.com "
				+ beginning
				+ " where we spread the 
				knowledge of innovators
				absolutely free. "
				+ stupidAction
				+ " jtechies Heights is a 
				real-time website "
				+ hatefulAct
				+ " that connects you "
				+ out
				+ " to the latest technology."
				+ '\n';
		Intent emailIntent = new Intent
		(android.content.Intent.ACTION_SEND);
		emailIntent.putExtra
		(android.content.Intent.EXTRA_EMAIL,
			emailaddress);
		emailIntent.putExtra
		(android.content.Intent.EXTRA_SUBJECT,
		"jtechies Heights!");
		emailIntent.setType("plain/text");
		emailIntent.putExtra
		(android.content.Intent.EXTRA_TEXT, message);
		startActivity(emailIntent);
	}

	private void convertEditTextVarsInto
	StringsAndYesThisIsAMethodWeCreated() {
		// TODO Auto-generated method stub
		emailAdd = personsEmail.getText().toString();
		beginning = intro.getText().toString();
		name = personsName.getText().toString();
		stupidAction = stupidThings.getText().toString();
		hatefulAct = hatefulAction.getText().toString();
		out = outro.getText().toString();
	}

	@Override
	protected void onPause() {
		// TODO Auto-generated method stub
		super.onPause();
		finish();
	}

}
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android=
	"http://schemas.android.com/apk/res/android"
    package="com.jtechies.androidapp"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk
        android:minSdkVersion="8"
        android:targetSdkVersion="17" />

    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        
       <activity
            android:name=".Email"
            android:label="@string/app_name" >
        </activity>
       
   </application>

</manifest>

Taking Photo through Camera and Setting it on Wall

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

    <ImageView
        android:id="@+id/ivReturnedPic"
        android:layout_gravity="center"
        android:layout_width="250dp"
        android:layout_height="250dp"
        android:src="@drawable/ic_launcher" />

    <ImageButton
        android:id="@+id/ibTakePic"
        android:layout_gravity="center"
        android:layout_width="125dp"
        android:layout_height="wrap_content"
        android:src="@drawable/ic_launcher" />

    <Button
        android:id="@+id/bSetWall"
        android:layout_gravity="center"
        android:layout_width="125dp"
        android:layout_height="wrap_content"
        android:text="Set Wallpaper" />

</LinearLayout>
package com.jtechies.androidapp;

import java.io.IOException;
import java.io.InputStream;

import android.app.Activity;
import android.content.Intent;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.ImageButton;
import android.widget.ImageView;

public class Camera extends Activity
	implements View.OnClickListener{

	ImageButton ib;
	Button b;
	ImageView iv;
	Intent i;
	final static int cameraData = 0;
	Bitmap bmp;
	
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		// TODO Auto-generated method stub
		super.onCreate(savedInstanceState);
		setContentView(R.layout.photo);
		initialize();
		InputStream is = getResources()
		.openRawResource(R.drawable.ic_launcher);
		bmp = BitmapFactory.decodeStream(is);
	}
	private void initialize() {
		// TODO Auto-generated method stub
		iv = (ImageView) findViewById
			(R.id.ivReturnedPic);
		ib = (ImageButton) findViewById
			(R.id.ibTakePic);
		b = (Button) findViewById(R.id.bSetWall);
		b.setOnClickListener(this);
		ib.setOnClickListener(this);
	}
	@Override
	public void onClick(View v) {
		// TODO Auto-generated method stub
		switch (v.getId()){
		
		case R.id.bSetWall:
			try {
				getApplicationContext().setWallpaper(bmp);
			} catch (IOException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		break;
		
		case R.id.ibTakePic:
		i = new Intent(android.provider
			.MediaStore.ACTION_IMAGE_CAPTURE);
		startActivityForResult(i, cameraData);
		break;
		}
	}
	@Override
	protected void onActivityResult(int requestCode,
		int resultCode, Intent data) {
		// TODO Auto-generated method stub
		super.onActivityResult
			(requestCode, resultCode, data);
		if (resultCode == RESULT_OK){
			Bundle extras = data.getExtras();
			bmp = (Bitmap) extras.get("data");
			iv.setImageBitmap(bmp);
		}
	}
	
}
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android=
	"http://schemas.android.com/apk/res/android"
    package="com.jtechies.androidapp"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk
        android:minSdkVersion="8"
        android:targetSdkVersion="17" />

    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        
       <activity
            android:name=".Camera"
            android:label="@string/app_name" >
        </activity>
       
   </application>

</manifest>

Animating a Bitmap Using Custom Animation Class and Drawing Bitmaps to Canvas View

package com.jtechies.androidapp;

import android.app.Activity;
import android.content.Context;
import android.os.Bundle;
import android.os.PowerManager;
import android.os.PowerManager.WakeLock;

public class GFX extends Activity{
	
	Myjtechies ourView;
	WakeLock wL;

	@Override
	protected void onCreate
		(Bundle savedInstanceState) {
		// TODO Auto-generated method stub
		
		//wake-lock
		PowerManager pM = (PowerManager)
		getSystemService(Context.POWER_SERVICE);
		wL = pM.newWakeLock
		(PowerManager.FULL_WAKE_LOCK, "whatever");
		
		super.onCreate(savedInstanceState);
		wL.acquire();
		ourView = new Myjtechies(this);
		setContentView(ourView);
	}

	@Override
	protected void onPause() {
		// TODO Auto-generated method stub
		super.onPause();
		wL.release();
	}

}
package com.jtechies.androidapp;

import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.Paint.Align;
import android.graphics.Rect;
import android.graphics.Typeface;
import android.view.View;

public class Myjtechies extends View{
	
	Bitmap gBall;
	float changingY;
	Typeface font;

	public Myjtechies(Context context) {
		super(context);
		// TODO Auto-generated constructor stub
		gBall = BitmapFactory.decodeResource
		(getResources(), R.drawable.greenball);
		changingY = 0;
		font = Typeface.createFromAsset
		(context.getAssets(), "G-Unit.ttf");
	}

	@Override
	protected void onDraw(Canvas canvas) {
		// TODO Auto-generated method stub
		super.onDraw(canvas);
		canvas.drawColor(Color.WHITE);
		
		Paint textPaint = new Paint();
		textPaint.setARGB(50, 254, 10, 50);
		textPaint.setTextAlign(Align.CENTER);
		textPaint.setTextSize(50);
		textPaint.setTypeface(font);
		canvas.drawText("myjtechies", 
		canvas.getWidth()/2, 200, textPaint);
		
		canvas.drawBitmap(gBall, 
		(canvas.getWidth()/2), changingY, null);
		if(changingY < canvas.getHeight()){
			changingY += 10;
		}
		else{
			changingY = 0;
		}
		Rect middleRect = new Rect();
		middleRect.set(0, 400, canvas.getWidth(), 550);
		Paint ourBlue = new Paint();
		ourBlue.setColor(Color.BLUE);
		canvas.drawRect(middleRect, ourBlue);
		invalidate();
	}
}
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android=
"http://schemas.android.com/apk/res/android"
    package="com.jtechies.androidapp"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk
        android:minSdkVersion="8"
        android:targetSdkVersion="17" />

    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        
       <activity
            android:name=".GFX"
            android:label="@string/app_name" >
        </activity>
       
   </application>

</manifest>

Starting an Activity for a result and Getting Data from a different Activity

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android=
	"http://schemas.android.com/apk/res/android"
    android:id="@+id/relLayout"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >

    <EditText
        android:id="@+id/etSend"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" >
    </EditText>

    <Button
        android:id="@+id/bSA"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentRight="true"
        android:layout_below="@id/etSend"
        android:text="StartActivity" >
    </Button>

    <Button
        android:id="@+id/bSAFR"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignTop="@id/bSA"
        android:layout_toLeftOf="@id/bSA"
        android:text="StartActivityForResult" >
    </Button>

    <TextView
        android:id="@+id/tvGot"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@id/bSAFR"
        android:text="TextView" >
    </TextView>

</RelativeLayout>
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android=
	"http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >

    <TextView
        android:id="@+id/tvQuestion"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Travis is..."
        android:textAppearance=
        "?android:attr/textAppearanceSmall" />

    <RadioGroup
        android:id="@+id/rgAnswers"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" >

        <RadioButton
            android:id="@+id/rCrazy"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Crazy" />

        <RadioButton
            android:id="@+id/rPower"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="SUPER Power" />

        <RadioButton
            android:id="@+id/rBoth"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Both" />
    </RadioGroup>

    <Button
        android:id="@+id/bReturn"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Return" />

    <TextView
        android:id="@+id/tvText"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="TextView" />

</LinearLayout>
package com.jtechies.androidapp;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.RelativeLayout;
import android.widget.TextView;

public class Data extends Activity
	implements OnClickListener {

	Button start, startFor;
	EditText sendET;
	TextView gotAnswer;
	RelativeLayout rl;

	@Override
	protected void onCreate
		(Bundle savedInstanceState) {
		// TODO Auto-generated method stub
		super.onCreate(savedInstanceState);
		setContentView(R.layout.get);
		initialize();
		rl = (RelativeLayout)
		findViewById(R.id.relLayout);
		
	}

	private void initialize() {
		// TODO Auto-generated method stub
		start = (Button)
			findViewById(R.id.bSA);
		startFor = (Button)
			findViewById(R.id.bSAFR);
		sendET = (EditText)
			findViewById(R.id.etSend);
		gotAnswer = (TextView)
			findViewById(R.id.tvGot);
		start.setOnClickListener(this);
		startFor.setOnClickListener(this);
	}

	public void onClick(View arg0) {
		// TODO Auto-generated method stub
		switch (arg0.getId()) {
		case R.id.bSA:
			String bread = 
				sendET.getText().toString();
			Bundle basket = new Bundle();
			basket.putString("key", bread);
			Intent a = new Intent(Data.this,
				OpenedClass.class);
			a.putExtras(basket);
			startActivity(a);
			break;
		case R.id.bSAFR:
			Intent i = new Intent(Data.this,
				OpenedClass.class);
			startActivityForResult(i, 0);
			break;
		}
	}

	@Override
	protected void onActivityResult(int requestCode,
		int resultCode, Intent data) {
		// TODO Auto-generated method stub
		super.onActivityResult(requestCode,
			resultCode, data);
		if (resultCode == RESULT_OK){
			Bundle basket = data.getExtras();
			String s = basket.getString("answer");
			gotAnswer.setText(s);
		}
	}

}
package com.jtechies.androidapp;

import android.app.Activity;
import android.content.Intent;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.preference.PreferenceManager;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.RadioGroup;
import android.widget.RadioGroup
		.OnCheckedChangeListener;
import android.widget.TextView;

public class OpenedClass extends Activity
implements OnClickListener, OnCheckedChangeListener {

	TextView question, test;
	Button returnData;
	RadioGroup selectionList;
	String gotBread, setData;
	
	

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		// TODO Auto-generated method stub
		super.onCreate(savedInstanceState);
		setContentView(R.layout.send);
		initialize();
		
		SharedPreferences getData = PreferenceManager
		.getDefaultSharedPreferences(getBaseContext());
		String et = getData.getString("name", 
		"jtechies is...");
		String values = getData.getString
		("list", "1");
		if(values.contentEquals("1")){
			question.setText(et);
		}
		
		
		Bundle gotBasket = getIntent()
			.getExtras();
		gotBread = gotBasket.getString("key");
		question.setText(gotBread);
		
	}

	private void initialize() {
		// TODO Auto-generated method stub
		question = (TextView) findViewById
			(R.id.tvQuestion);
		test = (TextView) findViewById(R.id.tvText);
		returnData = (Button) findViewById
			(R.id.bReturn);
		returnData.setOnClickListener(this);
		selectionList = (RadioGroup)
			findViewById(R.id.rgAnswers);
		selectionList.setOnCheckedChangeListener(this );
	}

	public void onClick(View arg0) {
		// TODO Auto-generated method stub
		Intent person = new Intent();
		Bundle backpack = new Bundle();
		backpack.putString("answer", setData);
		person.putExtras(backpack);
		setResult(RESULT_OK, person);
		finish();
	}

	public void onCheckedChanged
		(RadioGroup arg0, int arg1) {
		// TODO Auto-generated method stub
		switch (arg1) {
		case R.id.rCrazy:
			setData = "Probably right!";
			break;
		case R.id.rPower:
			setData = "Definitely right!";
			break;
		case R.id.rBoth:
			setData = "Spot On!";
			break;
		}
		test.setText(setData);
	}
}
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android=
	"http://schemas.android.com/apk/res/android"
    package="com.jtechies.androidapp"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk
        android:minSdkVersion="8"
        android:targetSdkVersion="17" />

    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        
       <activity
            android:name=".Data"
            android:label="@string/app_name" >
        </activity>
       
   </application>

</manifest>

Setting up Animation Thread, OnTouch Method, MotionEvents and Motion Actions with Gaming Programming Concept

package com.jtechies.androidapp;

import android.app.Activity;
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.os.Bundle;
import android.view.MotionEvent;
import android.view.SurfaceHolder;
import android.view.SurfaceView;
import android.view.View;
import android.view.View.OnTouchListener;

public class GFXSurface extends Activity
	implements OnTouchListener{
	
	MyjtechiesSurface ourSurfaceView;
	float x,y, sX, sY, fX, fY, dX, dY,
		aniX, aniY, scaledX, scaledY;
	Bitmap test, plus;
	

	@Override
	protected void onCreate
		(Bundle savedInstanceState) {
		// TODO Auto-generated method stub
		super.onCreate(savedInstanceState);
		ourSurfaceView = new MyjtechiesSurface(this);
		ourSurfaceView.setOnTouchListener(this);
		x=0;
		y=0;
		sX=0;
		sY=0;
		fX=0;
		fY=0;
		dX = dY = aniX = aniY = scaledX =
			scaledY = 0;
		test = BitmapFactory.decodeResource
		(getResources(), R.drawable.greenball);
		plus = BitmapFactory.decodeResource
		(getResources(), R.drawable.plus);
		setContentView(ourSurfaceView);
	}

	@Override
	protected void onPause() {
		// TODO Auto-generated method stub
		super.onPause();
		ourSurfaceView.pause();
	}

	@Override
	protected void onResume() {
		// TODO Auto-generated method stub
		super.onResume();
		ourSurfaceView.resume();
	}

	@Override
	public boolean onTouch(View v, 
		MotionEvent event) {
		// TODO Auto-generated method stub
		
		try {
			Thread.sleep(50);
		} catch (InterruptedException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
		x = event.getX();
		y = event.getY();
		
		switch(event.getAction()){
		case MotionEvent.ACTION_DOWN:
			sX = event.getX();
			sY = event.getY();
			dX = dY = aniX = aniY = scaledX =
				scaledY = fX = fY = 0;
			break;
			
		case MotionEvent.ACTION_UP:
			fX = event.getX();
			fY = event.getY();
			dX = fX-sX;
			dY = fY-sY;
			scaledX = dX/30;
			scaledY = dY/30;
			x = y = 0;
			break;
		}
		return true;
	}
	public class MyjtechiesSurface extends
		SurfaceView implements Runnable{
		
		SurfaceHolder ourHolder;
		Thread ourThread = null;
		boolean isRunning = false;

		public MyjtechiesSurface(Context context) {
			// TODO Auto-generated constructor stub
			super(context);
			ourHolder = getHolder();
			
		}
		
		public void pause(){
			isRunning = false;
			while(true){
				try {
					ourThread.join();
				} catch (InterruptedException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
				break;
			}
			ourThread = null;
		}
		
		public void resume(){
			isRunning = true;
			ourThread = new Thread(this);
			ourThread.start();
		}

		@Override
		public void run() {
			// TODO Auto-generated method stub
			while(isRunning){
				if(!ourHolder.getSurface().isValid())
					continue;
				
				Canvas canvas = ourHolder.lockCanvas();
				canvas.drawRGB(02, 02, 150);
				if(x != 0 && y != 0){
					
					canvas.drawBitmap(test, 
						x-(test.getWidth()/2),
					 y-(test.getHeight()/2), null);
				}
				if(sX != 0 && sY != 0){
					
					canvas.drawBitmap(plus, 
						sX-(plus.getWidth()/2),
					 sY-(plus.getHeight()/2), null);
				}
				if(fX != 0 && fY != 0){
	
					canvas.drawBitmap(test, 
						fX-(test.getWidth()/2)-aniX,
					 fY-(test.getHeight()/2)-aniY,
					 null);
					canvas.drawBitmap(plus,
					fX-(plus.getWidth()/2),
					 fY-(plus.getHeight()/2), null);
					
				}
				aniX = aniX + scaledX;
				aniY = aniY + scaledY;
				ourHolder.unlockCanvasAndPost
				(canvas);
			}
		}

	}
	
}
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android=
	"http://schemas.android.com/apk/res/android"
    package="com.jtechies.androidapp"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk
        android:minSdkVersion="8"
        android:targetSdkVersion="17" />

    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        
       <activity
            android:name=".GFXSurface"
            android:label="@string/app_name" >
        </activity>
       
   </application>

</manifest>

Creating a Soundstuff on click of the Screen

package com.jtechies.androidapp;

import android.app.Activity;
import android.media.AudioManager;
import android.media.MediaPlayer;
import android.media.SoundPool;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.View.OnLongClickListener;

public class SoundStuff extends Activity
implements OnClickListener, OnLongClickListener{
	
	SoundPool sp;
	int explosion = 0;
	MediaPlayer mp;

	@Override
	protected void onCreate
		(Bundle savedInstanceState) {
		// TODO Auto-generated method stub
		super.onCreate(savedInstanceState);
		View v = new View(this);
		v.setOnClickListener(this);
		v.setOnLongClickListener(this);
		setContentView(v);
		sp = new SoundPool(5, 
			AudioManager.STREAM_MUSIC, 0);
		explosion = sp.load(this, 
			R.raw.explosion, 1);
		mp = MediaPlayer.create(this, 
			R.raw.backgroundmusic);
	}

	@Override
	public void onClick(View arg0) {
		// TODO Auto-generated method stub
		if (explosion != 0)
		sp.play(explosion, 1, 1, 0, 0, 1);
	}

	@Override
	public boolean onLongClick(View arg0) {
		// TODO Auto-generated method stub
		mp.start();
		return false;
	}
}
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android=
	"http://schemas.android.com/apk/res/android"
    package="com.jtechies.androidapp"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk
        android:minSdkVersion="8"
        android:targetSdkVersion="17" />

    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        
       <activity
            android:name=".SoundStuff"
            android:label="@string/app_name" >
        </activity>
       
   </application>

</manifest>
Setting Soundstuff on Click

When you click on the screen it will explore the sound which you set in the above Example

Creating a Slider with Lock function through checkbox

package com.jtechies.androidapp;

import android.app.Activity;
import android.media.MediaPlayer;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.CompoundButton;
import android.widget.CompoundButton
		.OnCheckedChangeListener;
import android.widget.SlidingDrawer;
import android.widget.SlidingDrawer
		.OnDrawerOpenListener;

public class Slider extends Activity
implements OnCheckedChangeListener,
OnClickListener, OnDrawerOpenListener{
	
	SlidingDrawer sd;

	@Override
	protected void onCreate
		(Bundle savedInstanceState) {
		// TODO Auto-generated method stub
		super.onCreate(savedInstanceState);
		setContentView(R.layout.sliding);
		Button handle1 = (Button)
			findViewById(R.id.handle1);
		Button handle2 = (Button)
			findViewById(R.id.handle2);
		Button handle3 = (Button)
			findViewById(R.id.handle3);
		Button handle4 = (Button)
			findViewById(R.id.handle4);
		CheckBox checkbox = (CheckBox)
			findViewById(R.id.cbSlidable);
		checkbox.setOnCheckedChangeListener(this);
		sd = (SlidingDrawer)
			findViewById(R.id.slidingD);
		sd.setOnDrawerOpenListener(this);
		handle1.setOnClickListener(this);
		handle2.setOnClickListener(this);
		handle3.setOnClickListener(this);
		handle4.setOnClickListener(this);
	}

	
	@Override
	public void onClick(View arg0) {
		// TODO Auto-generated method stub
		switch (arg0.getId()){
		case R.id.handle1:
			sd.open();
			break;
			
		case R.id.handle2:
			break;
			
		case R.id.handle3:
			sd.toggle();
			break;
			
		case R.id.handle4:
			sd.close();
			break;
		}
		
	}
	
	
	@Override
	public void onCheckedChanged
	(CompoundButton arg0, boolean arg1) {
		// TODO Auto-generated method stub
		if (arg0.isChecked()){
			sd.lock();
		}
		else{
			sd.unlock();
		}
		
	}


	@Override
	public void onDrawerOpened() {
		// TODO Auto-generated method stub
		MediaPlayer mp = 
		MediaPlayer.create
		(this, R.raw.explosion);
	}
}
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android=
"http://schemas.android.com/apk/res/android"
	 android:layout_width="match_parent"
	android:layout_height="match_parent">

	<LinearLayout xmlns:android=
	"http://schemas.android.com/apk/res/android"
	android:orientation="vertical"
	 android:layout_width="match_parent"
	android:layout_height="match_parent">
	<Button android:layout_width=
	"wrap_content" android:text="Handle"
		android:layout_height="wrap_content"
		android:id="@+id/handle1">
	</Button>
			<Button android:layout_width=
			"wrap_content" android:text="Handle1"
			android:layout_height="wrap_content"
			android:id="@+id/handle2">
	</Button>
			<Button android:layout_width=
			"wrap_content" android:text="Handle"
			android:layout_height="wrap_content"
			android:id="@+id/handle3">
	</Button>
			<Button android:layout_width=
			"wrap_content" android:text="Handle"
			android:layout_height="wrap_content"
			android:id="@+id/handle4">
	</Button>
			</LinearLayout>
	<SlidingDrawer 
	android:layout_width="match_parent"
		android:id="@+id/slidingD"
		android:layout_height="match_parent"
		android:handle="@+id/handle"
		android:content="@+id/content">
		<Button 
		android:layout_width="wrap_content"
		android:text="Handle"
		android:layout_height="wrap_content"
		android:id="@+id/handle">
	</Button>
		<LinearLayout 
		android:id="@+id/content"
			android:layout_width="match_parent"
			android:layout_height="match_parent">
			<CheckBox android:text="CheckBox"
			android:id="@+id/cbSlidable"
				android:layout_width="wrap_content"
				android:layout_height="wrap_content">
			</CheckBox>
			</LinearLayout>
	</SlidingDrawer>
</FrameLayout>
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android=
"http://schemas.android.com/apk/res/android"
    package="com.jtechies.androidapp"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk
        android:minSdkVersion="8"
        android:targetSdkVersion="17" />

    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        
       <activity
            android:name=".Slider"
            android:label="@string/app_name" >
        </activity>
       
   </application>

</manifest>
Setting up slider Slider toggle

If you check the checkbox then the slider will not slide, by unchecking it you will able to slide up and down.

Creating a Stopwatch in Tab with Manually Tab Adding Function Button

package com.jtechies.androidapp;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TabHost;
import android.widget.TabHost.TabSpec;
import android.widget.TextView;

public class Tabs extends Activity
	implements OnClickListener{
	
	TabHost th;
	TextView showResults;
	long start, stop;

	@Override
	protected void onCreate
	(Bundle savedInstanceState) {
		// TODO Auto-generated method stub
		super.onCreate(savedInstanceState);
		setContentView(R.layout.tabs);
		th = (TabHost) findViewById
			(R.id.tabhost);
		Button newTab = (Button)
			findViewById(R.id.bAddTab);
		Button bStart = (Button)
			findViewById(R.id.bStartWatch);
		Button bStop = (Button)
			findViewById(R.id.bStopWatch);
		showResults = (TextView)
			findViewById(R.id.tvShowResults);
		
		bStart.setOnClickListener(this);
		bStop.setOnClickListener(this);
		
		newTab.setOnClickListener(this);
		
		
		th.setup();
		TabSpec specs = th.newTabSpec("tag1");
		specs.setContent(R.id.tab1);
		specs.setIndicator("StopWatch");
		th.addTab(specs);
		specs = th.newTabSpec("tag2");
		specs.setContent(R.id.tab2);
		specs.setIndicator("Tab 2");
		th.addTab(specs);
		specs = th.newTabSpec("tag3");
		specs.setContent(R.id.tab3);
		specs.setIndicator("Add a Tab");
		th.addTab(specs);
		start = 0;
		
	}

	@Override
	public void onClick(View v) {
		// TODO Auto-generated method stub
		switch(v.getId()){
		case R.id.bAddTab:
			
			TabSpec ourSpec = 
				th.newTabSpec("tag1");
			ourSpec.setContent(new 
				TabHost.TabContentFactory() {
				
				@Override
				public View createTabContent
					(String tag) {
					// TODO Auto-generated 
					// method stub
					
					TextView text = new 
						TextView(Tabs.this);
					text.setText("You've 
					created a new Tab!");
					return null;
				}
			});
			ourSpec.setIndicator("New");
			th.addTab(ourSpec);
			
			break;
			
		case R.id.bStartWatch:
			start = System.currentTimeMillis();
			break;
			
		case R.id.bStopWatch:
			stop = System.currentTimeMillis();
			
			if (start !=0){
				long result = stop - start;
				int millis = (int) result;
				int seconds = (int) result/1000;
				int minutes = seconds/60;
				millis = millis % 100;
				seconds = seconds % 60;
				
				showResults.setText(String.format
				("%d:%02d:%02d", minutes, seconds,
				 millis));
			}
			break;
		}
	}

}
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android=
"http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >

    <TabHost
        android:id="@+id/tabhost"
        android:layout_width="match_parent"
        android:layout_height="match_parent" >

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:orientation="vertical" >

            <TabWidget
                android:id="@android:id/tabs"
                android:layout_width="match_parent"
                android:layout_height="wrap_content">
            </TabWidget>

            <FrameLayout
                android:id="@android:id/tabcontent"
                android:layout_width="match_parent"
                android:layout_height="match_parent" >

                <LinearLayout
                    android:id="@+id/tab1"
                    android:layout_width=
                    	"match_parent"
                    android:layout_height=
                    "match_parent">

                    <Button
                        android:id="@+id/bStartWatch"
                        android:layout_width=
                        	"wrap_content"
                        android:layout_height=
                        	"wrap_content"
                        android:text="Start" />

                  <Button
                      android:id="@+id/bStopWatch"
                      android:layout_width="wrap_content"
                      android:layout_height="wrap_content"
                      android:text="Stop" />

                  <TextView
                      android:id="@+id/tvShowResults"
                      android:layout_width="wrap_content"
                      android:layout_height="wrap_content"
                      android:text="TextView" />

                </LinearLayout>

                <LinearLayout
                    android:id="@+id/tab2"
                    android:layout_width="match_parent"
                    android:layout_height="match_parent" >
                  <TextView
                      android:id="@+id/textView2"
                      android:layout_width="wrap_content"
                      android:layout_height="wrap_content"
                      android:text="TextView" />
                </LinearLayout>

                <LinearLayout
                    android:id="@+id/tab3"
                    android:layout_width="match_parent"
                    android:layout_height="match_parent" >
                  <Button
                      android:id="@+id/bAddTab"
                      android:layout_width="wrap_content"
                      android:layout_height="wrap_content"
                      android:text="Add a Tab" />
                </LinearLayout>
            </FrameLayout>
        </LinearLayout>
    </TabHost>

</LinearLayout>
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android=
"http://schemas.android.com/apk/res/android"
    package="com.jtechies.androidapp"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk
        android:minSdkVersion="8"
        android:targetSdkVersion="17" />

    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        
       <activity
            android:name=".Tabs"
            android:label="@string/app_name" >
        </activity>
       
   </application>

</manifest>

Creating own Browser in Android

package com.jtechies.androidapp;

import android.app.Activity;
import android.content.Context;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.inputmethod.InputMethodManager;
import android.webkit.WebView;
import android.widget.Button;
import android.widget.EditText;

public class SimpleBrowser extends Activity
	implements OnClickListener{


	EditText url;
	WebView ourBrow;
	
	@Override
	protected void onCreate
	(Bundle savedInstanceState) {
		// TODO Auto-generated method stub
		super.onCreate(savedInstanceState);
		setContentView(R.layout.simplebrowser);
		
		ourBrow = (WebView)
			findViewById(R.id.wvBrowser);
		
		ourBrow.getSettings()
			.setJavaScriptEnabled(true);
		ourBrow.getSettings()
			.setLoadWithOverviewMode(true);
		ourBrow.getSettings()
			.setUseWideViewPort(true);
		
		ourBrow.setWebViewClient
			(new ourViewClient());
		try{
			ourBrow.loadUrl
			("http://www.google.com");
		}catch(Exception e){
			e.printStackTrace();
		}
		
		Button go = (Button)
			findViewById(R.id.bGo);
		Button back = (Button)
			findViewById(R.id.bBack);
		Button refresh = (Button)
			findViewById(R.id.bRefresh);
		Button forward = (Button)
			findViewById(R.id.bForward);
		Button clearHistory = (Button)
			findViewById(R.id.bHistory);
		url = (EditText) findViewById
			(R.id.etURL);
		go.setOnClickListener(this);
		back.setOnClickListener(this);
		refresh.setOnClickListener(this);
		forward.setOnClickListener(this);
		clearHistory.setOnClickListener(this);
	}

	public void onClick(View v) {
		// TODO Auto-generated method stub
		switch (v.getId()){
		case R.id.bGo:
			String theWebsite = 
			url.getText().toString();
			ourBrow.loadUrl(theWebsite);
			//Hiding the Keyboard after 
			//using an EditText
			InputMethodManager imm = 
			(InputMethodManager) 
			getSystemService
			(Context.INPUT_METHOD_SERVICE);
			imm.hideSoftInputFromWindow
			(url.getWindowToken(), 0);
			break;
		case R.id.bBack:
			if (ourBrow.canGoBack())
			ourBrow.goBack();
			break;
		case R.id.bForward:
			if (ourBrow.canGoForward())
				ourBrow.goForward();
			break;
		case R.id.bRefresh:
			ourBrow.reload();
			break;
		case R.id.bHistory:
			ourBrow.clearHistory();
			break;
		}
	}

}
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android=
"http://schemas.android.com/apk/res/android"
	android:orientation="vertical"
	android:layout_width="match_parent"
	android:layout_height="match_parent">
	<LinearLayout xmlns:android=
	"http://schemas.android.com/apk/res/android"
		android:orientation="horizontal" 
		android:weightSum="10"
		android:layout_width="match_parent" 
		android:layout_height="wrap_content">
		<EditText android:layout_width=
		"match_parent"
			android:layout_weight="2" 
			android:layout_height=
			"wrap_content"
			android:id="@+id/etURL">
		</EditText>
		<Button android:text="Go" 
		android:id="@+id/bGo"
			android:layout_weight="8" 
			android:layout_width="fill_parent"
			android:layout_height=
			"wrap_content">
		</Button>
	</LinearLayout>
	<LinearLayout xmlns:android=
	"http://schemas.android.com/apk/res/android"
		android:orientation="horizontal" 
		android:weightSum="8"
		android:layout_width="match_parent" 
		android:layout_height="wrap_content">
		<Button android:text="Go Back a Page" 
		android:id="@+id/bBack"
			android:layout_weight="2" 
			android:layout_width="fill_parent"
			android:layout_height=
			"wrap_content">	
		</Button>
		<Button android:text="Go Forward" 
		android:id="@+id/bForward"
			android:layout_weight="2" 
			android:layout_width="fill_parent"
			android:layout_height=
			"wrap_content">
			</Button>
		<Button android:text="Refresh Page" 
		android:id="@+id/bRefresh"
			android:layout_weight="2" 
			android:layout_width="fill_parent"
			android:layout_height="wrap_content">
			</Button>
		<Button android:text="Clear History"
		android:id="@+id/bHistory"
			android:layout_weight="2" 
			android:layout_width="fill_parent"
			android:layout_height="wrap_content">
			</Button>
	</LinearLayout>
	
	<WebView android:layout_width="fill_parent"
	android:layout_height="fill_parent"
	android:id="@+id/wvBrowser"/>
	
</LinearLayout>
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android=
"http://schemas.android.com/apk/res/android"
    package="com.jtechies.androidapp"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk
        android:minSdkVersion="8"
        android:targetSdkVersion="17" />

    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        
       <activity
            android:name=".SimpleBrowser"
            android:label="@string/app_name" >
        </activity>
       
   </application>

</manifest>

Creating a Flipper [By clicking and also Automated]

package com.jtechies.androidapp;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.ViewFlipper;

public class Flipper extends Activity
	implements OnClickListener{

	ViewFlipper flippy;
	
	@Override
	protected void onCreate
		(Bundle savedInstanceState) {
		// TODO Auto-generated method stub
		super.onCreate(savedInstanceState);
		setContentView(R.layout.flipper);
		flippy = (ViewFlipper) findViewById
			(R.id.viewFlipper1);
		flippy.setOnClickListener(this);
		flippy.setFlipInterval(500);
		flippy.startFlipping();
	}

	public void onClick(View arg0) {
		// TODO Auto-generated method stub
		flippy.showNext();
	}
}
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android=
"http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >

    <ViewFlipper
        android:id="@+id/viewFlipper1"
        android:layout_width="match_parent"
        android:layout_height="fill_parent" >

        <Button
            android:id="@+id/button1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Button" >
        </Button>

        <TextView
            android:id="@+id/textView1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Flipper 2" >
        </TextView>

        <TextView
            android:id="@+id/textView1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Flipper 3" >
        </TextView>

        <TextView
            android:id="@+id/textView1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Flipper 4" >
        </TextView>
    </ViewFlipper>

</LinearLayout>
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android=
"http://schemas.android.com/apk/res/android"
    package="com.jtechies.androidapp"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk
        android:minSdkVersion="8"
        android:targetSdkVersion="17" />

    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        
       <activity
            android:name=".Flipper"
            android:label="@string/app_name" >
        </activity>
       
   </application>

</manifest>

Saving and Retreiving Data with SharedPreferences

package com.jtechies.androidapp;

import android.app.Activity;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;

public class SharedPrefs extends Activity
implements OnClickListener{
	
	EditText sharedData;
	TextView dataResults;
	public static String filename =
	"MySharedString";
	SharedPreferences someData;


	@Override
	protected void onCreate
		(Bundle savedInstanceState) {
		// TODO Auto-generated method stub
		super.onCreate(savedInstanceState);
		setContentView(R.layout.sharedpreferences);
		setupVariables();
		someData = getSharedPreferences(filename, 0);
	}
	
	
	private void setupVariables() {
		// TODO Auto-generated method stub
		Button save = (Button) 
		findViewById(R.id.bSave);
		Button load = (Button) 
		findViewById(R.id.bLoad);
		sharedData = (EditText) 
		findViewById(R.id.etSharedPrefs);
		dataResults = (TextView) 
		findViewById(R.id.tvLoadSharedPrefs);
		save.setOnClickListener(this);
		load.setOnClickListener(this);
	}
	public void onClick(View v) {
		// TODO Auto-generated method stub
		switch (v.getId()){
		case R.id.bSave:
			String stringData = 
			sharedData.getText().toString();
			SharedPreferences.Editor 
			editor = someData.edit();
			editor.putString
			("sharedString", stringData);
			editor.commit();
			break;
		case R.id.bLoad:
			someData = 
			getSharedPreferences(filename, 0);
			String dataReturned = 
			someData.getString("sharedString", 
			"Couldn't Load Data");
			dataResults.setText(dataReturned);
			break;
		}
	}
}
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android=
"http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >

    <EditText
        android:id="@+id/etSharedPrefs"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" >
    </EditText>

    <Button
        android:id="@+id/bSave"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Save" >
    </Button>

    <Button
        android:id="@+id/bLoad"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Load" >
    </Button>

    <TextView
        android:id="@+id/tvLoadSharedPrefs"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Load your data" >
    </TextView>

</LinearLayout>
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android=
"http://schemas.android.com/apk/res/android"
    package="com.jtechies.androidapp"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk
        android:minSdkVersion="8"
        android:targetSdkVersion="17" />

    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        
       <activity
            android:name=".SharedPrefs"
            android:label="@string/app_name" >
        </activity>
       
   </application>

</manifest>

Saving and Retreiving Data with SharedPreferences and Progressbar

package com.jtechies.androidapp;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import android.app.Activity;
import android.app.ProgressDialog;
import android.content.Context;
import android.content.SharedPreferences;
import android.os.AsyncTask;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;

public class InternalData extends Activity 
implements OnClickListener{

	EditText sharedData;
	TextView dataResults;
	FileOutputStream fos;
	String FILENAME = "InternalString";
	
	@Override
	protected void onCreate
	(Bundle savedInstanceState) {
		// TODO Auto-generated method stub
		super.onCreate(savedInstanceState);
		setContentView(R.layout.sharedpreferences);
		setupVariables();
	}

	private void setupVariables() {
		// TODO Auto-generated method stub
		Button save = (Button) 
		findViewById(R.id.bSave);
		Button load = (Button) 
		findViewById(R.id.bLoad);
		sharedData = (EditText) 
		findViewById(R.id.etSharedPrefs);
		dataResults = (TextView) 
		findViewById(R.id.tvLoadSharedPrefs);
		save.setOnClickListener(this);
		load.setOnClickListener(this);
		try {
			fos = openFileOutput
			(FILENAME, Context.MODE_PRIVATE);
			fos.close();
		} catch (FileNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
	
	public void onClick(View v) {
		// TODO Auto-generated method stub
		switch (v.getId()){
		case R.id.bSave:
			String data = 
			sharedData.getText().toString();
			// Saving data via File
			/*File f = new File(FILENAME);
			try {
				fos = new 
				FileOutputStream(f);
				//write some data
				fos.close();
			} catch (FileNotFoundException e) {
			// TODO Auto-generated catch block
				e.printStackTrace();
			}
			*/
			try {
				fos = openFileOutput
				(FILENAME, Context.MODE_PRIVATE);
				fos.write(data.getBytes());
				fos.close();
			} catch (IOException e) {
			// TODO Auto-generated catch block
				e.printStackTrace();
			}
			break;
		case R.id.bLoad:
			new loadSomeStuff().execute(FILENAME);
			break;
		}
	}
	public class loadSomeStuff extends 
	AsyncTask<String, Integer, String>{
		
		
		ProgressDialog dialog;
		
		protected void onPreExecute(){
			//example of setting up something
			dialog = new ProgressDialog
			(InternalData.this);
			dialog.setProgressStyle
			(ProgressDialog.STYLE_HORIZONTAL);
			dialog.setMax(100);
			dialog.show();
		}

		@Override
		protected String doInBackground
		(String... arg0) {
			// TODO Auto-generated method stub
			String collected = null;
			FileInputStream fis = null;
			
			for(int i=0; i<20; i++){
				publishProgress(5);
				try {
					Thread.sleep(88);
				} catch 
				(InterruptedException e) {
				// TODO Auto-generated catch block
					e.printStackTrace();
				}
			}
			dialog.dismiss();
			
			try {
				fis = openFileInput(FILENAME);
				byte [] dataArray = 
				new byte [fis.available()];
				while(fis.read(dataArray) != -1){
					collected =
					 new String(dataArray);
				}
			} catch (FileNotFoundException e) {
			// TODO Auto-generated catch block
				e.printStackTrace();
			} catch (IOException e) {
			// TODO Auto-generated catch block
				e.printStackTrace();
			} finally{
				try {
					fis.close();
					return collected;
				} catch (IOException e) {
				// TODO Auto-generated catch block
					e.printStackTrace();
				}
			}
			return null;
		}
		
		protected void onProgressUpdate
		(Integer...progress){
			dialog.incrementProgressBy
			(progress[0]);
		}
		protected void onPostExecute
		(String result){
			dataResults.setText(result);
		}
	}
}
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android=
"http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >

    <EditText
        android:id="@+id/etSharedPrefs"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" >
    </EditText>

    <Button
        android:id="@+id/bSave"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Save" >
    </Button>

    <Button
        android:id="@+id/bLoad"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Load" >
    </Button>

    <TextView
        android:id="@+id/tvLoadSharedPrefs"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Load your data" >
    </TextView>

</LinearLayout>
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android=
"http://schemas.android.com/apk/res/android"
    package="com.jtechies.androidapp"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk
        android:minSdkVersion="8"
        android:targetSdkVersion="17" />

    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        
       <activity
            android:name=".InternalData"
            android:label="@string/app_name" >
        </activity>
       
   </application>

</manifest>

Saving Data Externally in any folder

package com.jtechies.androidapp;

import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import android.app.Activity;
import android.media.MediaScannerConnection;
import android.net.Uri;
import android.os.Bundle;
import android.os.Environment;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.AdapterView;
import android.widget.AdapterView
.OnItemSelectedListener;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Spinner;
import android.widget.TextView;
import android.widget.Toast;

public class ExternalData extends Activity
implements OnItemSelectedListener, 
OnClickListener{
	
	private TextView canWrite, canRead;
	private String state;
	boolean canW, canR;
	Spinner spinner;
	String[] paths = 
	{ "Music", "Pictures", "Download" };
	File path = null;
	File file = null;
	EditText saveFile;
	Button confirm, save;

	@Override
	protected void onCreate
	(Bundle savedInstanceState) {
		// TODO Auto-generated method stub
		super.onCreate(savedInstanceState);
		setContentView
		(R.layout.externaldata);
		canWrite = (TextView)
		findViewById(R.id.tvCanWrite);
		canRead = (TextView) 
		findViewById(R.id.tvCanRead);
		confirm = (Button) 
		findViewById(R.id.bConfirmSaveAs);
		save = (Button) 
		findViewById(R.id.bSaveFile);
		saveFile = (EditText) 
		findViewById(R.id.etSaveAs);
		confirm.setOnClickListener(this);
		save.setOnClickListener(this);
		canWrite.setText("false");
		canRead.setText("false");		
			
		checkState();		
		
		ArrayAdapter<String> adapter = 
		new ArrayAdapter<String>
		(ExternalData.this, 
		android.R.layout
		.simple_spinner_item, paths);
		spinner = (Spinner) 
		findViewById(R.id.spinner1);
		spinner.setAdapter(adapter);
		spinner.setOnItemSelectedListener(this);
	}

	private void checkState() {
		// TODO Auto-generated method stub
		state = 
		Environment.getExternalStorageState();
		if(state.equals
		(Environment.MEDIA_MOUNTED)){
			//read and write
			canWrite.setText("true");
			canRead.setText("true");
			canW = canR =true;
		}
		else if (state.equals
		(Environment.MEDIA_MOUNTED_READ_ONLY)){
			//read but can't write
			canWrite.setText("false");
			canRead.setText("true");
			canW = false;
			canR = true;
		}
		else{
			canWrite.setText("false");
			canRead.setText("false");
			canW = canR = false;
		}		
	}

	@Override
	public void onItemSelected(AdapterView<?>
	arg0, View arg1, int arg2, long arg3) {
		// TODO Auto-generated method stub
		int position = 
		spinner.getSelectedItemPosition();
		switch(position){
		case 0:
			path = 
			Environment.getExternalStoragePublicDirectory
				(Environment.DIRECTORY_MUSIC);
			break;
			
		case 1:
			path = 
			Environment.getExternalStoragePublicDirectory
				(Environment.DIRECTORY_PICTURES);
			break;
			
		case 2:
			path = 
			Environment.getExternalStoragePublicDirectory
				(Environment.DIRECTORY_DOWNLOADS);
			break;
		}
	}

	@Override
	public void onNothingSelected(AdapterView<?> arg0) {
		// TODO Auto-generated method stub		
	}

	@Override
	public void onClick(View arg0) {
		// TODO Auto-generated method stub
		switch(arg0.getId()){
		case R.id.bSaveFile:
			String f = saveFile.getText().toString();
			file = new File(path, f + ".png");
			
			checkState();
			if(canW == canR == true){				
				path.mkdirs();				
				try {
					InputStream is = 
					getResources().openRawResource
					(R.drawable.greenball);
					OutputStream os = new 
					FileOutputStream(file);
					byte[] data =new byte[is.available()];
					is.read(data);
					os.write(data);
					is.close();
					os.close();
					
					Toast t = 
					Toast.makeText(ExternalData.this, 
					"File has been Saved", 
					Toast.LENGTH_LONG);
					t.show();					
					
					//Update files for the user to use
					MediaScannerConnection.scanFile
					(ExternalData.this, 
					new String[] 
					{file.toString()}, null, new 
					MediaScannerConnection
					.OnScanCompletedListener() {
								
					@Override
					public void onScanCompleted
					(String path, Uri uri) {
					// TODO Auto-generated method stub
					Toast t = Toast.makeText
					(ExternalData.this, 
					"scan complete", 
					Toast.LENGTH_SHORT);
					t.show();
					}
				});
					
				} catch (FileNotFoundException e) {
				// TODO Auto-generated catch block
					e.printStackTrace();
				} catch (IOException e) {
				// TODO Auto-generated catch block
					e.printStackTrace();
				}
			}
			break;
			
		case R.id.bConfirmSaveAs:
			save.setVisibility(View.VISIBLE);
			break;
		}
	}
}
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android=
"http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >

    <TextView
        android:id="@+id/tvCanWrite"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="TextView" />

  <TextView
      android:id="@+id/tvCanRead"
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:text="TextView" />

  <Spinner
      android:id="@+id/spinner1"
      android:layout_width="match_parent"
      android:layout_height="wrap_content" />

  <TextView
      android:id="@+id/textView1"
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:text="Save As..." />
  <EditText 
      android:id="@+id/etSaveAs"
      android:layout_width="match_parent"
      android:layout_height="wrap_content"      
      >
  </EditText>

<Button
    android:id="@+id/bConfirmSaveAs"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Confirm" />

<Button
    android:id="@+id/bSaveFile"
    android:visibility="invisible"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Save" />

</LinearLayout>
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android=
"http://schemas.android.com/apk/res/android"
    package="com.jtechies.androidapp"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk
        android:minSdkVersion="8"
        android:targetSdkVersion="17" />

    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        
       <activity
            android:name=".ExternalData"
            android:label="@string/app_name" >
        </activity>
       
   </application>

</manifest>

SQLite DataBase Example [Saving, Updating, Retrieving and Deleting Data]

package com.jtechies.androidapp;


import android.app.Activity;
import android.app.Dialog;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;

public class SQLiteExample extends Activity
implements OnClickListener {

	Button sqlUpdate, sqlView, sqlModify, 
	sqlGetInfo, sqlDelete;
	EditText sqlName, sqlHotness, sqlRow;

	@Override
	protected void onCreate
	(Bundle savedInstanceState) {
		// TODO Auto-generated method stub
		super.onCreate
		(savedInstanceState);
		setContentView
		(R.layout.sqliteexample);
		sqlUpdate = (Button) 
		findViewById(R.id.bSQLUpdate);
		sqlName = (EditText) 
		findViewById(R.id.etSQLName);
		sqlHotness = (EditText) 
		findViewById(R.id.etSQLHotness);

		sqlView = (Button) 
		findViewById(R.id.bSQLopenView);
		sqlView.setOnClickListener(this);
		sqlUpdate.setOnClickListener(this);

		sqlRow = (EditText) 
		findViewById(R.id.etSQLrowInfo);
		sqlModify = (Button) 
		findViewById(R.id.bSQLmodify);
		sqlGetInfo = (Button) 
		findViewById(R.id.bgetInfo);
		sqlDelete = (Button) 
		findViewById(R.id.bSQLdelete);
		sqlDelete.setOnClickListener(this);
		sqlModify.setOnClickListener(this);
		sqlGetInfo.setOnClickListener(this);

	}

	public void onClick(View arg0) {
		// TODO Auto-generated method stub

		switch (arg0.getId()) {
		case R.id.bSQLUpdate:

			boolean didItWork = true;
			try {
				String name = 
				sqlName.getText().toString();
				String hotness = 
				sqlHotness.getText().toString();

				HotOrNot entry = 
				new HotOrNot(SQLiteExample.this);
				entry.open();
				entry.createEntry(name, hotness);
				entry.close();

			} catch (Exception e) {
				didItWork = false;
				String error = e.toString();
				Dialog d = new Dialog(this);
				d.setTitle("Dang it!");
				TextView tv = 
				new TextView(this);
				tv.setText(error);
				d.setContentView(tv);
				d.show();
			} finally {
				if (didItWork) {
					Dialog d = 
					new Dialog(this);
					d.setTitle("Heck Yea!");
					TextView tv = 
					new TextView(this);
					tv.setText("Success");
					d.setContentView(tv);
					d.show();
				}
			}

			break;
		case R.id.bSQLopenView:
			Intent i = new Intent
			("com.jtechies.androidapp.SQLVIEW");
			startActivity(i);
			break;
		case R.id.bgetInfo:
			try {
				String s = 
				sqlRow.getText().toString();
				long l = Long.parseLong(s);
				HotOrNot hon = 
				new HotOrNot(this);
				hon.open();
				String returnedName = 
				hon.getName(l);
				String returnedHotness = 
				hon.getHotness(l);
				hon.close();

				sqlName.setText(returnedName);
				sqlHotness.setText
				(returnedHotness);
			} catch (Exception e) {

				String error = e.toString();
				Dialog d = new 
				Dialog(this);
				d.setTitle("Dang it!");
				TextView tv = new 
				TextView(this);
				tv.setText(error);
				d.setContentView(tv);
				d.show();
			}
			break;

		case R.id.bSQLmodify:
			try {
				String mName = 
				sqlName.getText().toString();
				String mHotness = 
				sqlHotness.getText().toString();
				String sRow = 
				sqlRow.getText().toString();
				long lRow = 
				Long.parseLong(sRow);

				HotOrNot ex = 
				new HotOrNot(this);
				ex.open();
				ex.updateEntry
				(lRow, mName, mHotness);
				ex.close();
			} catch (Exception e) {

				String error = e.toString();
				Dialog d = new 
				Dialog(this);
				d.setTitle("Dang it!");
				TextView tv = new 
				TextView(this);
				tv.setText(error);
				d.setContentView(tv);
				d.show();
			}
			break;
		case R.id.bSQLdelete:
			try {
				String sRow1 = 
				sqlRow.getText().toString();
				long lRow1 = 
				Long.parseLong(sRow1);
				HotOrNot ex1 = 
				new HotOrNot(this);
				ex1.open();
				ex1.deleteEntry(lRow1);
				ex1.close();
			} catch (Exception e) {
				
				String error = e.toString();
				Dialog d = new Dialog(this);
				d.setTitle("Dang it!");
				TextView tv = 
				new TextView(this);
				tv.setText(error);
				d.setContentView(tv);
				d.show();
			}
			break;
		}
	}
}
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android=
"http://schemas.android.com/apk/res/android"
	android:orientation="vertical" 
	android:layout_width="match_parent"
	android:layout_height="match_parent">
	<TextView android:id="@+id/textView1" 
	android:text="Name"
		android:layout_width="wrap_content" 
		android:layout_height="wrap_content"
		android:textAppearance=
		"?android:attr/textAppearanceSmall">
	</TextView>
	<EditText android:id="@+id/etSQLName" 
	android:layout_width="match_parent"
		android:layout_height="wrap_content">
	</EditText>
	<TextView 
	android:text="Hotness scale 1 to 10" 
	android:id="@+id/textView3"
		android:layout_width="wrap_content" 
		android:layout_height="wrap_content">
	</TextView>
	<EditText android:id="@+id/etSQLHotness" 
	android:layout_width="match_parent"
		android:layout_height="wrap_content">
	</EditText>
	<Button 
	android:text="Update SQLite Database" 
	android:id="@+id/bSQLUpdate"
		android:layout_width="wrap_content" 
		android:layout_height="wrap_content">
	</Button>
	<Button android:text="View" 
	android:id="@+id/bSQLopenView"
		android:layout_width="wrap_content" 
		android:layout_height="wrap_content">
	</Button>
	<TextView android:text="Enter Row ID" 
	android:id="@+id/textView2"
		android:layout_width="wrap_content" 
		android:layout_height="wrap_content">
	</TextView>
	<EditText 
	android:layout_width="match_parent"
		android:layout_height="wrap_content" 
		android:id="@+id/etSQLrowInfo"
		android:inputType="number">
		<requestFocus></requestFocus>
	</EditText>
	<Button android:text="Get Information" 
	android:id="@+id/bgetInfo"
		android:layout_width="wrap_content" 
		android:layout_height="wrap_content">
	</Button>
	<Button android:text="Edit Entry" 
	android:id="@+id/bSQLmodify"
		android:layout_width="wrap_content" 
		android:layout_height="wrap_content">
	</Button>
	<Button android:text="Delete Entry" 
	android:id="@+id/bSQLdelete"
		android:layout_width="wrap_content" 
		android:layout_height="wrap_content">
	</Button>
	
</LinearLayout>
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android=
"http://schemas.android.com/apk/res/android"
    package="com.jtechies.androidapp"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk
        android:minSdkVersion="8"
        android:targetSdkVersion="17" />

    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        
       <activity
            android:name=".SQLiteExample"
            android:label="@string/app_name" >
        </activity>
       
   </application>

</manifest>

Creating 3D Cube with Rotation

package com.jtechies.androidapp;

import java.nio.ByteBuffer;
import java.nio.ByteOrder;
import java.nio.FloatBuffer;
import java.nio.ShortBuffer;

import javax.microedition
.khronos.opengles.GL10;

public class GLCube{

	private float vertices[] = {
		1, 1, -1, //p0 - topFrontRight
		1, -1, -1, //p1 bottomFront Right
		-1, -1, -1, //p2 bottom front left
		-1, 1, -1, //p3 front top left
		1, 1, 1, //p4 - topBackRight
		1, -1, 1, //p5 bottomBack Right
		-1, -1, 1, //p6 bottom back left
		-1, 1, 1, //p7 front back left
	};

		private FloatBuffer vertBuff;
		
		private short[] pIndex = { 
				3,4,0,  0,4,1,  3,0,1,
				3,7,4,   7,6,4,  7,3,6,
				3,1,2,  1,6,2,  6,3,2, 
				1,4,5,  5,6,1,  6,5,4	
		};
		
		private ShortBuffer pBuff;
		
		public GLCube(){
			
			ByteBuffer bBuff = 
			ByteBuffer.allocateDirect
			(vertices.length * 4);
			bBuff.order
			(ByteOrder.nativeOrder());
			vertBuff = bBuff.asFloatBuffer();
			vertBuff.put(vertices);
			vertBuff.position(0);
			
			
			ByteBuffer pbBuff = 
			ByteBuffer.allocateDirect
			(pIndex.length * 2);
			pbBuff.order
			(ByteOrder.nativeOrder());
			pBuff = 
			pbBuff.asShortBuffer();
			pBuff.put(pIndex);
			pBuff.position(0);
		}
		
		public void draw(GL10 gl){
			gl.glFrontFace
			(GL10.GL_CW);
			gl.glEnable(GL10.GL_CULL_FACE);
			gl.glCullFace
			(GL10.GL_BACK);
			gl.glEnableClientState
			(GL10.GL_VERTEX_ARRAY);
			gl.glVertexPointer
			(3, GL10.GL_FLOAT, 0, vertBuff);
			gl.glDrawElements
			(GL10.GL_TRIANGLES, pIndex.length, 
			GL10.GL_UNSIGNED_SHORT, pBuff);
			gl.glDisableClientState
			(GL10.GL_VERTEX_ARRAY);
			gl.glDisable(GL10.GL_CULL_FACE); 
		}
}
package com.jtechies.androidapp;

import android.app.Activity;
import android.opengl.GLSurfaceView;
import android.os.Bundle;

public class GLCubeEx 
extends Activity{

	GLSurfaceView ourSurface;
	
	@Override
	protected void onCreate
	(Bundle savedInstanceState) {
		// TODO Auto-generated method stub
		super.onCreate(savedInstanceState);
		ourSurface = 
		new GLSurfaceView(this);
		ourSurface.setRenderer
		(new GLCubeRendererEX());
		setContentView(ourSurface);
	}

	@Override
	protected void onPause() {
	// TODO Auto-generated method stub
		super.onPause();
		ourSurface.onPause();
	}

	@Override
	protected void onResume() {
	// TODO Auto-generated method stub
		super.onResume();
		ourSurface.onResume();
	}

}
package com.jtechies.androidapp;

import javax.microedition
.khronos.egl.EGLConfig;
import javax.microedition
.khronos.opengles.GL10;

import android.opengl.GLU;
import android.opengl.GLSurfaceView.Renderer;
import android.os.SystemClock;

public class GLCubeRendererEX
implements Renderer {

	private GLCube	cube;
	
	public GLCubeRendererEX(){
		cube = new GLCube();
	}
	
	
	public void onSurfaceCreated
	(GL10 gl, EGLConfig eglConfig) {
		// TODO Auto-generated method stub
	gl.glDisable(GL10.GL_DITHER);
	gl.glHint
	(GL10.GL_PERSPECTIVE_CORRECTION_HINT,
	GL10.GL_FASTEST);
	gl.glClearColor(.8f, 0f, .2f, 1f);
	gl.glClearDepthf(1f);
			
	}
	
	public void onDrawFrame(GL10 gl) {
		// TODO Auto-generated method stub
		gl.glDisable(GL10.GL_DITHER);
		gl.glClear
		(GL10.GL_COLOR_BUFFER_BIT | 
		GL10.GL_DEPTH_BUFFER_BIT);
		
		gl.glMatrixMode(GL10.GL_MODELVIEW);
		gl.glLoadIdentity();
		GLU.gluLookAt
		(gl, 0, 0, -5, 0, 0, 0, 0, 2, 0);	
		
		long time = 
		SystemClock.uptimeMillis() % 4000L;
		float angle = .090f * ((int)time);
		
		gl.glRotatef(angle, 1, 0, 2);
		
		cube.draw(gl);
	}

	public void onSurfaceChanged
	(GL10 gl, int width, int height) {
		// TODO Auto-generated method stub
        gl.glViewport(0, 0, width, height);
       float ratio = (float) width/height;
       gl.glMatrixMode(GL10.GL_PROJECTION);
       gl.glLoadIdentity();
       gl.glFrustumf(-ratio, ratio, -1, 1, 1, 25);
	}
}
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android=
"http://schemas.android.com/apk/res/android"
    package="com.jtechies.androidapp"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk
        android:minSdkVersion="8"
        android:targetSdkVersion="17" />

    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        
       <activity
            android:name=".GLCubeEx" 
            android:label="@string/app_name" >
        </activity>
       
   </application>

</manifest>

Creating 2D Triangle with color effect

package com.jtechies.androidapp;

import android.app.Activity;
import android.opengl.GLSurfaceView;
import android.os.Bundle;

public class GLExample extends Activity{
	
	GLSurfaceView ourSurface;

	@Override
	protected void onCreate
	(Bundle savedInstanceState) {
		// TODO Auto-generated method stub
		super.onCreate(savedInstanceState);
		ourSurface = new GLSurfaceView(this);
		ourSurface.setRenderer(new GLRendererEx());
		setContentView(ourSurface);
	}

	@Override
	protected void onPause() {
		// TODO Auto-generated method stub
		super.onPause();
		ourSurface.onPause();
	}

	@Override
	protected void onResume() {
		// TODO Auto-generated method stub
		super.onResume();
		ourSurface.onResume();
	}

}
package com.jtechies.androidapp;

import java.nio.ByteBuffer;
import java.nio.ByteOrder;
import java.nio.FloatBuffer;
import java.nio.ShortBuffer;

import javax.microedition
.khronos.opengles.GL10;

public class GLTriangleEx {

	private float vertices[] = {
		0f, 1.0f,  //p0
		1.0f, -1.0f,  //p1
		-1.0f, -1.0f //p2
	};

	private float rgbaVals[] = {
			1, 1, 0, .5f,
			.25f, 0, .85f, 1,
			0, 1, 1, 1
		};
	
	private FloatBuffer vertBuff, colorBuff;
	
	private short[] pIndex = { 0, 1, 2};
	
	private ShortBuffer pBuff;
	

	
	public GLTriangleEx(){
		
		ByteBuffer bBuff = 
		ByteBuffer.allocateDirect
		(vertices.length * 4);
		bBuff.order(ByteOrder.nativeOrder());
		vertBuff = bBuff.asFloatBuffer();
		vertBuff.put(vertices);
		vertBuff.position(0);
		
		
		ByteBuffer pbBuff = 
		ByteBuffer.allocateDirect
		(pIndex.length * 2);
		pbBuff.order(ByteOrder.nativeOrder());
		pBuff = pbBuff.asShortBuffer();
		pBuff.put(pIndex);
		pBuff.position(0);
		
		ByteBuffer cBuff = 
		ByteBuffer.allocateDirect
		(rgbaVals.length * 4);
		cBuff.order(ByteOrder.nativeOrder());
		colorBuff = cBuff.asFloatBuffer();
		colorBuff.put(rgbaVals);
		colorBuff.position(0);
		
	}
	
	public void draw(GL10 gl){
		gl.glFrontFace(GL10.GL_CW);
		gl.glEnableClientState
		(GL10.GL_VERTEX_ARRAY);
		gl.glEnableClientState
		(GL10.GL_COLOR_ARRAY);
		gl.glVertexPointer
		(2, GL10.GL_FLOAT, 0, vertBuff);	
		gl.glColorPointer
		(4, GL10.GL_FLOAT, 0, colorBuff);
		gl.glDrawElements(
		GL10.GL_TRIANGLES, pIndex.length,
		 GL10.GL_UNSIGNED_SHORT, pBuff);
		gl.glDisableClientState
		(GL10.GL_COLOR_ARRAY);
		gl.glDisableClientState
		(GL10.GL_VERTEX_ARRAY);
	}
}
package com.jtechies.androidapp;

import javax.microedition
.khronos.egl.EGLConfig;
import javax.microedition
.khronos.opengles.GL10;

import android.opengl
.GLSurfaceView.Renderer;
import android.opengl.GLU;

public class GLRendererEx 
implements Renderer{

	private GLTriangleEx tri;
	
	public GLRendererEx(){
		tri = new GLTriangleEx();
	}
	
	@Override
	public void onSurfaceCreated
	(GL10 gl, EGLConfig eglConfig) {
		// TODO Auto-generated method stub
		gl.glDisable(GL10.GL_DITHER);
		gl.glHint
		(GL10.GL_PERSPECTIVE_CORRECTION_HINT,
		 GL10.GL_FASTEST);
		gl.glClearColor(.8f, 0f, .2f, 1f);
		gl.glClearDepthf(1f);
	}
	
	@Override
	public void onDrawFrame(GL10 gl) {
		// TODO Auto-generated method stub
		gl.glDisable(GL10.GL_DITHER);
		gl.glClear
		(GL10.GL_COLOR_BUFFER_BIT | 
		GL10.GL_DEPTH_BUFFER_BIT);
		
		gl.glMatrixMode(GL10.GL_MODELVIEW);
		gl.glLoadIdentity();
		GLU.gluLookAt(gl, 0, 0, -23, 0, 0, 0, 0, 2, 0);
		tri.draw(gl);
	}

	@Override
	public void onSurfaceChanged
	(GL10 gl, int width, int height) {
		// TODO Auto-generated method stub
		gl.glViewport(0, 0, width, height);
		float ratio = (float) width/height;
		gl.glMatrixMode(GL10.GL_PROJECTION);
		gl.glLoadIdentity();
		gl.glFrustumf(-ratio, ratio, -1, 1, 1, 25);
	}
}
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android=
"http://schemas.android.com/apk/res/android"
    package="com.jtechies.androidapp"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk
        android:minSdkVersion="8"
        android:targetSdkVersion="17" />

    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        
       <activity
		android:name=".GLExample" 
		android:label="@string/app_name" >
        </activity>
       
   </application>

</manifest>

Text to Speech Example

package com.jtechies.androidapp;

import java.util.Locale;
import java.util.Random;

import android.app.Activity;
import android.os.Bundle;
import android.speech.tts.TextToSpeech;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;

public class TextVoice extends 
Activity implements OnClickListener{

	static final String[] texts = {
		"what's up Dear!", 
		"hi there", "Hello there buddy!"
	};
	TextToSpeech tts;
	
	@Override
	protected void onCreate
	(Bundle savedInstanceState) {
		// TODO Auto-generated method stub
		super.onCreate(savedInstanceState);
		setContentView
		(R.layout.textvoice);
		Button b = (Button) 
		findViewById(R.id.bTextToVoice);
		b.setOnClickListener(this);
		tts = new TextToSpeech
		(TextVoice.this, new 
		TextToSpeech.OnInitListener() {
			
			@Override
			public void onInit(int status) {
			// TODO Auto-generated method stub
			if(status != TextToSpeech.ERROR){
				tts.setLanguage(Locale.US);
				}
			}
		});
	}

	@Override
	protected void onPause() {
		// TODO Auto-generated method stub
		if(tts!=null){
			tts.stop();
			tts.shutdown();
		}
		
		super.onPause();
	}

	@Override
	public void onClick(View v) {
		// TODO Auto-generated method stub
		Random r = new Random();
		String random = 
		texts[r.nextInt(3)];
		tts.speak(random, 
		TextToSpeech.QUEUE_FLUSH, null);
	}

}
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android=
"http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >

    <Button
        android:id="@+id/bTextToVoice"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_weight="0.54"
        android:text="Text to Voice" />

</LinearLayout>
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android=
"http://schemas.android.com/apk/res/android"
    package="com.jtechies.androidapp"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk
        android:minSdkVersion="8"
        android:targetSdkVersion="17" />

    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        
       <activity
		android:name=".TextVoice" 
		android:label="@string/app_name" >
        </activity>
       
   </application>

</manifest>

String Autocomplete Example

package com.jtechies.autocompletestring;

import com.jtechies.autocompletestring.R;

import android.os.Bundle;
import android.app.Activity;
import android.util.Log;
import android.view.View;
import android.view
.inputmethod.InputMethodManager;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.AutoCompleteTextView;
import android.widget.Toast;
import android.widget.AdapterView
.OnItemClickListener;
import android.widget.AdapterView
.OnItemSelectedListener;

public class StringAutoComplete extends 
Activity implements  OnItemClickListener, 
OnItemSelectedListener  {

	// Initialize variables
	 
	AutoCompleteTextView textView=null;
	private ArrayAdapter adapter;
	
	//These values show in autocomplete
	String item[]={
			  "January", "February", 
			  "March", "April",
			  "May", "June", "July", 
			  "August",
			  "September", "October", 
			  "November", "December",
			};
	
	// Called when the activity is first created.
	@Override
	public void onCreate(Bundle bundle) {
		super.onCreate(bundle);		
		setContentView
		(R.layout.string_auto_complete);		
		 
		// Initialize AutoCompleteTextView values
		
		// Get AutoCompleteTextView 
		// reference from xml
		textView = (AutoCompleteTextView) 
		findViewById(R.id.Months);
		    
		//Create adapter    
		//adapter = new 
		ArrayAdapter
		<String>(this, 
		android.R.layout.simple_dropdown_item_1line, 
		new ArrayList<String>());
		
		adapter = new ArrayAdapter
		<String>(this, 
		android.R.layout
		.simple_dropdown_item_1line, item);
		
		textView.setThreshold(1);
	    
	    //Set adapter to AutoCompleteTextView
	    
	    textView.setAdapter(adapter);
	    textView.setOnItemSelectedListener(this);
	    textView.setOnItemClickListener(this);	      
	}

	@Override
	public void onItemSelected(AdapterView<?>
	 arg0, View arg1, int position, long arg3) {
		// TODO Auto-generated method stub
		//Log.d("AutocompleteContacts", 
		"onItemSelected() position " + position);
    }

	@Override
	public void onNothingSelected
	(AdapterView<?> arg0) {
		// TODO Auto-generated method stub
		
		InputMethodManager imm = 
		(InputMethodManager) getSystemService(
			INPUT_METHOD_SERVICE);
			imm.hideSoftInputFromWindow
			(getCurrentFocus().getWindowToken(), 0);
	}

	@Override
	public void onItemClick
	(AdapterView<?> 
	arg0, View arg1, int arg2, long arg3) {
		// TODO Auto-generated method stub		
		// Show Alert		
		
    	Toast.makeText(getBaseContext(), 
    	"Position:"+arg2+" 
    	Month:"+arg0.getItemAtPosition(arg2), 
    	Toast.LENGTH_LONG).show();
    	
    	Log.d("AutocompleteContacts", 
    	"Position:"+arg2+" 
    	Month:"+arg0.getItemAtPosition(arg2));    	
	}
	
	protected void onResume() {
        super.onResume();
    }
 
    protected void onDestroy() {
        super.onDestroy();
    }
   
}
<?xml version="1.0" encoding="utf-8"?>
<TableLayout xmlns:android=
"http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:background="#000000" >

<TableRow>
	<TextView 
	    android:layout_width="wrap_content"
        android:layout_height="wrap_content"
		android:textSize="20px"
		android:text=
		"Write month name it will show 
		month in auto complete"
		android:textColor="#ffffff"
		android:layout_marginLeft="10dip">
	</TextView>
</TableRow>		
<TableRow>
	
	<AutoCompleteTextView
	    android:id="@+id/Months"
	    android:layout_width="fill_parent"
	    android:layout_height="wrap_content"
	    android:layout_marginLeft="10dip"
	    android:layout_marginRight="10dip"
	    android:textStyle="bold"
	    android:width="250dip" />
	
</TableRow>

 
</TableLayout>
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android=
"http://schemas.android.com/apk/res/android"
    package="com.jtechies.autocompletestring"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk
        android:minSdkVersion="8"
        android:targetSdkVersion="8" />

    <application
        android:allowBackup="true"
        android:icon=
        "@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme=
        "@style/Theme.Light
        .NoTitleBar.Workaround">
        <activity
            android:name=
            "com.jtechies.autocompletestring
            .StringAutoComplete"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name=
                "android.intent.action.MAIN" />

                <category android:name=
                "android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application> 
</manifest>

Complete Call Log Example

package com.jtechies.calllog;

public  class UserData {
	 
    //private variables
    int _id;
    String _name;
    String _phone;
    String _imei;
    String _date;
    String _type;
    String _duration;
 
      // Empty constructor
      public UserData(){
 
       }
       
   // constructor
   public UserData
   (int id, String name, 
   String phone, String imei, 
   String type, String duration){
       this._id = id;
       this._name = name;
       this._phone = phone;
       this._imei = imei;
       
       this._type = type;
       this._duration = duration;   
   }


   // getting ID
   public int getID(){
       return this._id;
   }
 
   // setting id
   public void setID(int id){
       this._id = id;
   }
 
   // getting name
   public String getName(){
       return this._name;
   }
 
   // setting name
   public void setName(String name){
       this._name = name;
   }
 
   // getting email
   public String getPhone(){
       return this._phone;
   }
 
   // setting email
   public void setPhone(String phone){
       this._phone = phone;
   }
   
// getting imei
   public String getimei(){
       return this._imei;
   }
 
   // setting imei
   public void setimei(String imei){
       this._imei = imei;
   }
   
// getting imei
   public String getDate(){
       return this._date;
   }
 
   // setting imei
   public void setDate(String date){
       this._date = date;
   }
   
   
   public String getType(){
       return this._type;
   }
 
   // setting imei
   public void setType(String type){
       this._type = type;
   }   
   
   public String getDuration(){
       return this._duration;
   }
 
   // setting imei
   public void setDuration(String duration){
       this._duration = duration;
   }
   
   @Override
   public String toString() {
       return "UserInfo [name=" + _name 
       + ", email=" + _phone + "]";
   }
}
package com.jtechies.calllog;

public class VariableValues {
	
	public static int Search = 1;
	public static String IMEI = null;
	public static String type = "";
	public static String PhoneNumber = "";	
}
package com.jtechies.calllog;

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io
.UnsupportedEncodingException;
import java.net.URL;
import java.net.URLConnection;
import java.net.URLEncoder;
import java.util.List;
import org.apache.http
.client.HttpClient;
import org.apache.http
.impl.client.DefaultHttpClient;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;

import com.jtechies.calllog.R;

import android.app.Activity;
import android.app.ProgressDialog;
import android.content.Context;
import android.content.Intent;
import android.os.AsyncTask;
import android.os.Bundle;
import android.telephony.TelephonyManager;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;

public class CallDetailServer 
extends Activity {
	 
   ///public static int search = 0;
	
    /** Called when the activity 
    is first created. */
    @Override
    public void onCreate
    (Bundle savedInstanceState) {
     
        super.onCreate(savedInstanceState);
        setContentView
        (R.layout.asyncronoustask_android_example);  
         
        final Button GetServerData = 
        (Button) findViewById(R.id.GetServerData);
        TextView heading = (TextView) 
        findViewById(R.id.heading);
        try{
		    Bundle b = getIntent().getExtras();
		    VariableValues.Search   = 
		    b.getInt("mPosition",1);
		    
	      } 
		catch(Exception e)
		 {
		   Log.i("Jobs","Get Values :
		    "+e.toString()); 
	     } 
        if(VariableValues.Search==1)
		  heading.setText("Today Data...");
        else if(VariableValues.Search==2)
        	heading.setText("One Week Data...");
        else if(VariableValues.Search==3)
        	heading.setText("One Month Data...");
        
        // Server Request URL
        String serverURL = 
        "http://droidindia.com/calllog.php";
        
        //String serverURL = 
        "http://droidindia.com/calllogserver.php";
         
        // Create Object and 
        // call AsyncTask execute Method
        new LongOperation()
        .execute(serverURL);
        
        GetServerData.setOnClickListener
        (new OnClickListener() {
            
			@Override
			public void onClick(View arg0) {
				// TODO Auto-generated method stub
				
				//Log.i
				("test", "----"+mPosition);
			   	 Intent i=new Intent
			   	 (getBaseContext(),CallList.class);
			        i.addFlags
			        (Intent.FLAG_ACTIVITY_CLEAR_TOP);
			        startActivity(i);
			}
        });    
         
    }     
     
    // Class with extends AsyncTask class
    private class LongOperation  extends 
    AsyncTask<String, Void, Void> {
         
        private final HttpClient Client = 
        new DefaultHttpClient();
        private String Content;
        private String Error = null;
        private ProgressDialog Dialog = 
        new ProgressDialog(CallDetailServer.this);
        String data =""; 
        TextView uiUpdate = (TextView) 
        findViewById(R.id.output);
        int sizeData = 0;        
        
        protected void onPreExecute() {
           // NOTE: You can call UI Element here.
             
            //UI Element
           // uiUpdate.setText("Output : ");
            Dialog.setMessage("Please wait..");
            Dialog.show();
            
            
            try {
            	
            	if(VariableValues.IMEI == null){
            		
					TelephonyManager tmgr = 
					(TelephonyManager) 
					getSystemService
					(Context.TELEPHONY_SERVICE);
			
			//if(VariableValues.IMEI.equals(""))
				  VariableValues.IMEI = 
				  tmgr.getDeviceId();
            	}
            	
	            final List sched = 
	            DBAdapter.getAllUserData();
	            //Log.i
	            //("size=", "size-----"+sched.size());
	            sizeData = sched.size();
	            data +="&" + URLEncoder.encode
	            ("data", "UTF-8") + "=";
	            data += URLEncoder.encode
	            (""+sizeData, "UTF-8")+ "|" 
	            	+VariableValues.IMEI+"|";
	            data += URLEncoder.encode
	            (""+VariableValues.Search, "UTF-8");
	            
			if(sizeData>0){
        
				for (UserData Schedule : sched) {
    
				data += "|";
 
				data +=   URLEncoder.encode
				(Schedule._imei, "UTF-8")+"^";

				data += URLEncoder.encode
				(Schedule._name, "UTF-8")+"^";

				data += URLEncoder.encode
				(Schedule._phone, "UTF-8")+"^";

				data += URLEncoder.encode
				(Schedule._date, "UTF-8")+"^";

				data += URLEncoder.encode
				(Schedule._type, "UTF-8")+"^";

				data += URLEncoder.encode
				(Schedule._duration, "UTF-8");

				//Log.i("tag", data);					
				}
			}
	            	
            } catch 
            (UnsupportedEncodingException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
			}
	}
 
    // Call after onPreExecute method
    protected Void doInBackground
    (String... urls) {
    	
    	 // String text = "";
          BufferedReader reader=null;

          // Send data 
         try
         {
         
         // Defined URL  where to send data
		URL url = new URL(urls[0]);
              
		// Send POST data request

		URLConnection conn = 
		url.openConnection(); 
		conn.setDoOutput(true); 
		OutputStreamWriter wr = new 
		OutputStreamWriter(conn.getOutputStream()); 
		wr.write( data ); 
		wr.flush(); 
       
		// Get the server response 
            
         reader = new BufferedReader
         (new InputStreamReader
         	(conn.getInputStream()));
         StringBuilder sb = new StringBuilder();
         String line = null;
         
         // Read Server Response
         while((line = 
         reader.readLine()) != null)
             {
                    // Append server 
                    // response in string
                    sb.append(line + "\n");
             }	                
             
		Content = sb.toString();
        }
        catch(Exception ex)
        {
        	Error = ex.getMessage();
        }
        finally
        {
	        try
	        {
	        	reader.close();
			}
	        catch(Exception ex) {}
		}
		return null;
	}
         
        protected void onPostExecute
        (Void unused) {
           // NOTE: You can call UI Element here.
             
           // Close progress dialog
            Dialog.dismiss();
             
            if (Error != null) {
                 
                uiUpdate.setText
                ("Output : "+Error);
                 
            } else {
                 
            	String OutputData = "";
                JSONObject jsonResponse;
                      
                try {
                      
                /****** Creates a new JSONObject 
                with name/value mappings 
                from the JSON string. ********/
               jsonResponse = 
               new JSONObject(Content);
                      
               /***** Returns the value 
               mapped by name if it 
               exists and is a JSONArray. ***/
              /*******  Returns null otherwise. 
               *******/
               JSONArray jsonMainNode = 
               jsonResponse.optJSONArray
               ("Android");
                      
             /*********** Process each JSON Node 
             ************/
  
                     int lengthJsonArr = 
                     jsonMainNode.length();  
  
                     for(int i=0; i < 
                     lengthJsonArr; i++) 
                     {
                       /****** Get Object for 
                       each JSON node.***********/
                       JSONObject jsonChildNode 
                       = jsonMainNode.getJSONObject(i);
                        
                       /******* Fetch node 
                       values **********/
                       String name       = 
                       jsonChildNode.optString
                       ("name").toString();
                       String number     = 
                       jsonChildNode.optString
                       ("number").toString();
                       String date_added = 
                       jsonChildNode.optString
                       ("date_added").toString();
                       String type       = 
                       jsonChildNode.optString
                       ("type").toString();
                       String duration   = 
                       jsonChildNode.optString
                       ("duration").toString();
                        
                        if(number.equals
                        ("000000")){
                        	OutputData += 
                        	" Calls Not Found. " 
                            +"\n\n-------------
                            -------------------
                            ------------------\n";
                        }
                        else{
                        	String typeValue = 
                        	"Incomming";
                        	if(type.equals("2"))
                        		typeValue = 
                        		"Outgoing";
                        	
                         OutputData += " Name : 
                         "+ name +" \n "
                                     + "Number : 
                                     "+ number +" \n "
                                     + "Time : "+ 
                                     date_added +" \n " 
                                     + "Type : "+ 
                                     typeValue +" \n "
                                     + "Duration : 
                                     "+ duration +" \n "
								+"---------------------
								----------------------
								-------\n";
                        }
                         //Log.i("JSON parse", 
                         song_name);
                    }
                      
                     /************ Show Output 
                     on screen/activity **********/
  
                     uiUpdate.setText
                     ( OutputData );
                      
                 } catch (JSONException e) {
          
                     e.printStackTrace();
                 }            	
            	
                //uiUpdate.setText("Output : 
                "+Content);
                DBAdapter.deleteAllUserData();
                 
             }
        }
         
    }
}
package com.jtechies.calllog;

import android.content
.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.telephony
.TelephonyManager;
import android.util.Log;


public class CallDurationReceiver 
extends BroadcastReceiver {
	static boolean flag =false;
	static long start_time,end_time;    
	@Override
	    public void onReceive
	    (Context arg0, Intent intent) {
		
		final Controller aController = 
		(Controller) arg0.getApplicationContext();
		String action = intent.getAction();
	    if(action.equalsIgnoreCase
	    ("android.intent.action.PHONE_STATE")){
	    	
	    	//Log.i("CallDuration", 
	    	"call satate : " 
				+intent.getStringExtra
				(TelephonyManager.EXTRA_STATE));
			
			if (intent.getStringExtra
			(TelephonyManager.EXTRA_STATE).equals
				(TelephonyManager
				.EXTRA_STATE_OFFHOOK)) {
				aController.setstart_time
				(System.currentTimeMillis());
	            Log.i("CallDuration", 
	            "---CallDuration start--" 
	            +aController.getstart_time());
			}         
	        if (intent.getStringExtra
	        (TelephonyManager.EXTRA_STATE).equals
	        	(TelephonyManager
	        	.EXTRA_STATE_IDLE)) {
	            end_time=System
	            .currentTimeMillis();
	 			//Total time talked
	            long total_time = 
	            end_time-aController
	            .getstart_time();
	            //Store total_time somewhere
	             or pass it to an Activity 
	             using intent
	            
	            Log.i("CallDuration", 
	            "---CallDuration end--" 
	            +end_time+ 
	            	"--Total--"+total_time);
				
				int seconds = (int) 
				(total_time / 1000) % 60 ;
	            int minutes = (int) 
	            ((total_time / (1000*60)) % 60);
	            int hours   = (int) 
	            ((total_time / (1000*60*60)) % 24);
	            String duration = "";
	            if(hours>0)
	            	
	            	duration += hours+":"; 
	                //duration += minutes+":";
	                
	                if(minutes < 10)
	                	duration += "0"+minutes+":";
	                else
	                	duration += ""+minutes+":";
	                
	                if(seconds < 10)
	                	duration += "0"+seconds;
	                else
	                	duration += ""+seconds;
	                
	                Log.i("CallDuration", hours+":
	                "+minutes+":"+seconds+" PhoneNumber:" 
	                +aController.getPhoneNumber()+
	                " type:"+aController.gettype());
	                
	                TelephonyManager tmgr = 
	                (TelephonyManager)
	                	arg0.getSystemService
	                	(Context.TELEPHONY_SERVICE);
	                
	                String IMEI = tmgr.getDeviceId();
	                UserData uData = 
	                new UserData(1,"New","" 
	                	+aController.getPhoneNumber(), 
					IMEI,aController.gettype(),duration);
					DBAdapter.addUserData(uData); 
				}
			}
	}
}
package com.jtechies.calllog;

import java.io.IOException;
import java.io
.UnsupportedEncodingException;

import java.util.ArrayList;
import java.util.concurrent
.atomic.AtomicBoolean;

import javax.xml.parsers
.ParserConfigurationException;
import org.xml.sax.SAXException;

import com.jtechies.calllog.R;

import android.app.Activity;
import android.content.Intent;
import android.content.res.Resources;
import android.net.ConnectivityManager;
import android.os.Bundle;
import android.util.Log;
import android.widget.ListView;

public class CallList 
extends Activity {
    
    ListView list;
    CallListData adapter;
    AtomicBoolean isRunning = 
    new AtomicBoolean(false);
    public static String urlData = "";
    
    public static ArrayList<
    CallListValues> SheduleValuesArr
     = new ArrayList
    	<CallListValues>();
    public static CallList 
    SheduleActivity = null;
    public static CallList 
    SheduleInstance = null;
    Resources res=null;
    
    @Override
    public void onCreate
    (Bundle savedInstanceState) {
    	DBAdapter.init(this);
        super.onCreate
        (savedInstanceState);
        SheduleActivity = this;
        SheduleInstance=this;
        setContentView
        (R.layout.shedules);
        refreshJobs();
      /*******************
      WEEKLY DATA**********************/
     // Inserting Contacts
        Log.d("Insert: ", 
        "Inserting ..");
        //DBAdapter.addUserData
        (new UserData("Ravi", "9100000000"));
        
        				
    }
    
    public void onStopThread() {
		isRunning.set(false);
		Log.i("Activation", "stop");
	}
    
    @Override
    public void onDestroy()
    {
        //adapter.imageLoader.stopThread();
    	try{
    	if(list!=null)
         list.setAdapter(null);
    	}catch(Exception e){}	
        super.onDestroy();
    }
    /*
    public OnClickListener 
    listener=new OnClickListener(){
        @Override
        public void onClick(View arg0) {
        	Intent i=new Intent
        	(getBaseContext(),Outbox.class);
			startActivity(i);
	        finish();
        }
    };*/
    
    
    public void onItemClick
    (int mPosition,int type)
    {
    	 CallListValues tempValues=null;
    	 tempValues = (CallListValues) 
    	 SheduleValuesArr.get(mPosition);
    	 
    	 mPosition =  mPosition + 1;
    	 
    	 //Log.i("test", "----"+mPosition);
    	 Intent i=new Intent
    	 (getBaseContext(),CallDetailServer.class);
         i.addFlags
         (Intent.FLAG_ACTIVITY_CLEAR_TOP);
         Bundle b = new Bundle();
         b.putInt
         ("mPosition", mPosition);
         
 		i.putExtras(b);
    	startActivity(i);
    }
    
    
    public void refreshJobs()
    {
    	
    	try{  	

		    SheduleValuesArr.clear();
		    CallListValues values = 
		    new CallListValues();
			values.setPid(1);
			values.setPhoneText
			("Today Call Log Details");
			
			SheduleValuesArr.add(values);
			
			CallListValues values1 = 
			new CallListValues();
			values1.setPid(2);
			values1.setPhoneText
			("Last 7 Days Call Log Details");
			
			SheduleValuesArr.add(values1);
			
			CallListValues values2 = 
			new CallListValues();
			values2.setPid(3);
			values2.setPhoneText
			("One Month Call Log Details");
			
			SheduleValuesArr.add(values2);
			
		    
		    Log.i("Jobs","=== :
		    "+SheduleValuesArr.size());
		   //if(InboxValuesArr.size()>0)
		   {
		    res =getResources();
	        list=(ListView)findViewById
	        (R.id.list);
	        adapter=new CallListData
	        (SheduleActivity, SheduleValuesArr,res);
	        list.setAdapter(adapter);
	        
	       
	       }
		}catch(Exception e){
			Log.e("Animation", "Exception : "+e);
		}


    }
    
	public void parseServerJobs
	(final String response, String UserNameValue, 
	String PasswordValue) 
	throws ParserConfigurationException, 
	SAXException, IOException{
	}
	
	public final boolean isInternetOn() {
	ConnectivityManager connec =  
	(ConnectivityManager)getSystemService
		(getBaseContext().CONNECTIVITY_SERVICE);
		
	// ARE WE CONNECTED TO THE NET
	
	if(connec.getNetworkInfo(0).getState()
	 == android.net.NetworkInfo.State.CONNECTED 
	|| connec.getNetworkInfo(1).getState()
	 == android.net.NetworkInfo.State.CONNECTED)
	{
		// MESSAGE TO SCREEN FOR TESTING (IF REQ)
		//Toast.makeText(this, " connected ", 
		Toast.LENGTH_SHORT).show();
		//connec.getNetworkInfo(0).getState() == 
		android.net.NetworkInfo.State.CONNECTING ||
		//connec.getNetworkInfo(1).getState() == 
		android.net.NetworkInfo.State.CONNECTING ||
		return true;
	}
	else if 
	(connec.getNetworkInfo(0).getState() == 
		android.net.NetworkInfo
		.State.DISCONNECTED ||  
		connec.getNetworkInfo(1)
		.getState() == 
		android.net.NetworkInfo
		.State.DISCONNECTED  ) {
	  //System.out.println(“Not Connected”);
		//Toast.makeText(this, " 
		Not connected ", Toast.LENGTH_SHORT).show();
	  return false;
	}
	return false;
	}
	
	public void GetText
	(String urlValue,String UserNameValue, 
	String PasswordValue) 
	throws UnsupportedEncodingException
	{
	}	 
}
package com.jtechies.calllog;

import java.util.ArrayList;

import com.jtechies.calllog.R;

import android.app.Activity;
import android.content.Context;
import android.content.res.Resources;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.view.View.OnClickListener;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.TextView;

public class CallListData 
extends BaseAdapter   implements OnClickListener {
    
    private Activity activity;
    private ArrayList data;
    private static LayoutInflater 
    inflater=null;
    public Resources res;
    CallListValues tempValues=null;
    int i=0;
    public static int type = 1;
    public CallListData(Activity a, 
    ArrayList d,Resources resLocal) {
        activity = a;
        data=d;
        res = resLocal;
        inflater = (LayoutInflater)
        activity.getSystemService
        	(Context.LAYOUT_INFLATER_SERVICE);
        //imageLoader=new ImageLoader
        (activity.getApplicationContext());
    }

    public int getCount() {
    	if(data.size()<=0)
    		return 1;
        return data.size();
    }

    public Object getItem(int position) {
        return position;
    }

    public long getItemId(int position) {
        return position;
    }
    
    public static class ViewHolder{
        public TextView text;
        public TextView textWide;
        public ImageView image;

    }

    public View getView(int position, 
    View convertView, ViewGroup parent) {
        View vi=convertView;
        ViewHolder holder;
        if(convertView==null){ 
            vi = inflater.inflate
            (R.layout.tabitem, null); 
            holder=new ViewHolder();
            holder.text=(TextView)
            vi.findViewById(R.id.text);
            holder.textWide=(TextView)
            vi.findViewById(R.id.textWide);           
            
            vi.setTag(holder);
        }
        else  
            holder=(ViewHolder)vi.getTag();
        if(data.size()<=0)
        {
        	holder.text.setText("No Data");
            //holder.text1.setText("No Data");
        }
        else
        {
        tempValues=null;
        tempValues = (CallListValues) 
        data.get(position);        
       
        //Log.i("===", position+"---"
        +tempValues.getImageName());
        /*
        holder.text.setText(tempValues
        .getScreenName());
        holder.text1.setText(tempValues
        .getFromPhone());
        holder.image.setTag(tempValues
        .getURL());
        */
        holder.text.setText(tempValues
        .getPhoneText());
        //holder.text1.setText("bbbbb");
        //holder.image.setTag("ada");
        //Bitmap mBitmap = BitmapFactory
        .decodeResource(res, res.getIdentifier
        	("com.fedorvlasov.lazylist:
        	drawable/"+data[position],null,null));
        //holder.image.setImageBitmap(mBitmap);
        
        //holder.image.setImageResource
        (res.getIdentifier("com.floatster
        .android:drawable/" 
        +tempValues.getImageName()+"
        _bbl_list_"+tempValues
        .getBubbleColorCode(),null,null));
        
        //holder.image.setImageResource
        (res.getIdentifier("com.floatster
        .android:drawable/"
        	+tempValues.getImageName()
        	,null,null));
        
        vi.setOnClickListener(new 
        OnItemClickListener(position,
        tempValues.getPid()));
        }
        return vi;
    }
    
    @Override
    public void onClick(View v) {
            Log.v("Animation", 
            "=====Row button clicked");
    }
    
    private class OnItemClickListener 
    implements OnClickListener{           
        private int mPosition;
        private int typeL;

        OnItemClickListener
        (int position,int type){
        	//super(context);
                mPosition = position;
                typeL = type;
                
        }
        @Override
        public void onClick(View arg0) {
                //Log.v("Animation", 
                "onItemClick at position" + mPosition);
        	
        	CallList.SheduleActivity
        	.onItemClick(mPosition,typeL);
        }               
    }
    
    private class OnLongClickListener 
    implements OnClickListener{           
        private int mPosition;

        OnLongClickListener(int position){
        	//super(context);
                mPosition = position;
                
        }
        @Override
        public void onClick(View arg0) {
                //Log.v("Animation", 
                "onItemClick at position" + mPosition);
        	
        	//Shedule.SheduleActivity
        	.onItemClick(mPosition);
        }               
    }
}
package com.jtechies.calllog;

public class CallListValues {
	private  int Pid=0;
	private  String PhoneText="";
	
	
	public void setPid(int Pid)
	{
		this.Pid = Pid;
	}
	public void 
	setPhoneText(String PhoneText)
	{
		this.PhoneText = PhoneText;
	}
	
	public int getPid()
	{
		return this.Pid;
	}
	
	public String getPhoneText()
	{
		return this.PhoneText;
	}	
}
package com.jtechies.calllog;

import android.app.Application;

public class Controller 
extends Application {
	
	private final String TAG = "PGC"; 
	// PhoneGuardController
	
	public  String IMEI = "";
	public  String type = "";
	public  String PhoneNumber = "";
	public long start_time=0;
	
	public String getIMEI() {
		return IMEI;
	}
	
	public void setIMEI(String IMEI) {
		 this.IMEI = IMEI;
	}
	
	public String gettype() {
		return type;
	}
	
	public void settype(String type) {
		 this.type = type;
	}
	
	public String getPhoneNumber() {
		return PhoneNumber;
	}
	
	public void setPhoneNumber
	(String PhoneNumber) {
		 this.PhoneNumber = 
		 PhoneNumber;
	}
	
	public long getstart_time() {
		return start_time;
	}
	
	public void 
	setstart_time(long start_time) {
		 this.start_time = start_time;
	}	
}
package com.jtechies.calllog;


import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.List;
import android.content
.ContentValues;
import android.content
.Context;
import android.database
.Cursor;
import android.database
.DatabaseUtils;
import android.database
.SQLException;
import android.database
.sqlite.SQLiteDatabase;
import android.database
.sqlite.SQLiteOpenHelper;
import android.util.Log;

public class DBAdapter {
    
    /******* if debug is set true 
    then it will show all
     Logcat message ***/
    public static final boolean 
    DEBUG = true;
     
    /********** Logcat TAG
     ************/
    public static final String 
    LOG_TAG = "DBAdapter";
     
    /************ Table Fields
     ************/
    public static final String 
    KEY_ID = "_id";
 
    public static final String 
    KEY_IMEI = "imei"; 
    public static final String 
    KEY_NAME = "name";
 
    public static final String 
    KEY_PHONE = "pnumber"; 
    public static final String 
    KEY_DATE = "date_added";
    
    public static final String 
    KEY_TYPE = "type";   
    public static final String 
    KEY_DURATION  = "duration"; 
     
    /************* Database Name
     ************/
    public static final String 
    DATABASE_NAME = "DB_sqllite";
     
    /**** Database Version 
    (Increase one if want to also 
    upgrade your database) ****/
    public static final int
DATABASE_VERSION = 1;// started at 1
 
    /** Table names */
    public static final String 
    USER_TABLE = "tbl_user";
     
    /**** Set all table with comma 
    seperated like USER_TABLE,ABC_TABLE 
    ******/
    private static final String[ ] 
    ALL_TABLES = { USER_TABLE };
     
    /** Create table syntax */
    
    private static final String 
    USER_CREATE = "create table tbl_user
    ( _id integer 
    primary key autoincrement,imei text 
    not null,name text not null,pnumber   
    text not null,date_added text not 
    null,type text not null,
    duration text not null);";  
     
    /********* Used to open database 
    in syncronized way *********/
    private static DataBaseHelper 
    DBHelper = null;
  
    protected DBAdapter() {
     
    }
     
    /********** Initialize database 
    *********/
    public static void init
    (Context context) {
        if (DBHelper == null) {
            if (DEBUG)
                Log.i("DBAdapter", 
                context.toString());
            DBHelper = new 
            DataBaseHelper(context);
        }
    }
     
  /********** Main Database creation 
  INNER class ********/
    private static class DataBaseHelper 
    extends SQLiteOpenHelper {
        public DataBaseHelper
        (Context context) {
            super(context, DATABASE_NAME, 
            null, DATABASE_VERSION);
        }
 
        @Override
        public void onCreate
        (SQLiteDatabase db) {
            if (DEBUG)
                Log.i(LOG_TAG, 
                "new create");
            try {
                db.execSQL
                (USER_CREATE);
                
            } catch (Exception exception) {
                if (DEBUG)
                    Log.i(LOG_TAG, 
                    "Exception onCreate() exception");
            }
        }
 
        @Override
        public void onUpgrade
        (SQLiteDatabase db, int oldVersion, 
        int newVersion) {
            if (DEBUG)
                Log.w(LOG_TAG, 
                "Upgrading database 
                from version" + oldVersion
                        + "to" + 
                        newVersion + "...");
 
            for (String table : 
            ALL_TABLES) {
                db.execSQL("DROP 
                TABLE IF EXISTS " + table);
            }
            onCreate(db);
        }
 
    } // Inner class closed
     
     
    /***** Open database for insert,
    update,delete in syncronized manner ****/
    private static synchronized 
    SQLiteDatabase open() throws SQLException {
        return DBHelper.getWritableDatabase();
    }
 
 
    /************* General function
    s*************/
     
     
    /*********** Escape string for 
    single quotes (Insert,Update) ********/
    private static String 
    sqlEscapeString(String aString) {
        String aReturn = "";
         
        if (null != aString) {
            //aReturn = aString.replace(", );
            aReturn = DatabaseUtils
            .sqlEscapeString(aString);
            // Remove the enclosing 
            single quotes ...
            aReturn = aReturn
            .substring(1, aReturn.length() - 1);
        }
         
        return aReturn;
    }
 
    /********** UnEscape string for 
    single quotes (show data) ************/
    private static String 
    sqlUnEscapeString(String aString) {
         
        String aReturn = "";
         
        if (null != aString) {
            aReturn = aString.replace("\'", "");
        }
         
        return aReturn;
    }
     
   /********* User data functons
    *********/
 
  public static void addUserData
  (UserData uData) {
 
        // Open database for Read / Write       
 
         
	  Calendar currentDate = 
	  Calendar.getInstance();
	  SimpleDateFormat formatter= 
	  new SimpleDateFormat
	  ("yyyy-MM-dd hh:mm:ss");
	  String dateNow = 
	  formatter.format
	  (currentDate.getTime());
      	
 		final SQLiteDatabase db = 
 		open();
        String name = 
        sqlEscapeString(uData.getName());
        String email = 
        sqlEscapeString(uData.getPhone());
        String imei = 
        sqlEscapeString(uData.getimei());
        
        String type = 
        sqlEscapeString(uData.getType());
        String duration = 
        sqlEscapeString(uData.getDuration());
        
        ContentValues cVal = 
        new ContentValues();  
        cVal.put
        (KEY_IMEI, imei);
        cVal.put
        (KEY_NAME, name);
        cVal.put
        (KEY_PHONE, email);
        cVal.put
        (KEY_DATE, " "+dateNow);
        cVal.put
        (KEY_TYPE, type);
        cVal.put
        (KEY_DURATION, duration);
        
        
        // Insert user values in database
        db.insert(USER_TABLE, null, cVal);     
        db.close(); 
        // Closing database connection
    }
 
 
   // Updating single data
   public static int 
   updateUserData(int id,String duration) {
 
        final SQLiteDatabase db = open();  
  
        ContentValues values = 
        new ContentValues();
         values.put
         (KEY_DURATION, duration);
        
         
        // updating row
        return db.update
        (USER_TABLE, values, KEY_ID + " = ?",
                new String[] 
                { String.valueOf(id) });
    }
    
    // Getting single contact
   public static UserData 
   getUserData(int id) {
 
       // Open database for Read Write
        final SQLiteDatabase db = open();
  
        Cursor cursor = db.query
        (USER_TABLE, new String[] 
        { KEY_ID, KEY_NAME, 
        	KEY_PHONE, KEY_TYPE, 
        	KEY_DURATION }, KEY_ID + 
        	"=?", new String[] 
        	{ String.valueOf(id) }, 
        	null, null, null, null);
 
        if (cursor != null)
            cursor.moveToFirst();
  
        UserData data = new UserData
        (Integer.parseInt
        (cursor.getString(0)), 
        	cursor.getString(1), 
        	cursor.getString(2),
        	cursor.getString(3), 
        	cursor.getString(4),
        	cursor.getString(5));
 
        // return user data
        return data;
    }
  
      // Getting All User data
    public static List<UserData>
     getAllUserData() {
 
        
 
        // Open database for Read Write
        final SQLiteDatabase db = open();
        
        List<UserData> contactList = 
        new ArrayList<UserData>();
        // Select All Query
        String selectQuery = "SELECT  
        * FROM " + USER_TABLE; 
  
        Cursor cursor = db.rawQuery 
        ( selectQuery, null );
  
        // looping through all rows 
        //and adding to list
        if (cursor.moveToFirst()) {
            do {
                UserData data = 
                new UserData();
                data.setID
                (Integer.parseInt(cursor.getString(0)));
                data.setimei
                (cursor.getString(1));
                data.setName
                (cursor.getString(2));
                data.setPhone
                (cursor.getString(3));
                data.setDate
                (cursor.getString(4));
                
                data.setType
                (cursor.getString(5));
                data.setDuration
                (cursor.getString(6));
    			//Log.i("===", 
    			"=="+cursor.getString(3));
                // Adding contact to list
                contactList.add(data);
            } while 
            (cursor.moveToNext());
        }
        db.close(); 
        // Closing database connection
        // return user list
        return contactList;
    } 
  
    // Deleting single contact
    public static void 
    deleteUserData(UserData data) {
        final SQLiteDatabase db = open();
        db.delete(USER_TABLE, KEY_ID + " = ?",
                new String[] 
                { String.valueOf(data.getID()) });
        db.close();
    }
  
    // Deleting single contact
    public static void deleteAllUserData() {
        final SQLiteDatabase db = open();
        db.delete(USER_TABLE, null,
                null);
        db.close();
    }
    // Getting dataCount
 
    public static int getUserDataCount() {
 
        final SQLiteDatabase db = open();
 
        String countQuery = 
        "SELECT  * FROM " + USER_TABLE;
        Cursor cursor = 
        db.rawQuery(countQuery, null);
        cursor.close();
  
        // return count
        return cursor.getCount();
    }
 
}
package com.jtechies.calllog;

import android.content
.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.telephony
.PhoneStateListener;
import android.telephony
.TelephonyManager;
import android.util.Log;


public class IncomingCall 
extends BroadcastReceiver {
	Context pcontext;
	String result = "";
	final String servicefunction = 
	"EmailCALL";
	static String incomingNumber = "";
	// InputHandeler inputhan = 
	new InputHandeler(servicefunction);
	static final String ACTION = 
	"android.intent.action.PHONE_STATE";

	static boolean flag =false;
	static long start_time,end_time;
	
	public void onReceive
	(Context context, Intent intent) {
		DBAdapter.init(context);
		pcontext = context;
		final Controller aController = 
		(Controller)context.getApplicationContext();

	try {
		TelephonyManager tmgr = 
		(TelephonyManager) context
		.getSystemService
		(Context.TELEPHONY_SERVICE);
		
		MyPhoneStateListener PhoneListener = 
		new MyPhoneStateListener(aController);
		tmgr.listen(PhoneListener, 
		PhoneStateListener.LISTEN_CALL_STATE);
		} catch (Exception e) {
			Log.e("Phone Receive Error", " " + e);
		}
	}

	private class MyPhoneStateListener 
	extends PhoneStateListener {
		Controller aController = null;
		MyPhoneStateListener
		(Controller aController)
		{
			this.aController = aController;
		}
		
		public void onCallStateChanged
		(int state, String incomingNumber) {
			 //Log.d("MyPhoneListener",state+"  
			  incoming no:"+incomingNumber);
            
			if (state == 1) {				
				aController.setPhoneNumber
				(incomingNumber);
				aController.settype("1");
			}
		}
	}
}
package com.jtechies.calllog;


import android.content
.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;

public class OutgoingCall 
extends BroadcastReceiver {
	static boolean flag =false;
	static long start_time,end_time;
        @Override
        public void onReceive
        (Context context, Intent intent) {
			final Controller aController = 
			(Controller)
			context.getApplicationContext();
            Bundle bundle = intent.getExtras();
            //Log.i("outgoing", 
            "---OutgoingCall reciever start--");
            if(null == bundle)
                    return;
            String phonenumber = 
            intent.getStringExtra
            (Intent.EXTRA_PHONE_NUMBER);
            aController.setPhoneNumber
            (phonenumber);
            aController.settype("2");
        }
}
<?xml version="1.0" encoding="utf-8"?>
<ScrollView xmlns:android=
"http://schemas.android.com/apk/res/android"
  android:fillViewport="true"
  android:background="#FFFFFF"
  android:layout_width=
  "fill_parent" 
  android:layout_height=
  "fill_parent" >
  
<LinearLayout 
    android:layout_width=
    "fill_parent"
    android:layout_height=
    "fill_parent"
    android:orientation=
    "vertical" >

    <Button 
        android:paddingTop="10px"
        android:id=
        "@+id/GetServerData" 
    	android:text="BACK" 
    	android:cursorVisible="true"
    	android:clickable="true"
		android:layout_width=
		"wrap_content"
		android:layout_height=
		"wrap_content"  
		android:layout_gravity=
		"center_horizontal"
    /> 
    <TextView
        android:paddingTop="20px"
        android:id="@+id/heading"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="" />
    <TextView
        android:paddingTop="16px"
        android:id="@+id/output"
        android:layout_width=
        "fill_parent"
        android:layout_height=
        "wrap_content"
        android:text="Output : 
        Click on button to 
        get server data." />

</LinearLayout>
</ScrollView>
<?xml version="1.0" encoding="utf-8"?>

<LinearLayout xmlns:android=
"http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent">
  <LinearLayout 
    android:orientation="horizontal"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content">
    
    </LinearLayout>
 <TextView android:id="@+id/TextView01"
	android:layout_width="fill_parent"
	android:layout_height="wrap_content"
	android:text="Call Log Data" 
	android:textColor="#000000" 
	android:textStyle="bold"
	>
</TextView>
    <ListView
        android:id="@+id/list"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"  
        android:layout_weight="1"/>
	  
</LinearLayout>
<?xml version="1.0" encoding="utf-8"?>
<TableLayout xmlns:android=
"http://schemas.android.com/apk/res/android"
	android:layout_width="fill_parent" 
	android:layout_height="wrap_content" 
	android:background="@drawable/bar_bg"
	 android:paddingTop="0dip" 
	 android:layout_gravity="top" 
   >
  <TableRow> 
      
		<TextView
		  	  android:id="@+id/text"
		  	  android:layout_height=
		  	  "wrap_content"
			  android:layout_width=
			  "wrap_content"
			  android:layout_weight="1" 
			  android:layout_gravity="left | 
			  	center_vertical" 
			  android:textSize="16sp" 
			  android:layout_marginLeft=
			  "10dip"
			  android:layout_marginTop=
			  "4dip"
			  android:textColor="#000000"
		/>
	   
  	  <TextView
  	          android:text=""
		  	  android:id="@+id/text"
		  	  android:layout_height=
		  	  "wrap_content"
			  android:layout_width=
			  "wrap_content"
			  android:layout_weight="1" 
			  android:layout_gravity=
			  "left|center_vertical" 
			  android:textSize="16sp" 
			  android:textColor="#000000"
			  android:layout_marginRight=
			  "1dip" 
			  android:layout_marginTop=
			  "4dip"
			  android:gravity="right"/>
	        
	        <TextView
		  	  android:id="@+id/textWide"
		  	  android:text="SHOW"
		  	  android:layout_height=
		  	  "wrap_content"
			  android:layout_width=
			  "fill_parent"
			  android:layout_weight="1" 
			  android:textSize="12dip" 
			  android:textColor="#000000"
			  android:textStyle="bold"
			  android:layout_span="1"
			  android:layout_gravity=
			  "center_vertical" 
			  android:gravity=
			  "right|center_vertical" 
			  android:layout_marginRight=
			  "10dip"/>
	       
  </TableRow>	
     
</TableLayout>
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android=
"http://schemas.android.com/apk/res/android"
    package="com.jtechies.calllog"
    android:versionCode="1"
    android:versionName="1.0" >
       
    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" 
        android:name=
        "com.jtechies.calllog.Controller">
        <activity
            android:name=
            "com.jtechies.calllog.CallList"
            android:label="@string/app_name" >
			<intent-filter>
				<action 
				android:name=
				"android.intent.action.MAIN" />
				<category 
				android:name=
				"android.intent.category.LAUNCHER"/>
			</intent-filter>
			<intent-filter>
				<action 
				android:name=
				"android.intent.action.VIEW" />
				<action 
				android:name=
				"android.intent.action.DELETE" />
				<category 
				android:name=
				"android.intent.category.DEFAULT" />
				<data 
				android:scheme=
				"com.androidexample.broadcastreceiver" />
			</intent-filter>
        </activity>
        <activity 
        	android:name=
        	"com.jtechies.calllog.CallDetailServer"  
        	android:screenOrientation="portrait" 
        	android:label="CallDetail" >
		</activity>
        <receiver 
        	android:name=
        	"com.jtechies.calllog.IncomingCall">   
                <intent-filter>
                	<action 
                	android:name=
                	"android.intent.action.PHONE_STATE" />
                </intent-filter>
        </receiver>
        <receiver 
        	android:name=
        	"com.jtechies.calllog.OutgoingCall">   
                <intent-filter>
                	<action 
                	android:name=
                	"android.intent
                	.action.NEW_OUTGOING_CALL" />
                </intent-filter>
        </receiver>
        <receiver 
        	android:name=
        	"com.jtechies.calllog.CallDurationReceiver">
	       <intent-filter>
	           <action 
	           android:name=
	           "android.intent.action.PHONE_STATE" />
	       </intent-filter>
       </receiver>
    </application>
    <uses-sdk
        android:minSdkVersion="8"
        android:targetSdkVersion="17" />
    <uses-permission 
    	android:name=
    	"android.permission.INTERNET">
    </uses-permission>
    <uses-permission 
    	android:name=
    	"android.permission.READ_PHONE_STATE">
    </uses-permission>
    <uses-permission 
    	android:name=
    	"android.permission.PROCESS_OUTGOING_CALLS">
    </uses-permission>    
</manifest>

Date Picker Example

package com.jtechies.datepicker;

import java.util.Calendar;
import com.jtechies.datepicker.R;

import android.app.Activity;
import android.app.DatePickerDialog;
import android.app.Dialog;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.DatePicker;
import android.widget.TextView;

public class DatePickerExample 
extends Activity {

	private TextView Output;
	private Button changeDate;

	private int year;
	private int month;
	private int day;

	static final int DATE_PICKER_ID 
	= 1111; 

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

		Output = (TextView) findViewById
		(R.id.Output);
		changeDate = (Button) findViewById
		(R.id.changeDate);

		// Get current date by calender
		
		final Calendar c = 
		Calendar.getInstance();
		year  = c.get(Calendar.YEAR);
		month = c.get(Calendar.MONTH);
		day   = c.get(Calendar.DAY_OF_MONTH);

		// Show current date
		
		Output.setText(new StringBuilder()
		// Month is 0 based, just add 1
				.append(month + 1)
				.append("-").append(day).append("-")
				.append(year).append(" "));
 
		// Button listener to show 
		// date picker dialog
		
		changeDate.setOnClickListener
		(new OnClickListener() {

			@Override
			public void onClick(View v) {
                
			// On button click show datepicker dialog 
				showDialog(DATE_PICKER_ID);

			}

		});
   }

	
	@Override
	protected Dialog onCreateDialog(int id) {
		switch (id) {
		case DATE_PICKER_ID:
			
			// open datepicker dialog. 
			// set date picker for current date 
			// add pickerListener listner to date picker
			return new DatePickerDialog
			(this, pickerListener, 
				year, month, day);
		}
		return null;
	}

	private DatePickerDialog.OnDateSetListener 
	pickerListener = 
		new DatePickerDialog.OnDateSetListener() {

		// when dialog box is closed, 
		//below method will be called.
		@Override
		public void onDateSet
		(DatePicker view, int selectedYear,
				int selectedMonth, int selectedDay) {
			
			year  = selectedYear;
			month = selectedMonth;
			day   = selectedDay;

			// Show selected date 
			Output.setText
			(new StringBuilder().append(month + 1)
				.append("-").append(day)
				.append("-").append(year)
					.append(" "));
	
		   }
	    };

}
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android=
"http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >

    <Button
        android:id="@+id/changeDate"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Click To Change Date" />

    <TextView
        android:layout_width=
        "wrap_content"
        android:layout_height=
        "wrap_content"
        android:text=
        "Current/Selected Date (MM-DD-YYYY): "
        android:textAppearance=
        "?android:attr/textAppearanceLarge" />
  
    <TextView
        android:id="@+id/Output"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text=""
        android:textAppearance=
        "?android:attr/textAppearanceLarge" />
</LinearLayout>
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android=
"http://schemas.android.com/apk/res/android"
    package="com.jtechies.datepicker"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk android:minSdkVersion="8" /> 

    <application
        android:icon=
        "@drawable/ic_launcher"
        android:label=
        "@string/app_name" >
        <activity
            android:label=
            "@string/app_name"
            android:name=
            "com.jtechies.datepicker.DatePickerExample" >
            <intent-filter >
                <action android:name=
                "android.intent.action.MAIN" />

                <category android:name=
                "android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>
</manifest>