2011-12-02 27 views
20

Trên iPhone nếu tôi tạo dịch vụ tùy chỉnh ví dụ "_test._tcp.local". ở Bonjour tôi có thể tìm kiếm/phát sóng dịch vụ này thông qua WiFi hoặc Bluetooth.Android có hỗ trợ Zeroconf/Bonjour qua Bluetooth không? Làm thế nào về TCP/IP?

Có thể trên Android?

Tôi biết rằng có jmDNS nhưng từ những gì tôi hiểu nó chỉ hoạt động thông qua WiFi/Mạng, không phải Bluetooth.

Cảm ơn

EDIT bởi Seva Alekseyev, người cung cấp tiền thưởng: Tôi không phải sau khi cách giải quyết (như sans Zeroconf Bluetooth hoặc sans Bluetooth Zeroconf). Tôi sau khi có thật.

+0

Tôi rất tò mò muốn biết câu trả lời liên quan đến bluetooth ... được JmDNS alowed để phát hiện dịch vụ bonjour tiếp xúc bằng bluetooth ?? – fvisticot

+0

Hãy bắt đầu từ những điều cơ bản: có cách nào để chạy TCP/IP qua Bluetooth trong Android không? Nếu vậy, người ta có thể có khả năng sic JmDNS trên giao diện cụ thể đó. Có lẽ chỉ là sự tiếp xúc, không phải khám phá, hay ngược lại. –

+0

Liên quan: [TCP/IP qua Bluetooth trong Linux] (http://giovanni.wordpress.com/2007/04/06/how-to-use-tcpip-over-bluetooth/) –

Trả lời

0

Bạn có thể sử dụng BluetoothSocketBluetoothServerSocket để tạo TCP như ổ cắm qua Bluetooth.

Dưới đây là một mẫu của dnssd android: https://github.com/twitwi/AndroidDnssdDemo

Bạn có thể cần phải sửa đổi các thư viện jmdns như vậy mà nó tạo ra socket bluetooth nếu bluetooth là ON, nếu không tạo ra ổ cắm đơn giản. Đóng gói giao tiếp socket trong một lớp khác để tạo socket có điều kiện.

+0

Um, tôi cuối cùng là sau khi phát hiện dịch vụ iOS-to-Android và ngược lại. Tôi không nghĩ rằng những người sẽ tương thích, như việc thực hiện iOS là dựa trên TCP/IP. –

+0

có, Đó là một xác suất cao, nhưng tài liệu nói rằng nó tương tự như ổ cắm TCP .. Vì vậy, hãy thử xem .. – Ronnie

+0

Mẫu không yêu cầu khả năng tương thích Bluetooth và không thực hiện nó. Tôi đã tích hợp JmDNS trong ứng dụng của mình trong một thời gian; qua TCP/IP trên WiFi nó nói chuyện với iOS tốt. Bây giờ, chỉ vì giao diện tương tự, không có nghĩa là các socket RFCOMM có thể nói chuyện với các giao thức TCP/IP. Đó là những phương tiện giao thông khác nhau. Tôi không biết đủ về BT để biết nếu nó có thể reimplement TCP/IP từ đầu trên ngăn xếp của Android. –

0

Có một vài lý do khiến điều này hiện không khả thi. Cái liên quan nhiều nhất đến câu hỏi của bạn là - như bạn có thể đã trải nghiệm - jmDNS yêu cầu một liên kết TCP/IP để xuất bản hoặc duyệt các dịch vụ (nó yêu cầu một địa chỉ IP để liên kết tới). Vì các câu trả lời khác là trạng thái nhận xét &, bạn cần có một liên kết PANU được thiết lập cho điều đó mà Android hiện không cung cấp.

Những lý do khác, nó sẽ không làm việc là:

  • Apple sử dụng một vài cơ chế để đảm bảo các thiết bị iOS sẽ chỉ nói chuyện với các thiết bị iOS khác. Vì vậy, ngay cả khi bạn muốn Android nói Bonjour-over-Bluetooth, nó sẽ chỉ làm việc Android-to-Android.
  • Thiết bị được chứng nhận của Apple trong chương trình MFi có chip mã hóa đặc biệt do Apple cung cấp. Tôi không chắc chắn nếu điều này áp dụng cho các kết nối Bonjour-over-Bluetooth là tốt, nhưng tôi muốn giả sử nó.

Bạn thay vì có thể nhìn vào sử dụng Bluetooth 4 LE - ít nhất có một API Apple cho rằng bắt đầu trong iOS 5 cung cấp một hồ sơ Slave, và mở rộng để hỗ trợ một Tiểu sử chính trong iOS 6.

3

Không trên bluetooth, bởi vì Android hiện không hỗ trợ TCP/IP qua bluetooth và hỗ trợ NSD gốc của Android (network service discovery) hoạt động trên IP.

Tuy nhiên, tính năng này hoạt động qua Wi-Fi. Ngoài ra, Android hỗ trợ phát hiện dịch vụ qua Wi-Fi Direct, mang đến cho bạn phạm vi và hiệu suất pin lớn hơn bluetooth. Để biết hướng dẫn về cách tích hợp khám phá dịch vụ vào ứng dụng hỗ trợ trực tiếp wi-fi, hãy xem Android Training lesson.

phần của câu trả lời này được nhân đôi từ chúng tôi Dear Android video response cho câu hỏi này

Các vấn đề liên quan