SORU
3 AĞUSTOS 2010, Salı


Service discovery Android istisna Bluetooth kullanarak başarısız oldu

Şu anda Bluetooth ile bir cihaz bağlanır ve string komutları yazın ve dize bir yanıt almak için bir Android uygulaması üzerinde çalışıyorum. Şu anda okuma//Wi-Fi üzerinden TCP/IP için çalışma yazma ve şimdi Bluetooth uygulamaya çalışıyorum bağlantı var. Ama bazı engeller içine çalıştırıyorum. Web birşeyler benzer örnekler bulmaya arıyordum ve şansı bulamadım. Android geliştirici kaynak örneği kullanıyorum: Bluetooth Ana referans noktası olarak Sohbet.

Benim şu anki kod Hizmet bir Keşif istisna Başarısız atar.. bağlantı noktasında iş gibi görünüyor. DeviceListActivity sınıfa bağlanmak istediğiniz aygıtı bulma ve seçme yapmak için kullanıyorum. AnActivityResult döndürür ve sonra Bluetooth sınıfım bu işlemek için bekler ve ona bağlanmak yok o zaman. Kodu altındaki Bluetooth App Sohbet etmek için hemen hemen aynıdır.

public void onActivityResult(int requestCode, int resultCode, Intent data) {
    if(!m_BluetoothAdapter.isEnabled())
    {
        m_BluetoothAdapter.enable();
    }
    switch (requestCode) {
        case REQUEST_CONNECT_DEVICE:
            // When DeviceListActivity returns with a device to connect
            if (resultCode == Activity.RESULT_OK) {
                // Get the device MAC address
                String address = data.getExtras()
                                     .getString(DeviceListActivity.EXTRA_DEVICE_ADDRESS);
                // Get the BLuetoothDevice object
                BluetoothDevice device = m_BluetoothAdapter.getRemoteDevice(address);
                // Attempt to connect to the device
                connect(device);
            }
            break;

        case REQUEST_ENABLE_BT:
            // When the request to enable Bluetooth returns
            if (resultCode == Activity.RESULT_OK) {
                // Bluetooth is now enabled, so set up a chat session
            }
            else {
                // User did not enable Bluetooth or an error occured

                Toast.makeText(this, "Bluetooth not enabled", Toast.LENGTH_SHORT).show();
                finish();
            }
    }
}

Bu benim görevim bağlayın

private static final UUID MY_UUID = UUID.fromString("00001101-0000-1000-8000-00805F9B34FB");

private void connect(BluetoothDevice device) {
    m_Device = device;
    BluetoothSocket tmp = null;

    // Get a BluetoothSocket for a connection with the
    // given BluetoothDevice
    try {
        tmp = device.createRfcommSocketToServiceRecord(MY_UUID);
    }
    catch (IOException e) {

    }
    m_Socket = tmp;

    m_BluetoothAdapter.cancelDiscovery();

    try {
        // This is a blocking call and will only return on a
        // successful connection or an exception
        m_Socket.connect();
    }
    catch (IOException e) {
        try {
            m_Socket.close();
        }
        catch (IOException e2) {
        }
        return;
    }
}

Ben yanlış yapıyorum her neyse umarım, basit, ama asla o kadar kolay değil maalesef. Bu benim ilk kez herhangi bir Bluetooth geliştirme yapıyor ve belki de bir şeyleri göz göre göre yanlış yapıyorum... Ama servis bulma başarısız istisna ben neden emin değilim.

Telefonda her zaman aygıtı el ile bulabilir/eşleştirebilirsiniz... bir şifre gerektirir, ama ben yaşıyorum bu sorunu olduğunu sanmıyorum.

CEVAP
3 AĞUSTOS 2010, Salı


Üç gün sonra bazı çok yararlı mesaj için teşekkürler sonunda anladım.

Değiştirmek zorunda kaldım:

tmp = device.createRfcommSocketToServiceRecord(MY_UUID);

ile:

Method m = device.getClass().getMethod("createRfcommSocket", new Class[] {int.class});
         tmp = (BluetoothSocket) m.invoke(device, 1);

ve bu işe yarıyor işte!

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Alexander Johnson

    Alexander Jo

    26 Temmuz 2008
  • Dogbert files

    Dogbert file

    12 Ocak 2012
  • Tahir Jahi

    Tahir Jahi

    6 Mart 2006