0% found this document useful (0 votes)
81 views

G.B. Pant Govt. Engineering College: Department of Computer Science

The document provides details about the 8th semester Mobile Computing Lab practicals in the Department of Computer Science at G.B. Pant Govt. Engineering College. It lists 8 experiments to be performed, including developing a calculator, phone book, digital clock, unit converter, text editor, and tic tac toe game for the Android platform. It also includes experiments on implementing mobile ad-hoc networks and the AODV routing protocol using the NS2 network simulator.

Uploaded by

Urvashi Gupta
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
81 views

G.B. Pant Govt. Engineering College: Department of Computer Science

The document provides details about the 8th semester Mobile Computing Lab practicals in the Department of Computer Science at G.B. Pant Govt. Engineering College. It lists 8 experiments to be performed, including developing a calculator, phone book, digital clock, unit converter, text editor, and tic tac toe game for the Android platform. It also includes experiments on implementing mobile ad-hoc networks and the AODV routing protocol using the NS2 network simulator.

Uploaded by

Urvashi Gupta
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 38

G.B. Pant Govt.

Engineering College
(Govt. of NCT of Delhi)
Okhla Industrial Estate Phase-III, New Delhi-110020

Department of Computer Science


B.Tech (CSE) - 8th Semester
MOBILE COMPUTING LAB
(ETIT-452)

Submitted to: Submitted by:


Dr. Sushil Kumar Urvashi Gupta
04220902717
List of Practical

Sr. No. Practical Page No.

1. Develop a Calculator for Android Platform using any mobile phone 1-4
interface.

2. Develop a Phone Book for Android Platform using any mobile phone 5-8
interface.

3. Develop a Digital Clock for Android Platform using any mobile phone 9-10
interface.

4. Develop a Unit Converter for Android Platform using any mobile phone 11-16
interface.

5. Develop a Text Editor for Android Platform using any mobile phone 17-23
interface.

6. Develop a Tic Tac Toe game for Android Platform using any mobile 24-33
phone interface.

7. Implement mobile ad-hoc network using NS2 34

8. Implement AODV routing protocol using NS2/NS2 35-36


Experiment 1
AIM: Develop a Calculator for Andriod Platform using any mobile phone
interface.
SOURCE CODE:

MainActivity.java

package com.example.gfg_my_first_app;
  
import androidx.appcompat.app.AppCompatActivity;
  
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
  
public class MainActivity extends AppCompatActivity {
  
    EditText e1, e2;
    TextView t1;
    int num1, num2;
  
    @Override
    protected void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
  
        setContentView(R.layout.activity_main);
    }
  
    // a public method to get the input numbers
    public boolean getNumbers()
    {
  
        // defining the edit text 1 to e1
        e1 = (EditText)findViewById(R.id.num1);
  
        // defining the edit text 2 to e2
        e2 = (EditText)findViewById(R.id.num2);
  
        // defining the text view to t1
        t1 = (TextView)findViewById(R.id.result);
  

1
        // taking input from text box 1
        s1 = e1.getText().toString();
  
        // taking input from text box 2
        s2 = e2.getText().toString();
  
        // condition to check if box is not empty
        if ((s1.equals(null) && s2.equals(null))
            || (s1.equals("") && s2.equals(""))) {
  
            String result = "Please enter a value";
            t1.setText(result);
  
            return false;
        }
        else {
            // converting string to int.
            num1 = Integer.parseInt(e1.getText().toString());
  
            // converting string to int.
            num2 = Integer.parseInt(e2.getText().toString());
        }
  
        return true;
    }
  
    // a public method to perform addition
    public void doSum(View v)
    {
  
        // get the input numbers
        if (getNumbers()) {
            int sum = num1 + num2;
            t1.setText(Integer.toString(sum));
        }
    }
  
    // a public method to perform power function
    public void doPow(View v)
    {
  
        // get the input numbers
        if (getNumbers()) {
            double sum = Math.pow(num1, num2);
            t1.setText(Double.toString(sum));
        }
    }
  
    // a public method to perform subtraction
    public void doSub(View v)

