Translate

Friday, 29 April 2016

SudokuCell.java

package com.vikesh.gamesudoku.view.sudokugrid;

import com.vikesh.gamesudoku.R;
import android.annotation.SuppressLint;
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.Paint.FontMetrics;
import android.graphics.Paint.Style;
import android.graphics.Rect;
import android.util.Log;
//import android.util.AttributeSet;
//import android.view.View;

public class SudokuCell extends BaseSudokuCell {

private Paint mPaint;
public int i=0;
//private int number;
public SudokuCell(Context context) {
super(context);
mPaint = new Paint();
}
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
mPaint.setColor(Color.RED);
mPaint.setStrokeWidth(1);
mPaint.setStyle(Style.STROKE);
Paint background = new Paint();
   background.setColor(getResources().getColor(
           R.color.puzzle_background));
   canvas.drawRect(0, 0, getWidth(), getHeight(), background);
   drawNumbers(canvas);
   drawLines(canvas);
}

private void drawNumbers(Canvas canvas)
{
mPaint.setColor(getResources().getColor(
          R.color.puzzle_foreground));
mPaint.setTextSize(20);

mPaint.setStyle(Style.FILL);
Rect bounds = new Rect();
mPaint.getTextBounds(String.valueOf(getValue()),0,String.valueOf(getValue()).length(), bounds);
if(getValue()!=0)
{
canvas.drawText(String.valueOf(getValue()),(getWidth()-bounds.width())/2,(getWidth()+bounds.width())/2, mPaint);

}
else
{
canvas.drawColor(Color.LTGRAY);
}

}

private void drawLines(Canvas canvas)
{
mPaint.setColor(Color.RED);
mPaint.setStrokeWidth(1);
mPaint.setStyle(Style.STROKE);
Paint hilite = new Paint();
   hilite.setColor(getResources().getColor(R.color.puzzle_hilite));
Paint dark = new Paint();
   dark.setColor(getResources().getColor(R.color.puzzle_dark));
   for(i=0;i<9;i++)
     {
     if(i%3!=0)
     continue;
     canvas.drawLine(0,i*getHeight(), getWidth(), i*getHeight(),dark);
     canvas.drawLine(0,i*getHeight()+1, getWidth(), i*getHeight()+1, hilite);
     canvas.drawLine(i*getWidth(),0,i* getWidth(), getHeight(),dark);
     canvas.drawLine(i*getWidth()+1,0, i*getWidth()+1, getHeight(),hilite);
     }
}

}

Wednesday, 27 April 2016

Sudoku Grid Development

GameGrid.java

package com.vikesh.gamesudoku.view.sudokugrid;

import com.vikesh.gamesudoku.Game;
import com.vikesh.gamesudoku.Naming;
import com.vikesh.gamesudoku.SudokuChecker;

import android.content.Context;
import android.content.Intent;
import android.os.SystemClock;
import android.widget.Chronometer;
import android.widget.Toast;

public class GameGrid extends Game {

private Context context;
public static Chronometer focus;
public static String level=null;
public static String time;
private SudokuCell[][] sudoku = new SudokuCell[9][9];
public GameGrid(Context context)
{
this.context = context;
for(int x=0;x<9;x++)
{
for(int y=0;y<9;y++)
{
sudoku[x][y] = new SudokuCell(context);
}
}
}

public void setGrid(int[][] grid)
{
for(int x=0;x<9;x++)
{
for(int y=0;y<9;y++)
{
sudoku[x][y].setInitValue(grid[x][y]);
if(grid[x][y] != 0)
{
sudoku[x][y].setNotModifiable();
}
}
}
}

public SudokuCell[][] getGrid()
{
return sudoku;
}

public SudokuCell getItem(int x,int y)
{
return sudoku[x][y];
}

public SudokuCell getItem(int position)
{
int x = position%9;
int y = position/9;

return sudoku[x][y];
}

public void setItem(int x,int y,int number)
{
sudoku[x][y].setValue(number);
}

public void checkGame()
{
int[][] sudGrid = new int[9][9];
for(int x = 0;x<9;x++)
{
for(int y=0;y<9;y++)
{
sudGrid[x][y]=getItem(x, y).getValue();
}
if(SudokuChecker.getInstance().checkSudoku(sudGrid))
{
level = Game.DIFFICULTY_LEVEL;
focus = Game.focus;
focus.stop();
long timeElapsed = SystemClock.elapsedRealtime()-focus.getBase();
int hours = (int) (timeElapsed / 3600000);
int minutes = (int) (timeElapsed - hours * 3600000) / 60000;
int seconds = (int) (timeElapsed - hours * 3600000 - minutes * 60000) / 1000;
   time = minutes+":"+seconds;
   Intent i = new Intent(context,Naming.class);
   context.startActivity(i);
Toast.makeText(context,"Congratulations!!!You Solved The Sudoku in!!"+time,Toast.LENGTH_LONG).show();
}
}
}
}

