package exam.MobileDoor;

import android.app.Activity;
import android.bluetooth.BluetoothAdapter;
import android.bluetooth.BluetoothDevice;
import android.content.Intent;
import android.graphics.Color;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.text.InputType;
import android.text.method.PasswordTransformationMethod;
import android.view.*;
import android.widget.*;

public class MobileDoor extends Activity implements View.OnClickListener {
 
 //메시지 정수
 public static final int MSG_STATE_CHANGE=1;
 public static final int MSG_READ =2;
 
 // 요청 정수
 private static final int RQ_CONNECT_DEVICE=1;
 private static final int RQ_ENABLE_BT =2;
 
 // Bluetooth
 private BluetoothAdapter btAdapter;
 private BluetoothChatService chatService;
 
 // UI
 
 private TextView lblReceive; //수신 라벨
 private ImageView edtView;
 private EditText edtSend; //송신 텍스트 박스
 private Button btnSend; //송신 버튼
 private Button btnHelp; //도움말 버튼
 private Button btnQuit; // 종료 버튼
 
 // 어플리케이션 생성 시 불린다.
 @Override
  public void onCreate(Bundle icicle) {
  super.onCreate(icicle);
  requestWindowFeature(Window.FEATURE_NO_TITLE);
 
 
  // 레이아웃1의 생성
  /*RelativeLayout  layout1=new RelativeLayout(this);

  layout1.setGravity(Gravity.TOP);
  setContentView(layout1);
  */
  
  
  // 레이아웃의 생성
  LinearLayout layout=new LinearLayout(this);
  layout.setOrientation(LinearLayout.VERTICAL);
  layout.setGravity(Gravity.BOTTOM);
  setContentView(layout);
  
  //이미지뷰의 생성
  ImageView view=new ImageView(this);
  edtView= new ImageView(this);
  setLLParams(edtView,
    LinearLayout.LayoutParams.FILL_PARENT,
    LinearLayout.LayoutParams.WRAP_CONTENT);
  layout.addView(edtView);
  
 
  // 수신 라벨의 생성
  lblReceive=new TextView(this);
  lblReceive.setId(1);
  lblReceive.setText("");
  lblReceive.setTextSize(16.0f);
  lblReceive.setTextColor(Color.rgb(0, 0, 0));
 
  setLLParams(lblReceive,LinearLayout.LayoutParams.FILL_PARENT,LinearLayout.LayoutParams.WRAP_CONTENT);
  layout.addView(lblReceive);
 
  // 송신 텍스트 박스의 생성
  edtSend=new EditText(this);
  edtSend.setId(2);
  edtSend.setText("",TextView.BufferType.NORMAL);
  setLLParams(edtSend,
   LinearLayout.LayoutParams.FILL_PARENT,
   LinearLayout.LayoutParams.WRAP_CONTENT);
  layout.addView(edtSend);
  edtSend.setInputType(InputType.TYPE_TEXT_VARIATION_PASSWORD);
  PasswordTransformationMethod pass = new PasswordTransformationMethod();
  edtSend.setTransformationMethod(pass);
  // 송신 버튼의 생성
  btnSend=new Button(this);
  btnSend.setText("송신");
  btnSend.setOnClickListener(this);
  // 헬프 버튼의 생성
  btnHelp=new Button(this);
  btnHelp.setText("도움말");
  //btnHelp.layout(, t, r, b)
  btnHelp.setOnClickListener(this);
  // 종료 버튼의 생성
  btnQuit=new Button(this);
  btnQuit.setText("종료");
  btnQuit.setOnClickListener(this);
  
  setLLParams(btnSend);
  setLLParams(btnSend,
    LinearLayout.LayoutParams.FILL_PARENT,
    LinearLayout.LayoutParams.WRAP_CONTENT);
  layout.addView(btnSend);
  
  setLLParams(btnHelp);
  setLLParams(btnHelp,
    LinearLayout.LayoutParams.FILL_PARENT,
    LinearLayout.LayoutParams.WRAP_CONTENT);
  layout.addView(btnHelp);
  
  setLLParams(btnQuit);
  setLLParams(btnQuit,
    LinearLayout.LayoutParams.FILL_PARENT,
    LinearLayout.LayoutParams.WRAP_CONTENT);
  layout.addView(btnQuit);
  
  
 
  // Bluetooth 어댑터
  btAdapter=BluetoothAdapter.getDefaultAdapter();
 }

 private void setAction(){
 
 startActivity(new Intent(this,SplashActivity.class));
 
 setAction();
 
 Toast.makeText(this,"어플리케이션을 시작합니다",Toast.LENGTH_SHORT).show();
 
}
 
 // 어플리케이션 시작 시 불린다.
 @Override
  public void onStart() {
  super.onStart();
  if (!btAdapter.isEnabled()) {
   Intent enableIntent = new Intent(
    BluetoothAdapter.ACTION_REQUEST_ENABLE);
   startActivityForResult(enableIntent,RQ_ENABLE_BT);
  } else {
   if (chatService==null) chatService=
    new BluetoothChatService(this,handler);
  }
 }
 
 // 어플리케이션 재개 시 불린다.
 @Override
  public synchronized void onResume() {
  super.onResume();
  if (chatService!=null) {
   if (chatService.getState() ==BluetoothChatService.STATE_NONE) {
    // Bluetooth의 접속 대기(서버)
    chatService.start();
   }
  }
 }
 