2
    {
  
        // get the input numbers
        if (getNumbers()) {
            int sum = num1 - num2;
            t1.setText(Integer.toString(sum));
        }
    }
  
    // a public method to perform multiplication
    public void doMul(View v)
    {
  
        // get the input numbers
        if (getNumbers()) {
            int sum = num1 * num2;
            t1.setText(Integer.toString(sum));
        }
    }
    // a public method to perform Division
    public void doDiv(View v)
    {
  
        // get the input numbers
        if (getNumbers()) {
  
            // displaying the text in text view assigned as t1
            double sum = num1 / (num2 * 1.0);
            t1.setText(Double.toString(sum));
        }
    }
    // a public method to perform modulus function
    public void doMod(View v)
    {
  
        // get the input numbers
        if (getNumbers()) {
            double sum = num1 % num2;
            t1.setText(Double.toString(sum));
        }
    }
}

3
OUTPUT:

4
Experiment 2
AIM: Develop a Phone Book for Andriod Platform using any mobile phone
interface.
SOURCE CODE:
PhoneBook
package pete.android.study;
 
import android.graphics.Bitmap;
 
public class PhoneBook {
    private Bitmap mAvatar;
    private String mName;
    private String mPhone;
    private String mEmail;
 
    public PhoneBook(Bitmap avatar, String name, String phone, String email) {
        mAvatar = avatar;
        mName = name;
        mPhone = phone;
        mEmail = email;
    }
 
    public void setAvatar(Bitmap avatar) {
        mAvatar = avatar;
    }
    public Bitmap getAvatar() {
        return mAvatar;
    }
 
    public void setName(String name) {
        mName = name;
    }
    public String getName() {
        return mName;
    }
 
    public void setPhone(String phone) {
        mPhone = phone;
    }
    public String getPhone() {
        return mPhone;
    }
 
    public void setEmail(String email) {
        mEmail = email;
    }

5
    public String getEmail() {
        return mEmail;
    }
}

PhoneBookAdapter

package pete.android.study;
 
import java.util.List;
 
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.TextView;
 
public class PhoneBookAdapter extends BaseAdapter {
    private Context mContext;
    private List<PhoneBook> mListPhoneBook;
 
    public PhoneBookAdapter(Context context, List<PhoneBook> list) {
        mContext = context;
        mListPhoneBook = list;
 
    }
 
    @Override
    public int getCount() {
        return mListPhoneBook.size();
    }
 
    @Override
    public Object getItem(int pos) {
        return mListPhoneBook.get(pos);
    }
 
    @Override
    public long getItemId(int pos) {
        return pos;
    }
 
    @Override
    public View getView(int pos, View convertView, ViewGroup parent) {
        // get selected entry
        PhoneBook entry = mListPhoneBook.get(pos);
 

6
        // inflating list view layout if null
        if(convertView == null) {
            LayoutInflater inflater = LayoutInflater.from(mContext);
            convertView = inflater.inflate(R.layout.phonebook_row, null);
        }
 
        // set avatar
        ImageView ivAvatar = (ImageView)convertView.findViewById(R.id.imgAvatar);
        ivAvatar.setImageBitmap(entry.getAvatar());
 
        // set name
        TextView tvName = (TextView)convertView.findViewById(R.id.tvName);
        tvName.setText(entry.getName());
 
        // set phone
        TextView tvPhone = (TextView)convertView.findViewById(R.id.tvPhone);
        tvPhone.setText(entry.getPhone());
 
        // set email
        TextView tvEmail = (TextView)convertView.findViewById(R.id.tvEmail);
        tvEmail.setText(entry.getEmail());
 
        return convertView;
    }
 
}

Main Activity
package pete.android.study;
 
import java.util.ArrayList;
import java.util.List;
 
import android.app.Activity;
import android.graphics.BitmapFactory;
import android.os.Bundle;
import android.widget.ListView;
 
public class MainActivity extends Activity {
 
    private ListView lvPhone;
 
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
 
        lvPhone = (ListView)findViewById(R.id.listPhone);
 
        List<PhoneBook> listPhoneBook = new ArrayList<PhoneBook>();

7
        listPhoneBook.add(new PhoneBook(
                BitmapFactory.decodeResource(getResources(), R.drawable.avatar_pete),
                "Pete Houston", "010-9817-6331", "pete.houston.17187@gmail.com"));
        listPhoneBook.add(new PhoneBook(
                BitmapFactory.decodeResource(getResources(), R.drawable.avatar_lina),
                "Lina Cheng", "046-7764-1142", "lina.cheng011@sunny.com"));
        listPhoneBook.add(new PhoneBook(
                BitmapFactory.decodeResource(getResources(), R.drawable.avatar_jenny),
                "Jenny Nguyen", "0913-223-498", "jenny_in_love98@yahoo.com"));
        PhoneBookAdapter adapter = new PhoneBookAdapter(this, listPhoneBook);
        lvPhone.setAdapter(adapter);
    }
}