Monday, 25 April 2016

SudokuCell Developing


BaseSudokuCell.java

package com.vikesh.gamesudoku.view.sudokugrid;

import android.content.Context;
import android.view.View;

public class BaseSudokuCell extends View {

private int value;
private boolean modifiable=true;
public BaseSudokuCell(Context context) {
super(context);
}

@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
super.onMeasure(widthMeasureSpec,widthMeasureSpec);
}

public void setNotModifiable()
{
modifiable = false;
}

public void setInitValue(int value)
{
this.value = value;
invalidate();
}
public void setValue(int value)
{
if(modifiable)
{
this.value = value;
}
invalidate();
}
public int getValue()
{
return value;
}
}

Friday, 22 April 2016

NumberButton.java

package com.vikesh.gamesudoku.view.buttonsgrid;

import com.vikesh.gamesudoku.GameEngine;

import android.content.Context;
import android.util.AttributeSet;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;

public class NumberButton extends Button implements OnClickListener {

private int number;
public NumberButton(Context context, AttributeSet attrs) {
super(context, attrs);
setOnClickListener(this);
}

@Override
public void onClick(View v) {
GameEngine.getInstance().setNumber(number);
}

public void setNumber(int number)
{
this.number = number;
}

}

Wednesday, 20 April 2016

ButtonsGridView.java

package com.vikesh.gamesudoku.view.buttonsgrid;

import com.vikesh.gamesudoku.R;

import android.app.Activity;
import android.content.Context;
import android.util.AttributeSet;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.GridView;

public class ButtonsGridView extends GridView {

public ButtonsGridView(Context context,AttributeSet attrs)
{
super(context,attrs);
ButtonsGridViewAdapter gridViewAdapter = new ButtonsGridViewAdapter(context);
setAdapter(gridViewAdapter);
}

class ButtonsGridViewAdapter extends BaseAdapter
{

  private Context context;
  public ButtonsGridViewAdapter(Context context) {
  this.context = context;
}
@Override
public int getCount() {
return 10;
}

@Override
public Object getItem(int position) {
return null;
}

@Override
public long getItemId(int position) {
return position;
}

@Override
public View getView(int position, View convertView, ViewGroup parent) {
View v = convertView;
if(v==null)
{
LayoutInflater inflater = ((Activity)context).getLayoutInflater();
v = inflater.inflate(R.layout.button,parent,false);

NumberButton btn;
btn = (NumberButton)v;
btn.setId(position);

if(position!=9)
{
btn.setText(String.valueOf(position+1));
btn.setNumber(position+1);
}
else
{
btn.setText("DEL");
btn.setNumber(0);
}
return btn;
}
return v;
}

}
}

Monday, 18 April 2016

Naming.java


package com.vikesh.gamesudoku;

import com.vikesh.gamesudoku.view.sudokugrid.GameGrid;

import android.app.Activity;
import android.content.Intent;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;

