Có ai đó đã sử dụng Multicast trên Android 2.2, cụ thể là JmDNS để phát hiện dịch vụ Bonjour. Có rất nhiều câu hỏi & câu trả lời từ khung thời gian Android 1.5-> 2.0, bao gồm trên stackOverflow, cho biết mức độ thành công khác nhau và lỗi trong trình theo dõi lỗi cho biết đã được sửa và đóng cho 2.2 (http://code.google.com/p/android/issues/detail?id=2323). Tôi đã thử các mã nguồn "TuneControl", nhưng mà làm việc trên ~ 1,5 và đã không được cập nhật, và không làm việc cho tôi trên 2,2.Đa phương tiện trên Android 2.2
Vì vậy, các câu hỏi ... 1) Có bất kỳ ai xem hoạt động đa hướng trên 2.2, cụ thể là JmDNS và đặc biệt để phát hiện dịch vụ Bonjour không?
2) Điều gì cần thiết trong mã để thực hiện công việc này?
Tôi đang sử dụng các điều khoản thích hợp:
<uses-permission android:name="android.permission.CHANGE_WIFI_MULTICAST_STATE" />
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
tôi có được các khóa multicast:
WifiManager wifi = (WifiManager)getSystemService(Context.WIFI_SERVICE);
if(wifi != null)
{
MulticastLock mcLock = wifi.createMulticastLock("mylock");
mcLock.acquire();
...
Và sau đó cố gắng bắt đầu jmDNS để tìm kiếm các máy chủ:
mdns = JmDNS.create(addr, HOSTNAME);
jmdns.addServiceListener(TOUCH_ABLE_TYPE, listener);
jmdns.addServiceListener(DACP_TYPE, listener);
...
Người nghe không bao giờ thấy bất kỳ dịch vụ nào. Tôi đã xác minh bằng cách sử dụng Wireshark rằng các gói yêu cầu được gửi đi và máy chủ phản hồi, nhưng gói phản hồi không bao giờ được thấy bởi mã trình nghe socket trong thư viện jmDNS.
Vì vậy, tôi có thiếu thứ gì đó không? Đây có phải là lỗi không? Có ai nhận được bất cứ điều gì ngay cả từ xa như thế này để làm việc?
xử lý multicast trên Android thực sự là vấn đề vào thời điểm này (2.2). – jldupont
Tôi nhận được "khóa đa hướng" OK trên thiết bị Samsung Galaxy S của mình nhưng tôi chỉ nhận được các gói tôi đã gửi. Để giải quyết vấn đề này cho ứng dụng của tôi, tôi đang xây dựng một Dịch vụ Web sẽ được sử dụng để "đăng ký" các dịch vụ LAN mà tôi muốn kiểm soát với các thiết bị Android của mình. Bằng cách này, tôi không phụ thuộc vào khả năng phát đa hướng trên phần cứng. – jldupont