OUTPUT:

8
Experiment 3
AIM: Develop a Digital Clock for Andriod Platform using any mobile phone
interface.
SOURCE CODE:
Activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">

<AnalogClock

android:layout_marginTop="20dp"
android:layout_marginLeft="120dp"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />

<DigitalClock

android:layout_marginLeft="140dp"
android:textSize="25dp"
android:layout_marginTop="300dp"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />

</RelativeLayout>

MainActivity.java

package org.geeksforgeeks.navedmalik.analogdigital;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;

public class MainActivity extends AppCompatActivity {

@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}

9
}

OUTPUT:

10
Experiment 4
AIM: Develop a unit converter for mobile device using any mobile interface.
SOURCE CODE:

import android.content.Context;
import android.content.SharedPreference;
import android.os.Bundle;
import android.preference.PreferenceManager;
import com.google.android.material.navigation.NavigationView;
import androidx.core.view.GravityCompat;
import androidx.drawerlayout.widget.DrawerLayout;
import android.view.MenuItem;
import android.view.View;
import android.view.inputmethod.InputMethodManager;

import com.physphil.android.unitconverterultimate.fragments.ConversionFragment;
import com.physphil.android.unitconverterultimate.fragments.HelpDialogFragment;
import com.physphil.android.unitconverterultimate.models.Conversion;
import com.physphil.android.unitconverterultimate.presenters.MainActivityPresenter;
import com.physphil.android.unitconverterultimate.presenters.MainActivityView;
import com.physphil.android.unitconverterultimate.util.Conversions;
import com.physphil.android.unitconverterultimate.util.IntentFactory;

public class MainActivity extends BaseActivity implements MainActivityView,


SharedPreferences.OnSharedPreferenceChangeListener {

private DrawerLayout mDrawerLayout;


private Conversions mConversions;
private MainActivityPresenter mPresenter;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// TODO - replace with Dagger2 injection
mPresenter = new MainActivityPresenter(this, this, Preferences.getInstance(this));

PreferenceManager.setDefaultValues(this, R.xml.preferences, true);

Preferences.getInstance(this).getPreferences().registerOnSharedPreferenceChangeListener(th
is);
mConversions = Conversions.getInstance();

// setup language
mPresenter.setLanguageToDisplay();

setContentView(R.layout.activity_main);

11
setupToolbar();
setToolbarHomeNavigation(true);
if (getSupportActionBar() != null)
getSupportActionBar().setHomeAsUpIndicator(R.drawable.ic_menu_white_24dp);

int conversion = Preferences.getInstance(this).getLastConversion();


setToolbarTitle(mConversions.getById(conversion).getLabelResource());
mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout);
mDrawerLayout.setDrawerListener(new DrawerLayout.DrawerListener() {
@Override
public void onDrawerSlide(View drawerView, float slideOffset) {}

@Override
public void onDrawerOpened(View drawerView) {
hideKeyboard();
}

@Override
public void onDrawerClosed(View drawerView) {}

@Override
public void onDrawerStateChanged(int newState) {}
});
setupDrawer(getMenuPositionOfConversion(conversion));

if (savedInstanceState == null) {
getSupportFragmentManager().beginTransaction()
.replace(R.id.fragment_container,
ConversionFragment.newInstance(conversion))
.commit();
}
}

@Override
protected void onStart() {
super.onStart();

// Show help dialog if never seen before


if (Preferences.getInstance(this).showHelp()) {
HelpDialogFragment.newInstance().show(getSupportFragmentManager(),
HelpDialogFragment.TAG);
}
}

@Override
protected void onDestroy() {
super.onDestroy();

Preferences.getInstance(this).getPreferences().unregisterOnSharedPreferenceChangeListener(
this);

12
}

private void setupDrawer(int state) {


NavigationView navigationView = (NavigationView)
findViewById(R.id.navigation_drawer);
navigationView.getMenu().getItem(state).setChecked(true);

navigationView.setItemBackgroundResource(Preferences.getInstance(this).isLightTheme() ?
R.drawable.navigation_item_background_light :
R.drawable.navigation_item_background);
navigationView.setNavigationItemSelectedListener(new
NavigationView.OnNavigationItemSelectedListener() {
@Override
public boolean onNavigationItemSelected(MenuItem menuItem) {
mDrawerLayout.closeDrawers();
switch (menuItem.getItemId()) {
case R.id.drawer_settings:
PreferencesActivity.start(MainActivity.this);
return true;

default:
menuItem.setChecked(true);
int conversion = getConversionFromDrawer(menuItem.getItemId());
setToolbarTitle(mConversions.getById(conversion).getLabelResource());
getSupportFragmentManager().beginTransaction()
.replace(R.id.fragment_container,
ConversionFragment.newInstance(conversion))
.commit();
return true;
}
}
});
}

