Đây là kịch bản:Làm cách nào để tạo ổ cắm Android RFCOMM mà không có bất kỳ đầu vào nào từ người dùng?
Tôi cần viết một ứng dụng cho Android để tạo ổ cắm RFCOMM cho PC bằng khóa Bluetooth (tôi cũng sẽ viết máy chủ).
Yêu cầu của tôi là người dùng không phải ghép nối thiết bị theo cách thủ công.
Thực ra, với một hack lớn, tôi đang sử dụng createInsecureRfcommSocket.
Một chút kịch bản: Tôi đã ứng dụng Android trao đổi thông tin với hộp Linux có ổ cắm RFCOMM được mở. Tôi có thể tự thiết lập mã PIN trên các thiết bị (cứng mã hóa nó là một lựa chọn)
Tôi đang tìm đường khác nhau:
Viết JNI bao bọc
Như đã được thực hiện bởi Max here Kellermann, tôi có thể viết một lớp JNI để làm cho tất cả các giai đoạn ghép nối. Đây phải là một lựa chọn tốt, nhưng có một vấn đề:
NDK 4b không cung cấp thư viện libbluetooth, do đó, lỗi lbluetooth cũng như NDK v.3.
Options:
- Tìm NDK 1.5 (trong đó bao gồm bluetooth lib). Sau nhiều ngày tìm kiếm trên web tôi đã không thể tìm ra. Bất cứ ai có hoặc biết nơi tôi có thể tìm thấy nó?
- Biên dịch libbluetooth cho Android một mình và sử dụng chúng cho lbluetooth. Không may mắn ở đó, tôi không thể xây dựng chúng. Bất kỳ gợi ý nào?
Sử dụng một cái gì đó tiếp xúc bởi các API
Bất kỳ ai biết làm thế nào tôi có thể sử dụng createRfcommSocketToServiceRecord và có người sử dụng không tự ghép thiết bị? Có thể không? Làm thế nào tôi nên viết máy chủ?
Cái gì tôi không biết
lẽ (chắc chắn!) Có cái gì đó tôi không biết. Có lẽ tôi có thể sử dụng cái gì khác? Không phải RFCOMM? SDP?
Có lẽ tôi có thể ghép nối thủ công với API Android?
Tôi hy vọng có đủ rõ ràng, nếu không chỉ yêu cầu. Và một lần nữa, vì đây không phải là lần đầu tiên, tôi ở trong tầm tay của bạn :)
Cảm ơn tất cả những người hỗ trợ!
Đầu cơ, nhưng tôi sẽ không ngạc nhiên nếu nó được thiết kế cố ý để người dùng tham gia (phê duyệt) là cần thiết để ghép nối. Ít nhất đó sẽ phù hợp với những nơi khác mà thiết kế Android yêu cầu tương tác người dùng vì lý do bảo mật. –
Có, nhưng api "chính thức" không phải là cách duy nhất. Đối với điều đó tôi hỏi về ndk 1.5, xây dựng libbluetooth hoặc các chức năng @hide khác. –
Nếu libbluetooth đã bị xóa, rất có thể phiên bản cũ hơn sẽ không hoạt động trên phiên bản Android mới hơn ngay cả khi bạn tìm thấy nó. Đó là cảnh báo liên tục chống lại việc sử dụng API không công khai - những thay đổi trong tương lai có thể phá vỡ chúng. –