Android에서 페어링 할 기기가 제대로 작동하지 않는 문제가 있습니다. 나는 설정으로 이동하고 수동 페어링하면 내가 그들에게 다음과 같은 코드를 사용하여 연결을 얻을 수 있습니다 :Android 블루투스가 페어링되지 않습니다.
서버를
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.connect);
Intent discoverableIntent = new Intent(BluetoothAdapter.ACTION_REQUEST_DISCOVERABLE);
startActivityForResult(discoverableIntent, REQUEST_ENABLE_BT);
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data)
{
if(requestCode == REQUEST_ENABLE_BT)
{
if(resultCode == RESULT_CANCELED)
{
new AlertDialog.Builder(this)
.setTitle(R.string.error)
.setMessage(R.string.bluetooth_unavailable)
.setPositiveButton(android.R.string.ok, AndroidUtils.DismissListener)
.create()
.show();
}
else
{
mServerSocket = mAdapter.listenUsingRfcommWithServiceRecord("Moo Productions Bluetooth Server", mUUID);
mState = State.ACCEPTING;
BluetoothSocket socket = mServerSocket.accept();
mServerSocket.close();
connected(socket);
}
}
}
클라이언트
Set<BluetoothDevice> pairedDevices = mAdapter.getBondedDevices();
BluetoothSocket socket = null;
// Search the list of paired devices for the right one
for(BluetoothDevice device : pairedDevices)
{
try
{
mState = State.SEARCHING;
socket = device.createRfcommSocketToServiceRecord(mUUID);
mState = State.CONNECTING;
socket.connect();
connected(socket);
break;
}
catch (IOException e)
{
socket = null;
continue;
}
}
그러나 장치가 아직 페어링되지 않은 경우 연결하지 않고 foreach에서 벗어납니다. 올바른 소켓에 연결하십시오. 이 경우 나는 발견하기 시작한다.
// If that didn't work, discover
if(socket == null)
{
mState = State.SEARCHING;
mReceiver = new SocketReceiver();
mContext.registerReceiver(mReceiver, new IntentFilter(BluetoothDevice.ACTION_FOUND));
mAdapter.startDiscovery();
}
// ... Later ...
private class SocketReceiver extends BroadcastReceiver
{
@Override
public void onReceive(Context context, Intent intent)
{
if(BluetoothDevice.ACTION_FOUND.equals(intent.getAction()))
{
try
{
// Get the device and try to open a socket
BluetoothDevice device = intent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE);
BluetoothSocket socket = device.createRfcommSocketToServiceRecord(mUUID);
mState = State.CONNECTING;
socket.connect();
// This is our boy, so stop looking
mAdapter.cancelDiscovery();
mContext.unregisterReceiver(mReceiver);
connected(socket);
}
catch (IOException ioe)
{
ioe.printStackTrace();
}
}
}
}
하지만 다른 장치를 찾지는 못합니다. 나는 페어링 대화 상자를 얻지 못했고 단계별로 올바른 장치를 발견했지만이 예외와 연결하지 못했습니다. java.io.IOException: Service discovery failed
. 내가 누락 된 것에 대한 어떤 아이디어라도 있니?
안녕하세요 CaseyB howz u? 나는 또한 여기에 같은 문제에 갇혀있다 .. 다른 하나의 장치에서 연결되면 그 연결을 다시하고 내가 처음 두 번째 장치 로그에 메시지를 보여주는 고양이 "서비스 발견 실패"그래서 연결되지 않은 이유 다른 장치 내가 그것을 다른 tryed했다 다른 UUId의 pls 날 도와. – shyam
나는 이것을 결코 이해할 수 없었다. 나는 다른 프로젝트로 옮겼다. 죄송합니다. – CaseyB