@Conversion.id
private int getConversionFromDrawer(int itemId) {
switch (itemId) {
case R.id.drawer_area:
return Conversion.AREA;

case R.id.drawer_cooking:
return Conversion.COOKING;

case R.id.drawer_currency:
return Conversion.CURRENCY;

case R.id.drawer_storage:
return Conversion.STORAGE;

case R.id.drawer_energy:

13
return Conversion.ENERGY;

case R.id.drawer_fuel:
return Conversion.FUEL;

case R.id.drawer_length:
return Conversion.LENGTH;

case R.id.drawer_mass:
return Conversion.MASS;

case R.id.drawer_power:
return Conversion.POWER;

case R.id.drawer_pressure:
return Conversion.PRESSURE;

case R.id.drawer_speed:
return Conversion.SPEED;

case R.id.drawer_temperature:
return Conversion.TEMPERATURE;

case R.id.drawer_time:
return Conversion.TIME;

case R.id.drawer_torque:
return Conversion.TORQUE;

case R.id.drawer_volume:
return Conversion.VOLUME;
}

return Conversion.AREA;
}

private int getMenuPositionOfConversion(@Conversion.id final int conversion) {


switch (conversion) {
case Conversion.AREA:
return 0;
case Conversion.COOKING:
return 1;
case Conversion.CURRENCY:
return 2;
case Conversion.STORAGE:
return 3;
case Conversion.ENERGY:
return 4;
case Conversion.FUEL:
return 5;

14
case Conversion.LENGTH:
return 6;
case Conversion.MASS:
return 7;
case Conversion.POWER:
return 8;
case Conversion.PRESSURE:
return 9;
case Conversion.SPEED:
return 10;
case Conversion.TEMPERATURE:
return 11;
case Conversion.TIME:
return 12;
case Conversion.TORQUE:
return 13;
case Conversion.VOLUME:
return 14;
default:
return 0;
}
}

private void hideKeyboard() {


View v = getCurrentFocus();
if (v != null) {
InputMethodManager imm = (InputMethodManager)
getSystemService(Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(v.getWindowToken(), 0);
}
}

@Override
public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String
key) {
if (key.equals(Preferences.PREFS_THEME)) {
recreate();
}
else if (key.equals(Preferences.PREFS_LANGUAGE)) {
mPresenter.onLanguageChanged();
}
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case android.R.id.home:
mDrawerLayout.openDrawer(GravityCompat.START);
return true;

15
default:
return super.onOptionsItemSelected(item);
}
}

@Override
public void restartApp() {
startActivity(IntentFactory.getRestartAppIntent(this));
}
// endregion
}

OUTPUT:

16
Experiment 5
AIM :Develop a text editor for mobile device using any mobile interface.

SOURCE CODE

import android.app.AlertDialog;
import android.content.DialogInterface;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.text.TextUtils;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.EditText;
import android.widget.ImageButton;
import android.widget.Toast;

import io.github.mthli.knife.KnifeText;

public class MainActivity extends Activity {


private static final String BOLD = "<b>Bold</b><br><br>";
private static final String ITALIT = "<i>Italic</i><br><br>";
private static final String UNDERLINE = "<u>Underline</u><br><br>";
private static final String STRIKETHROUGH = "<s>Strikethrough</s><br><br>";
// <s> or <strike> or <del>
private static final String BULLET = "<ul><li>asdfg</li></ul>";
private static final String QUOTE = "<blockquote>Quote</blockquote>";
private static final String LINK = "<a
href=\"https://github.com/mthli/Knife\">Link</a><br><br>";
private static final String EXAMPLE = BOLD + ITALIT + UNDERLINE +
STRIKETHROUGH + BULLET + QUOTE + LINK;

private KnifeText knife;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

knife = (KnifeText) findViewById(R.id.knife);


// ImageGetter coming soon...
knife.fromHtml(EXAMPLE);
knife.setSelection(knife.getEditableText().length());

setupBold();

17
setupItalic();
setupUnderline();
setupStrikethrough();
setupBullet();
setupQuote();
setupLink();
setupClear();
}

private void setupBold() {


ImageButton bold = (ImageButton) findViewById(R.id.bold);

bold.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
knife.bold(!knife.contains(KnifeText.FORMAT_BOLD));
}
});

