안녕하세요
블루투스 연결 때문에 일주일동안 고생하고 있습니다.
아무리 API와 블루투스채팅 프로그램을 봐도 이해가 되지 않고 있습니다.
제가 원하는건
지금 현재 블루투스 어뎁터를 받아와 맥주소를 받는 것까지는 이해가 되고 코딩을 해보았습니다.
그런데 받아온 맥 주소와 연결을 하려고 하니 어떻게 코딩 해야 하는지 도저히 이해가 안됩니다.
블루투스채팅 프로그램을봐도 이해가 되지 않아 이렇게 글을 올립니다.
UUID값은 어떤걸 설정해야 할지도 모르겠고요
제가 하는 것은 연결까지만 되면 됩니다.
정말 염치 없지만,
블루투스 어뎁터를 받아여 연결되는 부분까지의 소스코드가 정리 되어있으신분이나
비슷한 어플을 개발한 경험이 있으신분 답변좀 남겨주세요
너무 급합니다.
어뎁터를 받아 연결이 되는 부분까지 소스코드 있으신분.. 바로 작성이 가능 하신분 ㅠ제발 예제 좀 보여주세요
지금까지 제가 작성한 코드 입니다.
import java.io.IOException;
import java.util.Set;
import android.app.Activity;
import android.bluetooth.BluetoothAdapter;
import android.bluetooth.BluetoothDevice;
import android.bluetooth.BluetoothServerSocket;
import android.bluetooth.BluetoothSocket;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.os.Bundle;
import android.util.Log;
import android.widget.Toast;
public class BluetoothActivity extends Activity {
/** Called when the activity is first created. */
private static final String TAG = "BluetoothListActivity";
private static final boolean D = true;
private BluetoothAdapter mBTAdapter = null;
private BluetoothDevice mBTDevice = null;
// Message types sent from the BluetoothConnection Handler
public static final int MESSAGE_STATE_CHANGE = 1;
public static final int MESSAGE_READ = 2;
public static final int MESSAGE_WRITE = 3;
public static final int MESSAGE_DEVICE_NAME = 4;
public static final int MESSAGE_TOAST = 5;
// Key names received from the BluetoothConnection Handler
public static final String DEVICE_NAME = "device_name";
public static final String TOAST = "toast";
// Intent request codes
private static final int REQUEST_CONNECT_DEVICE = 1;
private static final int REQUEST_ENABLE_BT = 2;
public static String EXTRA_DEVICE_ADDRESS = "device_address";
private String MAC_ADDRESS;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//모든 블루투스 액티비티를 위해 BluetoothAdapter가 요구된다. getDefaultAdapter() 호출
// 디바이스의 블루투스 아답터를 나타내는 BluetoothAdapter 인스턴스를 리턴!!
mBTAdapter = BluetoothAdapter.getDefaultAdapter();
IntentFilter filter = new IntentFilter(BluetoothDevice.ACTION_FOUND);
this.registerReceiver(mReceiver, filter);// Register for broadcasts when discovery has finished
filter = new IntentFilter(BluetoothAdapter.ACTION_DISCOVERY_FINISHED);
this.registerReceiver(mReceiver, filter);
try{
if(!mBTAdapter.isEnabled()){
Log.i("Erorr", "mBTAdpter를 받지 못함!!");
Toast.makeText(this, "Bluetooth is not available", Toast.LENGTH_LONG).show();
Intent enableBtIntent = new Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE);
startActivityForResult(enableBtIntent, REQUEST_ENABLE_BT);
}
else
{
Toast.makeText(this, "Adpter : "+mBTAdapter.toString(), Toast.LENGTH_SHORT).show();
//서비스 시작을 알려야 함!!
}
}catch(Exception ex)
{
Log.i("Tag", ex.toString());
Toast.makeText(this, "Bluetooth is not available"+ex.toString(), Toast.LENGTH_LONG).show();
}
try{
Set<BluetoothDevice> pairedDevices = mBTAdapter.getBondedDevices();
if(pairedDevices.size() != 0){
for(BluetoothDevice device : pairedDevices){
Toast.makeText(this, device.getName() + "\n" + device.getAddress(), Toast.LENGTH_LONG).show();
//mArrayAdapter.add(device.getName() + "\n" + device.getAddress());
if(device.getName().equals("iPhone")){
MAC_ADDRESS = device.getAddress();
String addr = MAC_ADDRESS.substring(MAC_ADDRESS.length() - 17);
Toast.makeText(this, "addr : "+addr.toString(), Toast.LENGTH_LONG).show();
Intent intent = new Intent();
intent.putExtra(EXTRA_DEVICE_ADDRESS, addr);
setResult(Activity.RESULT_OK, intent);
}
}
}
}catch(Exception ex){
Toast.makeText(this, "pairedDevice "+ex.toString(), Toast.LENGTH_LONG).show();
}
setContentView(R.layout.main);
}
private final BroadcastReceiver mReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
// TODO Auto-generated method stub
String action = intent.getAction();
if(BluetoothDevice.ACTION_FOUND.equals(action)){
BluetoothDevice device = intent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE);
}
else if (BluetoothAdapter.ACTION_DISCOVERY_FINISHED.equals(action)) {
setProgressBarIndeterminateVisibility(false);
}
}
};
연결부분하는것좀 알려주세요
부탁드리겠습니다.