티스토리 뷰

package com.hk.bluecontrol;

import java.io.IOException;
import java.io.OutputStream;
import java.util.ArrayList;
import java.util.UUID;

import android.app.Activity;
import android.bluetooth.BluetoothAdapter;
import android.bluetooth.BluetoothDevice;
import android.bluetooth.BluetoothSocket;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.os.AsyncTask;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.LinearLayout;
import android.widget.ListView;
import android.widget.RelativeLayout;

public class BlueControl extends Activity {

 private BluetoothAdapter bluetooth;
 private BluetoothSocket socket;
 private UUID uuid = UUID.fromString("a60f35f0-b93a-11de-8a39-08002009c669");
 private ArrayList<BluetoothDevice> foundDevices;
 private ArrayAdapter<BluetoothDevice> aa;
 private ListView list;

 BroadcastReceiver discoveryResult = new BroadcastReceiver() {
  @Override
  public void onReceive(Context context, Intent intent) {
   BluetoothDevice remoteDevice;
   remoteDevice = intent
     .getParcelableExtra(BluetoothDevice.EXTRA_DEVICE);
   if (bluetooth.getBondedDevices().contains(remoteDevice)) {
    foundDevices.add(remoteDevice);
    aa.notifyDataSetChanged();
   }
  }
 };

 /** Called when the activity is first created. */
 @Override
 public void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.main);

  // Get the Bluetooth Adapter
  configureBluetooth();
  // Setup the ListView of discovered devices
  setupListView();
  // Setup search button
  setupSearchButton();
  
  // Setup Button
  setupCloseButton();
  setupEnterButton();
  setupBackSpaceButton();
 }

 private void configureBluetooth() {
  bluetooth = BluetoothAdapter.getDefaultAdapter();
 }

 private void switchUI() {
  final RelativeLayout connLayout = (RelativeLayout) findViewById(R.id.connectLayout);
  final LinearLayout mainLayout = (LinearLayout) findViewById(R.id.mainLayout);

  connLayout.setVisibility(View.GONE);
  mainLayout.setVisibility(View.VISIBLE);
 }

 private void sendMessage(BluetoothSocket socket, String msg) {
  OutputStream outStream;

  try {
   outStream = socket.getOutputStream();
   byte[] byteString = (msg + "$").getBytes();
   outStream.write(byteString);
  } catch (IOException e) {
   Log.d("BLUETOOTH_COMMS", e.getMessage());
  }
 }

 private void setupListView() {
  foundDevices = new ArrayList<BluetoothDevice>();
  aa = new ArrayAdapter<BluetoothDevice>(this,
    android.R.layout.simple_list_item_1, foundDevices);
  list = (ListView) findViewById(R.id.list_discovered);
  list.setAdapter(aa);

  list.setOnItemClickListener(new OnItemClickListener() {
   public void onItemClick(AdapterView<?> arg0, View view, int index,
     long arg3) {
    AsyncTask<Integer, Void, Void> connectTask = new AsyncTask<Integer, Void, Void>() {
     @Override
     protected Void doInBackground(Integer... params) {
      try {
       BluetoothDevice device = foundDevices
         .get(params[0]);
       socket = device
         .createRfcommSocketToServiceRecord(uuid);
       socket.connect();
      } catch (IOException e) {
       Log.d("BLUETOOTH_CLIENT", e.getMessage());
       System.exit(0);
      }
      return null;
     }

     @Override
     protected void onPostExecute(Void result) {
      switchUI();
     }
    };
    connectTask.execute(index);
   }
  });
 }

 private void setupSearchButton() {
  Button searchButton = (Button) findViewById(R.id.button_search);
  searchButton.setOnClickListener(new OnClickListener() {
   public void onClick(View view) {
    registerReceiver(discoveryResult, new IntentFilter(
      BluetoothDevice.ACTION_FOUND));
    if (!bluetooth.isDiscovering()) {
     foundDevices.clear();
     bluetooth.startDiscovery();
    }
   }
  });
 }
 
 private void setupCloseButton() {
  Button searchButton = (Button) findViewById(R.id.button_close);
  searchButton.setOnClickListener(new OnClickListener() {
   public void onClick(View view) {
    sendMessage(socket, "close");
    try {
     socket.close();
    } catch (IOException e) {
     // TODO Auto-generated catch block
     e.printStackTrace();
    }
    System.exit(0);
   }
  });
 }
 
 private void setupEnterButton() {
  Button searchButton = (Button) findViewById(R.id.button_enter);
  searchButton.setOnClickListener(new OnClickListener() {
   public void onClick(View view) {
    sendMessage(socket, "enter");
   }
  });
 }
 
 private void setupBackSpaceButton() {
  Button searchButton = (Button) findViewById(R.id.button_backspace);
  searchButton.setOnClickListener(new OnClickListener() {
   public void onClick(View view) {
    sendMessage(socket, "backspace");
   }
  });
 }
}

반응형
댓글
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
최근에 올라온 글
글 보관함
Total
Today
Yesterday