bold.setOnLongClickListener(new View.OnLongClickListener() {
@Override
public boolean onLongClick(View v) {
Toast.makeText(MainActivity.this, R.string.toast_bold,
Toast.LENGTH_SHORT).show();
return true;
}
});
}

private void setupItalic() {


ImageButton italic = (ImageButton) findViewById(R.id.italic);

italic.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
knife.italic(!knife.contains(KnifeText.FORMAT_ITALIC));
}
});

italic.setOnLongClickListener(new View.OnLongClickListener() {
@Override
public boolean onLongClick(View v) {
Toast.makeText(MainActivity.this, R.string.toast_italic,
Toast.LENGTH_SHORT).show();
return true;
}
});
}

private void setupUnderline() {

18
ImageButton underline = (ImageButton) findViewById(R.id.underline);

underline.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
knife.underline(!knife.contains(KnifeText.FORMAT_UNDERLINED));
}
});

underline.setOnLongClickListener(new View.OnLongClickListener() {
@Override
public boolean onLongClick(View v) {
Toast.makeText(MainActivity.this, R.string.toast_underline,
Toast.LENGTH_SHORT).show();
return true;
}
});
}

private void setupStrikethrough() {


ImageButton strikethrough = (ImageButton) findViewById(R.id.strikethrough);

strikethrough.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {

knife.strikethrough(!knife.contains(KnifeText.FORMAT_STRIKETHROUGH));
}
});

strikethrough.setOnLongClickListener(new View.OnLongClickListener() {
@Override
public boolean onLongClick(View v) {
Toast.makeText(MainActivity.this, R.string.toast_strikethrough,
Toast.LENGTH_SHORT).show();
return true;
}
});
}

private void setupBullet() {


ImageButton bullet = (ImageButton) findViewById(R.id.bullet);

bullet.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
knife.bullet(!knife.contains(KnifeText.FORMAT_BULLET));
}
});

19
bullet.setOnLongClickListener(new View.OnLongClickListener() {
@Override
public boolean onLongClick(View v) {
Toast.makeText(MainActivity.this, R.string.toast_bullet,
Toast.LENGTH_SHORT).show();
return true;
}
});
}

private void setupQuote() {


ImageButton quote = (ImageButton) findViewById(R.id.quote);

quote.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
knife.quote(!knife.contains(KnifeText.FORMAT_QUOTE));
}
});

quote.setOnLongClickListener(new View.OnLongClickListener() {
@Override
public boolean onLongClick(View v) {
Toast.makeText(MainActivity.this, R.string.toast_quote,
Toast.LENGTH_SHORT).show();
return true;
}
});
}

private void setupLink() {


ImageButton link = (ImageButton) findViewById(R.id.link);

link.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
showLinkDialog();
}
});

link.setOnLongClickListener(new View.OnLongClickListener() {
@Override
public boolean onLongClick(View v) {
Toast.makeText(MainActivity.this, R.string.toast_insert_link,
Toast.LENGTH_SHORT).show();
return true;
}
});
}

20
private void setupClear() {
ImageButton clear = (ImageButton) findViewById(R.id.clear);

clear.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
knife.clearFormats();
}
});

clear.setOnLongClickListener(new View.OnLongClickListener() {
@Override
public boolean onLongClick(View v) {
Toast.makeText(MainActivity.this, R.string.toast_format_clear,
Toast.LENGTH_SHORT).show();
return true;
}
});
}

private void showLinkDialog() {


final int start = knife.getSelectionStart();
final int end = knife.getSelectionEnd();

AlertDialog.Builder builder = new AlertDialog.Builder(this);


builder.setCancelable(false);

View view = getLayoutInflater().inflate(R.layout.dialog_link, null, false);


final EditText editText = (EditText) view.findViewById(R.id.edit);
builder.setView(view);
builder.setTitle(R.string.dialog_title);

builder.setPositiveButton(R.string.dialog_button_ok, new
DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
String link = editText.getText().toString().trim();
if (TextUtils.isEmpty(link)) {
return;
}

// When KnifeText lose focus, use this method


knife.link(link, start, end);
}
});

builder.setNegativeButton(R.string.dialog_button_cancel, new
DialogInterface.OnClickListener() {
@Override

21
public void onClick(DialogInterface dialog, int which) {
// DO NOTHING HERE
}
});

builder.create().show();
}

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