public class Naming extends Activity {
 
EditText et;
TextView t1,t2;
Button b1;
String level=null;
String time = null;
String name=null;
SQLiteDatabase db=null;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.high_score_panel);
et =(EditText)findViewById(R.id.name);
t1 =(TextView)findViewById(R.id.difficulty);
t2 =(TextView)findViewById(R.id.timeElapsed);
b1 = (Button)findViewById(R.id.scoreSave);
level = GameGrid.level;
time = GameGrid.time;
t1.setText(level);
t2.setText(time);
}
public void onClickSave(View view)
{
db = Game.db;
name = et.getText().toString();
level = t1.getText().toString();
time = t2.getText().toString();
db.execSQL("insert into highscore values('"+name+"','"+level+"','"+time+"')");
Toast.makeText(this,"Your Score is Successfully Saved!!!",Toast.LENGTH_SHORT).show();
Intent i= new Intent(this,MainActivity.class);
startActivity(i);
}
}

Friday, 15 April 2016


MainActivity.java


package com.vikesh.gamesudoku;
import android.app.Activity;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;

public class MainActivity extends Activity implements OnClickListener {

private static final String TAG = "Sudoku";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
// Set up click listeners for all the buttons
View continueButton = findViewById(R.id.continue_button);
continueButton.setOnClickListener(this);
View newButton = findViewById(R.id.new_button);
newButton.setOnClickListener(this);
View highScoreButton = findViewById(R.id.high_score);
highScoreButton.setOnClickListener(this);
View aboutButton = findViewById(R.id.about_button);
aboutButton.setOnClickListener(this);
View exitButton = findViewById(R.id.exit_button);
exitButton.setOnClickListener(this);

/*setContentView(R.layout.activity_main);
//int[][] sudoku = SudokuGenerator.getInstance().generateGrid();
//GameEngine.getInstance().setSudoku(sudoku);
GameEngine.getInstance().createGrid(this);
//printSudoku(sudoku);*/
}

@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.continue_button:
startGame(Game.DIFFICULTY_CONTINUE);
break;
case R.id.about_button:
Intent i = new Intent(this, About.class);
startActivity(i);
break;
case R.id.new_button:
openNewGameDialog();
break;
case R.id.high_score:
Intent i1 = new Intent(this,HighScore.class);
startActivity(i1);
break;
case R.id.exit_button:
finish();
break;
}
}
private void openNewGameDialog() {
new AlertDialog.Builder(this)
.setTitle(R.string.new_game_title)
.setItems(R.array.difficulty,
new DialogInterface.OnClickListener() {
public void onClick(
DialogInterface dialoginterface, int i) {
startGame(i);
}
}).show();
}

private void startGame(int i) {
Log.d(TAG, "clicked on " + i);
Intent intent = new Intent(this, Game.class);
intent.putExtra(Game.KEY_DIFFICULTY, i);
startActivity(intent);
}

/*private void printSudoku(int[][] sudoku)
{
for(int y =0;y<9;y++)
{
for(int x =0;x<9;x++)
{
System.out.print(sudoku[x][y]+"|");
}
System.out.println();
}
}*/
}

Wednesday, 13 April 2016

HighScore.java

package com.vikesh.gamesudoku;

import android.app.Activity;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.widget.TextView;

public class HighScore extends Activity {

SQLiteDatabase db=null;
String TABLE ="highscore";
String NAME[]= new String[100];
String LEVEL[] = new String[100];
String TIME[]=new String[100];
TextView t[] = new TextView[3];
TextView t2[] = new TextView[3];
TextView t3[] = new TextView[3];
int i=0;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
db=openOrCreateDatabase("sudoku",MODE_PRIVATE, null);
Cursor c=db.rawQuery("select * from "+TABLE,null);
c.moveToFirst();
do
{
NAME[i]=c.getString(0);
LEVEL[i]=c.getString(1);
TIME[i]=c.getString(2);
i++;
}while(c.moveToNext());
setContentView(R.layout.high_score);
t[0] =(TextView)findViewById(R.id.TextView04);
t2[0] =(TextView)findViewById(R.id.TextView041);
t3[0] =(TextView)findViewById(R.id.TextView042);
t[1] =(TextView)findViewById(R.id.TextView043);
t2[1] =(TextView)findViewById(R.id.TextView044);
t3[1] =(TextView)findViewById(R.id.TextView045);
t[2]=(TextView)findViewById(R.id.TextView046);
t2[2]=(TextView)findViewById(R.id.TextView047);
t3[2]=(TextView)findViewById(R.id.TextView048);
for(int i=0;i<3;i++)
{
t[i].setText(NAME[i]);
t2[i].setText(LEVEL[i]);
t3[i].setText(TIME[i]);
}
}
}

