package edu.ncsu.ece.walkietalkie;
import java.net.Socket;
import edu.ncsu.ece.walkietalkie.R;
import edu.ncsu.ece.walkietalkie.WalkieTalkieEngine;
import android.app.Activity;
import android.app.AlertDialog;
import android.content.ActivityNotFoundException;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.os.Bundle;
import android.os.Handler;
import android.text.InputType;
import android.util.Log;
import android.view.KeyEvent;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.EditText;
import android.widget.ImageButton;
public class WalkieTalkie extends Activity{
WalkieTalkieEngine m_WalkieTalkieEngine;
int m_CurrentTimer = 0;
// Need handler for callbacks to the UI thread
final Handler mHandler = new Handler();
private static final String TAG = "WalkieTalkieEngine";
/* Following the menu item constants which will be used for menu creation */
public static final int LOGIN_MENU_ID = Menu.FIRST;
public static final int REGISTER_MENU_ITEM = LOGIN_MENU_ID + 1;
public static final int UNREGISTER_MENU_ITEM = LOGIN_MENU_ID + 2;
public static final int EXIT_MENU_ITEM = LOGIN_MENU_ID + 3;
AlertDialog m_AlertDlg = null;
ImageButton start, stop;
EditText show_text;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Log.e(TAG, "onCreate called");
start = (ImageButton) findViewById(R.id.Button01);
stop = (ImageButton) findViewById(R.id.Button02);
show_text = (EditText) findViewById(R.id.EditText01);
start.setEnabled(false); // Disable START button initially
stop.setEnabled(false); // Disable STOP button initially
show_text.setSingleLine();
show_text.setInputType(InputType.TYPE_NULL);
m_CurrentTimer = 1;
m_WalkieTalkieEngine = new WalkieTalkieEngine(get_local_ip_addr());
m_WalkieTalkieEngine.StartEngine();
Integer tmp = new Integer(m_WalkieTalkieEngine.GetState());
Log.e(TAG, tmp.toString());
start.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
show_text.setText("Walkie-Talkie Engine Started");
start.setEnabled(false); // Disable START button initially
stop.setEnabled(true); // Enable STOP button initially
boolean sipsend_status = m_WalkieTalkieEngine.sipsend();
if(sipsend_status) {
show_text.setText("You can talk now.");
}
else {
show_text.setText("Talk failed");
}
//show_text.setText("Engine Started");
}
});
stop.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
//show_text.setText("Walkie-Talkie Engine Stopped");
stop.setEnabled(false); // Disable STOP button initially
start.setEnabled(true); // Enable START button initially
m_WalkieTalkieEngine.stopsip();
show_text.setText("Talk Finished");
}
});
}
public Context getUIContext() {
return this;
}
public String get_local_ip_addr() {
String ipAddress = null;
try
{
Socket socket = new Socket("www.ncsu.edu", 80);
ipAddress = socket.getLocalAddress().toString();
}
catch(Exception e)
{
Log.i(TAG, e.getMessage());
}
Log.e(TAG, "local ip = "+ipAddress);
return ipAddress;
}
@Override
protected void onActivityResult(int requestCode, int resultCode,
Intent extras) {
switch(requestCode)
{
case Constants.LOGIN_ACTIVITY:
{
boolean result = m_WalkieTalkieEngine.login();
if(result == true){
show_text.setText("Login Successful");
}
else{
show_text.setText("Login Failed");
m_AlertDlg = new AlertDialog.Builder(this)
.setMessage("Login Failed.")
.setTitle("Walkie Talkie")
.setCancelable(true)
.setPositiveButton("OK", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
// TODO Auto-generated method stub
dialog.cancel();
}
})
.show();
try
{
m_AlertDlg.wait(10);
}
catch (Exception e1)
{
};
}
break;
}
case Constants.REGISTER_ACTIVITY:
{
// TODO: Check state if logged in else alert notif
boolean result = m_WalkieTalkieEngine.register(3600);
if(result == true){
show_text.setText("Registration Successful");}
else{
show_text.setText("Registration Failed");
show_text.setText("Login Failed");
m_AlertDlg = new AlertDialog.Builder(this)
.setMessage("Registration Failed")
.setTitle("Walkie Talkie")
.setCancelable(true)
.setPositiveButton("OK", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
// TODO Auto-generated method stub
dialog.cancel();
}
})
.show();
try
{
m_AlertDlg.wait(10);
}
catch (Exception e1)
{
};
}
start.setEnabled(true); // Enable START button
break;
}
}
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
boolean result = super.onCreateOptionsMenu(menu);
// Create and add new menu items.
MenuItem itemLogin = menu.add(0, LOGIN_MENU_ID, Menu.NONE, "Login");
MenuItem itemReg = menu.add(0, REGISTER_MENU_ITEM, Menu.NONE, "Register");
MenuItem itemUnReg = menu.add(0, UNREGISTER_MENU_ITEM, Menu.NONE, "Un-Register");
MenuItem itemExit = menu.add(0, EXIT_MENU_ITEM, Menu.NONE, "Exit");
// Assign icons
itemLogin.setIcon(R.drawable.barcode);
itemReg.setIcon(R.drawable.sun);
itemUnReg.setIcon(R.drawable.flash);
itemExit.setIcon(R.drawable.exit);
return result;
}
@Override
public boolean onPrepareOptionsMenu(Menu menu) {
boolean result = super.onPrepareOptionsMenu(menu);
if (m_WalkieTalkieEngine.GetState() == Constants.INIT)
{
menu.findItem(REGISTER_MENU_ITEM).setVisible(false);
menu.findItem(UNREGISTER_MENU_ITEM).setVisible(false);
menu.findItem(LOGIN_MENU_ID).setVisible(true);
}
if (m_WalkieTalkieEngine.GetState() == Constants.LOGGED_IN)
{
menu.findItem(LOGIN_MENU_ID).setVisible(false);
menu.findItem(UNREGISTER_MENU_ITEM).setVisible(false);
menu.findItem(REGISTER_MENU_ITEM).setVisible(true);
}
if (m_WalkieTalkieEngine.GetState() == Constants.REGISTERED)
{
menu.findItem(LOGIN_MENU_ID).setVisible(false);
menu.findItem(REGISTER_MENU_ITEM).setVisible(false);
menu.findItem(UNREGISTER_MENU_ITEM).setVisible(true);
}
return result;
}
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
return false;
}
@Override
public boolean onKeyUp(int keyCode, KeyEvent event) {
return false;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
boolean result = super.onOptionsItemSelected(item);
Intent intent = null;
switch (item.getItemId()) {
case EXIT_MENU_ITEM:
{
if(m_WalkieTalkieEngine.GetState()!=0)
m_WalkieTalkieEngine.bye();
onDestroy();
onStop();
this.finish();
break;
}
case LOGIN_MENU_ID:
{
try{
intent = new Intent(this, LoginUI.class);
startActivityForResult(intent, Constants.LOGIN_ACTIVITY);
}catch(ActivityNotFoundException e){
m_AlertDlg = new AlertDialog.Builder(this)
.setMessage("Problem launching Login page.")
.setTitle("Walkie Talkie")
.setCancelable(true)
.show();
try
{
m_AlertDlg.wait(10);
}
catch (Exception e1)
{
};
}
break;
}
case REGISTER_MENU_ITEM:
{
try{
intent = new Intent(this, RegisterUI.class);
startActivityForResult(intent, Constants.REGISTER_ACTIVITY);
}catch(ActivityNotFoundException e){
m_AlertDlg = new AlertDialog.Builder(this)
.setMessage("Problem launching Register page.")
.setTitle("Walkie Talkie")
.setCancelable(true)
.show();
try
{
m_AlertDlg.wait(10);
}
catch (Exception e1)
{
};
}
break;
}
case UNREGISTER_MENU_ITEM:
{
boolean res = m_WalkieTalkieEngine.register(0);
if(res == true){
show_text.setText("Unregistration Successful");}
else{
show_text.setText("Unregistration Failed");}
start.setEnabled(false);
break;
}
}
return result;
}
@Override
protected void onDestroy() {
super.onDestroy();
Log.e(TAG,"onDestroy Called.");
if(m_WalkieTalkieEngine.GetState()!= Constants.INIT)
m_WalkieTalkieEngine.bye();
m_WalkieTalkieEngine.setState(Constants.INIT);
WalkieTalkieEngine.m_groupNum = null;
WalkieTalkieEngine.m_password = null;
WalkieTalkieEngine.m_server_addr = null;
WalkieTalkieEngine.m_userName = null;
}
@Override
protected void onStop() {
super.onStop();
Log.e(TAG, "onStop Called");
}
@Override
protected void onPause() {
super.onPause();
Log.e(TAG, "onPause Called");
// TODO Auto-generated method stub
}
@Override
protected void onRestart() {
super.onRestart();
Log.e(TAG, "onRestart Called");
// TODO Auto-generated method stub
}
@Override
protected void onResume() {
super.onResume();
Log.e(TAG, "onResume Called");
// TODO Auto-generated method stub
}
@Override
protected void onStart() {
super.onStart();
Log.e(TAG, "onStart Called");
// TODO Auto-generated method stub
}
}
1. 질문하는 형태가 엄청,무지,심하게,건방질정도로 성의 없다.
( 해석해주세요, 해주세요 하면 해줄것 같나요? )
2. 여긴 질문게시판이 아닙니다.
3. 생각좀 하고 글을 쓰세요