2013-02-11 28 views
12

Tôi đang cố gắng kết nối hai thiết bị Android chưa được ghép nối qua Bluetooth cho mục đích kết nối mạng P2P. Không cần bảo vệ MitM. Android có createInsecureRfcommSocketToServiceRecordlistenUsingInsecureRfcommWithServiceRecord cho điều này (vì API cấp 10), hoạt động hoàn hảo trên các thiết bị hiện đại. Tuy nhiên, trên Galaxy Ace (Android 2.3.3 = API cấp 10, kết nối với Galaxy Nexus), nó tạo ra một hộp thoại ghép nối. Điều này xảy ra cả trên các kết nối vào và ra. (Cập nhật: Cập nhật Galaxy Ace lên Android 2.3.6 dường như khắc phục sự cố. Có phiên bản Android cụ thể nào không bao giờ thực hiện điều này không?)Khi nào android hiển thị hộp thoại ghép nối khi sử dụng ổ cắm Bluetooth RFCOMM không an toàn?

Sau khi ghép nối được chấp nhận, kết nối hoạt động. Vì lý do này, tôi nghĩ rằng điều này không liên quan đến Issue 40101: createInsecureRfcommSocketToServiceRecord causes pairing dialog on Android 4.2 chỉ nên xảy ra nếu bản ghi dịch vụ không tồn tại.

Tôi cho rằng hộp thoại này không thể tránh được trên các thiết bị xuất hiện (nếu có thể, giải thích cách thực hiện điều này là câu trả lời hợp lệ). Vì lý do này, Tôi muốn biết khi nào một hộp thoại được đưa lên. Tôi không tìm thấy bất cứ điều gì trong nguồn Java Android (nó đi bản địa khá nhanh chóng). Tôi nghi ngờ nó có bất cứ điều gì để làm với phiên bản Bluetooth, kể từ khi Ace có Bluetooth 2.1 được cho là hỗ trợ các kết nối "chỉ hoạt động" cần thiết.

Nếu có bất kỳ thứ gì cho phép tôi phát hiện xem thiết bị có hỗ trợ kết nối mà không cần bật hộp thoại hay không hoặc nó đã được cố định rõ ràng với một phiên bản Android nhất định, điều đó sẽ giúp tôi rất nhiều.

Ngoài ra, tôi đang tìm cách dễ dàng exclude such devices.

+0

Đối với kết nối không an toàn tức là, nếu bạn sử dụng createInsecureRfcommSocketToServiceRecord và listenUsingInsecureRfcommWithServiceRecord, bạn đã sử dụng UUID nào? – krisDrOid

+0

@ krisDrOid: Một tùy chỉnh được tạo ngẫu nhiên. –

Trả lời

3

Hiện tại tôi có cùng sự cố với bạn. Tôi đã phát triển một ứng dụng để trao đổi thông điệp giữa các thiết bị đầu cuối BT và tôi đang thử nghiệm trên các điện thoại khác nhau (tôi có S3, S2, S plus, Nexus One và Galaxy Y) để phân tích hành vi. Điện thoại có thông số kỹ thuật này:

  • Samsung S2: ROM Tuỳ chỉnh (Android v4.2.1) - Bắt nguồn từ
  • Samsung S3: Cổ ROM (Android v4.1.2)
  • Samsung S +: Tuỳ chỉnh ROM (Android v4. 1.2) - Bắt nguồn từ
  • Samsung GY: Tuỳ chỉnh ROM (v2.3.6 Android) - Bắt nguồn từ
  • Nexus One: Cổ ROM (Android v2.3.6) - Bắt nguồn từ

Theo tôi có thể cho bạn biết từ tôi kinh nghiệm, S2 và S3 sau một thời gian bắt đầu hiển thị hộp thoại ghép nối ngay cả khi chúng đã được ghép nối và trao đổi dữ liệu. Điều này xảy ra tất cả thời gian tôi bao gồm một trong hai điện thoại này trong testbed của tôi, những người khác đang làm việc tốt và không bao giờ yêu cầu ghép nối (expecially Nexus One có một hành vi hoàn hảo).

Tôi đã thực hiện các kiểm tra chạy dài (từ 4 đến 6 giờ) và tôi vẫn không thể tìm ra lý do tại sao điện thoại này yêu cầu ghép nối đôi khi sau 3 giờ .. đôi khi sau 10 phút.

Điều duy nhất tôi muốn chỉ cho bạn là ngay cả khi bạn đang sử dụng kết nối không an toàn, bạn vẫn có thể được yêu cầu tương tác với con người để ghép nối. Hãy xem điều đó (lấy từ http://en.wikipedia.org/wiki/Bluetooth):

Chỉ hoạt động: Như ngụ ý, tên này chỉ hoạt động.Không yêu cầu người dùng tương tác; tuy nhiên, một thiết bị có thể nhắc người dùng đến xác nhận quá trình ghép nối. Phương pháp này thường được sử dụng bởi tai nghe với khả năng IO rất hạn chế và an toàn hơn cơ chế PIN cố định thường được sử dụng cho ghép nối kế thừa theo thiết lập này của các thiết bị giới hạn. Phương pháp này không cung cấp cho người đàn ông ở giữa (MITM) bảo vệ.

+0

Cảm ơn. Một số phiên bản Android 4.x nhất định được cho là có lỗi sẽ kích hoạt hộp thoại như vậy nếu thiết bị kia không có dịch vụ/nghe thích hợp - xem [báo cáo này] (http://code.google.com/p/android/issues/detail? id = 40101). Bạn có thể muốn kiểm tra xem người nghe của bạn có đang hoạt động không. –

+0

Cảm ơn thông tin nhưng có, dịch vụ của tôi luôn chạy :). Có lẽ tôi đã tìm thấy vấn đề nằm ở đâu, bây giờ tôi đang nghiên cứu nó. Tôi sẽ cập nhật bài đăng của mình nếu giải pháp của tôi hoạt động. –

+0

Mọi cập nhật về điều này? Tôi cho rằng đó chỉ là một lỗi trong Lollipop, nhưng nếu bạn đã tìm thấy cách giải quyết hoặc nguồn gốc của vấn đề trong ứng dụng của mình, tôi rất muốn nghe về nó. –