Tuesday, 12 April 2016

GameEngine.java

package com.vikesh.gamesudoku;

import android.content.Context;

import com.vikesh.gamesudoku.view.sudokugrid.GameGrid;

public class GameEngine {

private static GameEngine instance;

//private int[][] sudoku;

private GameGrid grid = null;

private int selectedPosX=-1,selectedPosY=-1;
private GameEngine(){}

public static GameEngine getInstance()
{
if(instance == null)
{
instance = new GameEngine();
}
return instance;
}

public void createGrid(Context context)
{
int[][] sudoku = SudokuGenerator.getInstance().generateGrid();
sudoku = SudokuGenerator.getInstance().removeElements(sudoku);
grid = new GameGrid(context);
grid.setGrid(sudoku);
}

public GameGrid getGrid()
{
return grid;
}
/*public int[][] getSudoku() {
return sudoku;
}

public void setSudoku(int[][] sudoku) {
this.sudoku = sudoku;
}*/

public void setSelectedPosition(int x,int y)
{
selectedPosX = x;
selectedPosY = y;
}

public void setNumber(int number)
{
if(selectedPosX!=-1 && selectedPosY!=-1)
{
grid.setItem(selectedPosX,selectedPosY,number);
}
grid.checkGame();
}
}

Monday, 11 April 2016


Game.java

package com.vikesh.gamesudoku;

import android.app.Activity;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.widget.Button;
import android.widget.Chronometer;
import android.widget.Toolbar;

public class Game extends Activity {

public static final String TAG="Selected";
public static int Difficulty_Level =0;
public static final String KEY_DIFFICULTY = "org.example.sudoku.difficulty";
public static final int DIFFICULTY_EASY = 0;
public static final int DIFFICULTY_MEDIUM = 1;
public static final int DIFFICULTY_HARD = 2;
protected static final int DIFFICULTY_CONTINUE = -1;
public static Chronometer focus;
public static SQLiteDatabase db=null;
public static String DIFFICULTY_LEVEL=null;
Button start;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
focus = (Chronometer) findViewById(R.id.chronometer1);
int diff = getIntent().getIntExtra(KEY_DIFFICULTY, DIFFICULTY_EASY);
db=openOrCreateDatabase("sudoku", MODE_PRIVATE, null);
db.execSQL("create table if not exists highscore(name varchar,level varchar,score varchar)");
if(diff==3)
{
Difficulty_Level =65;
DIFFICULTY_LEVEL = "Extremly Hard";
GameEngine.getInstance().createGrid(this);
setContentView(R.layout.activity_main);
focus = (Chronometer) findViewById(R.id.chronometer1);
focus.start();
}
else if(diff==2)
{
Difficulty_Level =55;
DIFFICULTY_LEVEL = "Hard";
GameEngine.getInstance().createGrid(this);
setContentView(R.layout.activity_main);
focus = (Chronometer) findViewById(R.id.chronometer1);
focus.start();
}
else if(diff ==1)
{

Difficulty_Level =50;
DIFFICULTY_LEVEL = "Medium";
GameEngine.getInstance().createGrid(this);
setContentView(R.layout.activity_main);
focus = (Chronometer) findViewById(R.id.chronometer1);
focus.start();
}
else
{

Difficulty_Level =3;
DIFFICULTY_LEVEL = "Easy";
GameEngine.getInstance().createGrid(this);
setContentView(R.layout.activity_main);
focus = (Chronometer) findViewById(R.id.chronometer1);
focus.start();
}
}
}