 // 어플리케이션 파괴 시 불린다.
 @Override
  public void onDestroy() {
  super.onDestroy();
  if (chatService!=null) chatService.stop();
 }
 
 // 다른 Bluetooth 단말기로부터의 검색을 유효하게 설정 (4)
 private void ensureDiscoverable() {
  if (btAdapter.getScanMode()!=
   BluetoothAdapter.SCAN_MODE_CONNECTABLE_DISCOVERABLE) {
   Intent discoverableIntent=new Intent(
    BluetoothAdapter.ACTION_REQUEST_DISCOVERABLE);
   discoverableIntent.putExtra(
    BluetoothAdapter.EXTRA_DISCOVERABLE_DURATION,300);
   startActivity(discoverableIntent);
  }
 }
 
 // 채팅 서버로부터 정보를 취득하는 핸들러
 private final Handler handler=new Handler() {
  // 핸들 메시지
  @Override
   public void handleMessage(Message msg) {
   switch (msg.what) {
    // 상태 변경
   case MSG_STATE_CHANGE:
    switch (msg.arg1) {
    case BluetoothChatService.STATE_CONNECTED:
     addText("접속 완료") ;break;
    case BluetoothChatService.STATE_CONNECTING:
     addText("접속 중") ;break;
    case BluetoothChatService.STATE_LISTEN:
    case BluetoothChatService.STATE_NONE:
     addText("미접속") ;
    break;
    }
    break;
    // 메시지 수신
    case MSG_READ:
     byte[] readBuf=(byte[]) msg.obj;
     addText(new String(readBuf,0,msg.arg1));
     break;
   }
  }
 };
 
 // 어플리케이션 복귀 시 불린다.
 public void onActivityResult(int requestCode,int resultCode,Intent data) {
  switch (requestCode) {
   // 단말기 검색
  case RQ_CONNECT_DEVICE:
   if (resultCode==Activity.RESULT_OK) {
    String address=data.getExtras().
     getString(DeviceListActivity.EXTRA_DEVICE_ADDRESS);
    
    // Bluetooth의 접속 요구(클라이언트)
    BluetoothDevice device=btAdapter.getRemoteDevice(address);
    chatService.connect(device);
   }
   break;
   // 검색 유효
  case RQ_ENABLE_BT:
   if (resultCode==Activity.RESULT_OK) {
    chatService=new BluetoothChatService(this,handler);
   } else {
    Toast.makeText(this,"Bluetooth가 유효하지 않습니다",
     Toast.LENGTH_SHORT).show();
    finish();
   }
  }
 }
 
 // 옵션 메뉴 생성 시 불린다.
 @Override
  public boolean onCreateOptionsMenu(Menu menu) {
  super.onCreateOptionsMenu(menu);
  MenuItem item0=menu.add(0,0,0,"단말기 검색");
  item0.setIcon(android.R.drawable.ic_search_category_default);
  MenuItem item1=menu.add(0,1,0,"검색 유효");
  item1.setIcon(android.R.drawable.ic_menu_call);
  return true;
 }
 
 // 옵션 메뉴 선택 시 불린다.
 @Override
  public boolean onOptionsItemSelected(MenuItem item) {
  switch (item.getItemId()) {
   // 검색
  case 0:
   Intent serverIntent=new Intent(this,DeviceListActivity.class);
   startActivityForResult(serverIntent,RQ_CONNECT_DEVICE);
   return true;
   // 검색 유효
  case 1:
   ensureDiscoverable();
   return true;
  }
  return false;
 }
 
 // 수신 텍스트의 추가
 private void addText(final String text) {
  // 핸들러에 의한 사용자 인터페이스 조작
  handler.post(new Runnable(){
   public void run() {
    lblReceive.setText(text+
     System.getProperty("line.separator")+
     lblReceive.getText());
   }
  });
 }
 
 // 버튼 클릭 이벤트의 처리
 public void onClick(View v) {
  if (v==btnSend) {
   try {
    // 메시지의 송신
    String message=edtSend.getText().toString();
    if (message.length()>0) {
     chatService.write(message.getBytes());
    }
    addText(message);
    edtSend.setText("",TextView.BufferType.NORMAL);
   } catch (Exception e) {
    addText("통신 실패했습니다");
   }
  }
  else if(v==btnHelp){
   Intent i=new Intent(this,help.class);
   startActivity(i);
  
  }else if(v==btnQuit){
   finish();
  }
 }
 
 // 리니어 레이아웃의 파라미터 지정
 private static void setLLParams(View view) {
  view.setLayoutParams(new LinearLayout.LayoutParams(
   LinearLayout.LayoutParams.WRAP_CONTENT,
   LinearLayout.LayoutParams.WRAP_CONTENT));
 }
 
 // 리니어 레이아웃의 파라미터 지정
 private static void setLLParams(View view, int w, int h) {
  view.setLayoutParams(new LinearLayout.LayoutParams(w,h));
 }
}




이 자바 소스에 있는 editText, TextView, Button,으로 지정한 것을 Xml 파일로 옮겨 실행할 수 있도록 할 수 없을까요... 도와주세요..

메일 주소는 supermantot@cyworld.com
보내주시면 정말 감사합니다. 댓글 남겨주셔도 좋구요