@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.undo:
knife.undo();
break;
case R.id.redo:
knife.redo();
break;
case R.id.github:
Intent intent = new Intent(Intent.ACTION_VIEW,
Uri.parse(getResources().getString(R.string.app_repo)));
startActivity(intent);
break;
default:
break;
}

return true;
}
}

22
OUTPUT:

23
Experiment 6
AIM: Develop a tic-tac-toe game for mobile device using any mobile interface.
SOURCE CODE:

import android.app.AlertDialog;
import android.content.DialogInterface;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.text.TextUtils;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.EditText;
import android.widget.ImageButton;
import android.widget.Toast;

import io.github.mthli.knife.KnifeText;

public class MainActivity extends Activity {


private static final String BOLD = "<b>Bold</b><br><br>";
private static final String ITALIT = "<i>Italic</i><br><br>";
private static final String UNDERLINE = "<u>Underline</u><br><br>";
private static final String STRIKETHROUGH = "<s>Strikethrough</s><br><br>";
// <s> or <strike> or <del>
private static final String BULLET = "<ul><li>asdfg</li></ul>";
private static final String QUOTE = "<blockquote>Quote</blockquote>";
private static final String LINK = "<a
href=\"https://github.com/mthli/Knife\">Link</a><br><br>";
private static final String EXAMPLE = BOLD + ITALIT + UNDERLINE +
STRIKETHROUGH + BULLET + QUOTE + LINK;

private KnifeText knife;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

knife = (KnifeText) findViewById(R.id.knife);


// ImageGetter coming soon...
knife.fromHtml(EXAMPLE);
knife.setSelection(knife.getEditableText().length());

setupBold();
setupItalic();
setupUnderline();

24
setupStrikethrough();
setupBullet();
setupQuote();
setupLink();
setupClear();
}

private void setupBold() {


ImageButton bold = (ImageButton) findViewById(R.id.bold);

bold.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
knife.bold(!knife.contains(KnifeText.FORMAT_BOLD));
}
});

bold.setOnLongClickListener(new View.OnLongClickListener() {
@Override
public boolean onLongClick(View v) {
Toast.makeText(MainActivity.this, R.string.toast_bold,
Toast.LENGTH_SHORT).show();
return true;
}
});
}

private void setupItalic() {


ImageButton italic = (ImageButton) findViewById(R.id.italic);

italic.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
knife.italic(!knife.contains(KnifeText.FORMAT_ITALIC));
}
});

italic.setOnLongClickListener(new View.OnLongClickListener() {
@Override
public boolean onLongClick(View v) {
Toast.makeText(MainActivity.this, R.string.toast_italic,
Toast.LENGTH_SHORT).show();
return true;
}
});
}

private void setupUnderline() {


ImageButton underline = (ImageButton) findViewById(R.id.underline);

25
underline.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
knife.underline(!knife.contains(KnifeText.FORMAT_UNDERLINED));
}
});

underline.setOnLongClickListener(new View.OnLongClickListener() {
@Override
public boolean onLongClick(View v) {
Toast.makeText(MainActivity.this, R.string.toast_underline,
Toast.LENGTH_SHORT).show();
return true;
}
});
}

private void setupStrikethrough() {


ImageButton strikethrough = (ImageButton) findViewById(R.id.strikethrough);

strikethrough.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {

knife.strikethrough(!knife.contains(KnifeText.FORMAT_STRIKETHROUGH));
}
});

strikethrough.setOnLongClickListener(new View.OnLongClickListener() {
@Override
public boolean onLongClick(View v) {
Toast.makeText(MainActivity.this, R.string.toast_strikethrough,
Toast.LENGTH_SHORT).show();
return true;
}
});
}

private void setupBullet() {


ImageButton bullet = (ImageButton) findViewById(R.id.bullet);

bullet.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
knife.bullet(!knife.contains(KnifeText.FORMAT_BULLET));
}
});

bullet.setOnLongClickListener(new View.OnLongClickListener() {

26
@Override
public boolean onLongClick(View v) {
Toast.makeText(MainActivity.this, R.string.toast_bullet,
Toast.LENGTH_SHORT).show();
return true;
}
});
}

private void setupQuote() {


ImageButton quote = (ImageButton) findViewById(R.id.quote);

quote.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
knife.quote(!knife.contains(KnifeText.FORMAT_QUOTE));
}
});

quote.setOnLongClickListener(new View.OnLongClickListener() {
@Override
public boolean onLongClick(View v) {
Toast.makeText(MainActivity.this, R.string.toast_quote,
Toast.LENGTH_SHORT).show();
return true;
}
});
}