Friday, 8 April 2016

Sudoku Project Structure

i) .settings
ii) assets
iii) bin
iv) gen
      R.java
v) libs
vi) res
vii) src
       com
          vikesh
               gamesudoku
                   view
                         buttonsgrid
                               ButtonsGridView.java
                               NumberButton.java
                         sudokugrid
                                BaseSudokuCell.java
                                GameGrid.java
                                SudokuCell.java
                                SudokuGridView.java
                                SudokuGridViewAdapter.java                            
               About.java
               Game,java
               GameEngine.java
               HighScore.java
               MainActivity.java
               Naming.java
               SudokuChecker.java
               SudokuGenerator.java
,AndroidManifest

               

Thursday, 7 April 2016

Sudoku Checker

package com.vikesh.gamesudoku;

public class SudokuChecker {

private static SudokuChecker instance;
private SudokuChecker(){}
public static SudokuChecker getInstance()
{
if(instance==null)
{
instance = new SudokuChecker();
}
return instance;
}
public boolean checkSudoku(int[][] sudoku)
{
return (checkHorizontal(sudoku)|| checkVertical(sudoku) || checkRegions(sudoku));
}

private boolean checkHorizontal(int[][] sudoku) {
for(int y=0;y<9;y++)
{
for(int xpos=0;xpos<9;xpos++)
{
if(sudoku[xpos][y]==0)
{
return false;
}
for(int x = xpos+1;x<9;x++)
{
if(sudoku[xpos][y]==sudoku[x][y] || sudoku[x][y]==0)
{
return false;
}
}
}
}
return true;
}
private boolean checkVertical(int [][] sudoku) {
for(int x=0;x<9;x++)
{
for(int ypos=0;ypos<9;ypos++)
{
if(sudoku[x][ypos]==0)
{
return false;
}
for(int y = ypos+1;y<9;y++)
{
if(sudoku[x][ypos]==sudoku[x][y] || sudoku[x][y]==0)
{
return false;
}
}
}
}
return true;
}

private boolean checkRegions(int[][] sudoku) {
for(int xRegion=0;xRegion<3;xRegion++)
{
for(int yRegion=0;yRegion<3;yRegion++)
{
if(!checkRegion(sudoku, xRegion, yRegion))
{
return false;
}
}
}
return true;
}
private boolean checkRegion(int[][] sudoku,int xRegion,int yRegion)
{
for(int xpos = xRegion*3;xpos<xRegion*3+3;xpos++)
{
for(int ypos = yRegion*3;ypos<yRegion*3+3;ypos++)
{
for(int x = xpos;x<xRegion*3+3;x++)
{
for(int y = ypos;y<yRegion*3+3;y++)
{
if((x!=xpos || y!=ypos) && (sudoku[xpos][ypos]==sudoku[x][y] || sudoku[x][y]==0))
{
return false;
}
}
}
}
}
return true;
}

}

Monday, 4 April 2016

Sudoku-The Number Logic Puzzle 

Sudoku Generator

This class will generate the sudoku puzzle.

package com.vikesh.gamesudoku;

import java.util.ArrayList;
import java.util.Random;

import android.graphics.Color;

