티스토리 뷰
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");
}
});
}
}
'Studying > Android' 카테고리의 다른 글
기울기 센서 값 가지고 오기 (0) | 2011.03.23 |
---|---|
블루투스 연결 서버 소스 (0) | 2011.03.23 |
이클립스에서 외부 Library 연결 방법 (안드로이드) (0) | 2011.03.21 |
에러 처리 (0) | 2011.03.21 |
안드로이드 openCV 빌드 시 에러 처리 (0) | 2011.03.21 |