private void setupLink() {


ImageButton link = (ImageButton) findViewById(R.id.link);

link.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
showLinkDialog();
}
});

link.setOnLongClickListener(new View.OnLongClickListener() {
@Override
public boolean onLongClick(View v) {
Toast.makeText(MainActivity.this, R.string.toast_insert_link,
Toast.LENGTH_SHORT).show();
return true;
}
});
}

private void setupClear() {

27
ImageButton clear = (ImageButton) findViewById(R.id.clear);

clear.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
knife.clearFormats();
}
});

clear.setOnLongClickListener(new View.OnLongClickListener() {
@Override
public boolean onLongClick(View v) {
Toast.makeText(MainActivity.this, R.string.toast_format_clear,
Toast.LENGTH_SHORT).show();
return true;
}
});
}

private void showLinkDialog() {


final int start = knife.getSelectionStart();
final int end = knife.getSelectionEnd();

AlertDialog.Builder builder = new AlertDialog.Builder(this);


builder.setCancelable(false);

View view = getLayoutInflater().inflate(R.layout.dialog_link, null, false);


final EditText editText = (EditText) view.findViewById(R.id.edit);
builder.setView(view);
builder.setTitle(R.string.dialog_title);

builder.setPositiveButton(R.string.dialog_button_ok, new
DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
String link = editText.getText().toString().trim();
if (TextUtils.isEmpty(link)) {
return;
}

// When KnifeText lose focus, use this method


knife.link(link, start, end);
}
});

builder.setNegativeButton(R.string.dialog_button_cancel, new
DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
// DO NOTHING HERE

28
}
});

builder.create().show();
}

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

@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.undo:
knife.undo();
break;
case R.id.redo:
knife.redo();
break;
case R.id.github:
Intent intent = new Intent(Intent.ACTION_VIEW,
Uri.parse(getResources().getString(R.string.app_repo)));
startActivity(intent);
break;
default:
break;
}

return true;
}
}

Board.java

import java.util.ArrayList;
import java.util.List;