public class SudokuGenerator {

private ArrayList<ArrayList<Integer>> Available = new ArrayList<ArrayList<Integer>>();
private static SudokuGenerator instance;
private Random rand = new Random();
private SudokuGenerator()
{
}
public static SudokuGenerator getInstance()
{
if(instance==null)
{
instance = new SudokuGenerator();
}
return instance;
}
public int[][] generateGrid()
{
int[][] sudoku = new int[9][9];
int currentPos = 0;
while(currentPos < 81)
{
if( currentPos == 0 ){
clearGrid(sudoku);
}
if(Available.get(currentPos).size()!=0)
{
int i = rand.nextInt(Available.get(currentPos).size());
int number = Available.get(currentPos).get(i);
if(!checkConflict(sudoku, currentPos,number))
{
int xpos = currentPos%9;
int ypos = currentPos/9;
sudoku[xpos][ypos] = number;
Available.get(currentPos).remove(i);
currentPos++;
}
else
{
Available.get(currentPos).remove(i);
}
}
else
{
for(int i = 1; i<=9; i++)
{
Available.get(currentPos).add(i);
}
currentPos--;
}
}
return sudoku;
}
public int[][] removeElements(int[][] sudoku)
{
int i=0;
while(i<Game.Difficulty_Level)
{
int x = rand.nextInt(9);
int y = rand.nextInt(9);
if(sudoku[x][y]!=0)
{
sudoku[x][y] = 0;
}
i++;
}
return sudoku;
}
private void clearGrid(int[][] sudoku)
{
Available.clear();
for(int y =0; y<9; y++)
{
for(int x = 0; x<9; x++)
{
sudoku[x][y] = -1;
}
}
for(int x=0;x<81;x++)
{
Available.add(new ArrayList<Integer>());
for(int i=1;i<=9;i++)
{
Available.get(x).add(i);
}
}
}
private boolean checkConflict(int[][] sudoku,int currentPos,final int number)
{
int xpos = currentPos%9;
int ypos = currentPos/9;
if(checkHorizontalConflict(sudoku, xpos, ypos, number)||checkVerticalConflict(sudoku, xpos, ypos, number)||checkRegionConflict(sudoku, xpos, ypos, number))
{
return true;
}
return false;
}
private boolean checkHorizontalConflict(final int[][] sudoku,final int xpos,final int ypos,final int number)
{
for(int x = xpos-1;x>=0;x--)
{
if(number == sudoku[x][ypos])
{
return true;
}
}
return false;
}
private boolean checkVerticalConflict(final int[][] sudoku,final int xpos,final int ypos,final int number)
{
for(int y=ypos;y>=0;y--)
{
if(number==sudoku[xpos][y])
{
return true;
}
}
return false;
}
private boolean checkRegionConflict(final int[][] sudoku,final int xpos,final int ypos,final int number)
{
int xRegion = xpos/3;
int yRegion = ypos/3;
for(int x = xRegion*3;x<xRegion*3+3;x++)
{
for(int y = yRegion*3;y<yRegion*3+3;y++)
{
if((x!=xpos || y!=ypos) && number==sudoku[x][y])
{
return true;
}
}
}
return false;
}
}

Friday, 1 April 2016

A. Find IMEI Number in Android

Step 1 : Select File -> New -> Project -> Android Application Project (or) Android Project. Fill the forms and click "Finish" button.

Step 2 : Open res -> layout -> activity_main.xml (or) main.xml and add following code :

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >
 
    <TextView
        android:id="@+id/textView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentTop="true"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="50dp"
        android:textColor="#4169E1"
        android:textSize="18sp"
        android:text="IMEI Number" />
 
    <TextView
        android:id="@+id/textView2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerInParent="true"
        android:textSize="15sp"
        android:text="IMEI" />
 
</RelativeLayout>

Step 3 : Open src -> package -> MainActivity.java and add following code :

package balaji.imei_number;
 
import android.os.Bundle;
import android.app.Activity;
import android.content.Context;
import android.telephony.TelephonyManager;
import android.widget.TextView;
 
public class MainActivity extends Activity {
 
 TelephonyManager tel;
 TextView imei;
 
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
                
        tel = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);
        
        imei = (TextView) findViewById(R.id.textView2);
        imei.setText(tel.getDeviceId().toString());
    }
}

Step 4 : Open AndroidManifest.xml and add following code :


<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="balaji.imei_number"
    android:versionCode="1"
    android:versionName="1.0" >
 
    <uses-sdk
        android:minSdkVersion="8"
        android:targetSdkVersion="15" />
    
    <uses-permission android:name="android.permission.READ_PHONE_STATE"/>
 
    <application
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <activity
            android:name=".MainActivity"
            android:label="@string/title_activity_main" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
 
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>
 
</manifest>

Step 5 : Our output will be like this :

Run on real device, you will get the IMEI number

Output