public class Board {

private static int GAME_RESULT_WIN=1;


private static int GAME_RESULT_FAIL=2;
private static int GAME_RESULT_DRAW=0;

29
int[][] gameBoardArr=new int[3][3];

private int playCounter=1;

public boolean gameOver = false;

public Board copy(){

Board copy=new Board();

if (this.gameOver){
copy.gameOver=true;
}else {
copy.gameOver=false;
}

copy.playCounter=Integer.valueOf(this.playCounter);

for (int i=0;i<3;i++){


for (int j=0;j<3;j++){
copy.gameBoardArr[i][j]=this.gameBoardArr[i][j];
}
}

return copy;
}

public void placePiece(int position){

if (!gameOver){
//Log.d("Board","placePiece vaild");
int score=0;
switch (getCurrentPlayer()){
case 1:score=1;break;
case 2:score=5;break;
}

switch (position){
case 1: gameBoardArr[0][0]=score; break;
case 2: gameBoardArr[0][1]=score; break;
case 3: gameBoardArr[0][2]=score; break;
case 4: gameBoardArr[1][0]=score; break;
case 5: gameBoardArr[1][1]=score; break;
case 6: gameBoardArr[1][2]=score; break;
case 7: gameBoardArr[2][0]=score; break;
case 8: gameBoardArr[2][1]=score; break;
case 9: gameBoardArr[2][2]=score; break;
default: break;
}

30
playCounter++;

if (getGameResult()!=4){
gameOver=true;
// Log.d("Board","Game Over +Player"+getCurrentPlayer()+"Wins");
}

public int getCurrentPlayer() {


int currentPlayer;
if (this.playCounter%2==0)
currentPlayer=2;
else
currentPlayer=1;
return currentPlayer;
}

public int getGameResult(){

int gameResult=4;

boolean hasZero=false;
int rowSum=0;
int columnSum=0;
int diagonalSum=0;
int anotherDiagonalSum=0;

//Test Row
for (int i=0;i<3;i++){
rowSum=gameBoardArr[i][0]+gameBoardArr[i][1]+gameBoardArr[i][2];
if (rowSum==15){
return GAME_RESULT_FAIL;
}else if (rowSum==3){
return GAME_RESULT_WIN;
}
}

//Test Column
for (int i=0;i<3;i++){
columnSum=gameBoardArr[0][i]+gameBoardArr[1][i]+gameBoardArr[2][i];
if (columnSum==15){
return GAME_RESULT_FAIL;
}else if (columnSum==3){
return GAME_RESULT_WIN;
}
}

31
//test diagonalSum
diagonalSum=gameBoardArr[0][0]+gameBoardArr[1][1]+gameBoardArr[2][2];

anotherDiagonalSum=gameBoardArr[2][0]+gameBoardArr[1][1]+gameBoardArr[0][2];

if (diagonalSum==3||anotherDiagonalSum==3){
return GAME_RESULT_WIN;
}else if (diagonalSum==15||anotherDiagonalSum==15){
return GAME_RESULT_FAIL;
}

//check for draw


for (int i=0;i<3;i++){
for (int j=0;j<3;j++){
if (gameBoardArr[i][j]==0){
hasZero=true;
}
}
}

if (!hasZero){
return GAME_RESULT_DRAW;
}

return gameResult;
}

public List getAvailableSlots(){

List<Integer> list =new ArrayList<>();

int flag=1;
for (int i=0;i<3;i++){
for (int j=0;j<3;j++){
if (gameBoardArr[i][j]==0){
list.add(flag);
}
flag++;
}
}

//Log.d("Board","AvaliableSolts: "+list.toString());

return list;}}

32
OUTPUT:

33
Experiment 7
AIM: Implement mobile ad-hoc network using NS2.
IMPLEMENTATION:
void Protoname::send_protoname_pkt() {
Packet* p = allocpkt();
struct hdr_cmn* ch = HDR_CMN(p);
struct hdr_ip* ih = HDR_IP(p);
struct hdr_protoname_pkt* ph = HDR_PROTONAME_PKT(p);
ph-&amp;amp;amp;gt;pkt_src() = ra_addr();
ph-&amp;amp;amp;gt;pkt_len() = 7;
ph-&amp;amp;amp;gt;pkt_seq_num() = seq_num_++;
ch-&amp;amp;amp;gt;ptype() = PT_PROTONAME;
ch-&amp;amp;amp;gt;direction() = hdr_cmn::DOWN;
ch-&amp;amp;amp;gt;size() = IP_HDR_LEN +
ph-&amp;amp;amp;gt;pkt_len();
ch-&amp;amp;amp;gt;error() = 0;
ch-&amp;amp;amp;gt;next_hop() = IP_BROADCAST;
ch-&amp;amp;amp;gt;addr_type() = NS_AF_INET;
ih-&amp;amp;amp;gt;saddr() = ra_addr();
ih-&amp;amp;amp;gt;daddr() = IP_BROADCAST;
ih-&amp;amp;amp;gt;sport() = RT_PORT;
ih-&amp;amp;amp;gt;dport() = RT_PORT;
ih-&amp;amp;amp;gt;ttl() = IP_DEF_TTL;
Scheduler::instance().schedule(target_, p, JITTER);
}void
Protoname::reset_protoname_pkt_timer() {
pkt_timer_.resched((double)5.0); }

34
Experiment 8
AIM:Implement AODV routing protocol using NS2/NS2.
IMPLEMENTATION:
int hdr_aodv::offset_;
static class aodvHeaderClass : public PacketHeaderClass {
public: aodvHeaderClass() : PacketHeaderClass("PacketHeader/aodv",
                                                        sizeof(hdr_all_aodv)) {
        bind_offset(&hdr_aodv::offset_);
   }
} class_rtProtoaodv_hdr;
 
static class aodvclass : public TclClass {
public:
    aodvclass() : TclClass("Agent/aodv") {}
    TclObject* create(int argc, const char*const* argv) {
        assert(argc == 5);
        return (new aodv((nsaddr_t) Address::instance().str2addr(argv[4])));
    }
} class_rtProtoaodv;
 
 
int
aodv::command(int argc, const char*const* argv) {
    if(argc == 2) {
        Tcl& tcl = Tcl::instance();
         
        if(strncasecmp(argv[1], "id", 2) == 0) {
            tcl.resultf("%d", index);
            return TCL_OK;
        }
        if (strncasecmp(argv[1], "dump-table", 10) == 0) {
            printf("Node %d: Route table:\n", index);
            rtable.rt_dumptable();
            return TCL_OK;
        }   
        if(strncasecmp(argv[1], "start", 2) == 0) {
            btimer.handle((Event*) 0);
             

35
#ifndef aodv_LINK_LAYER_DETECTION
            htimer.handle((Event*) 0);
            ntimer.handle((Event*) 0);
#endif     
            rtimer.handle((Event*) 0);
            return TCL_OK;
        }

36

You might also like

pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy