2013-03-01 29 views
6

Khi tạo nhóm qua Wi-Fi Direct, tôi biết rằng tôi có thể tạo một nhóm liên tục.Tôi có thể thay đổi chủ sở hữu nhóm trong một nhóm liên tục trong Wi-Fi Direct không?

Câu hỏi của tôi là: tôi có thể tạo một nhóm liên tục, nhưng mỗi lần thay đổi chủ sở hữu nhóm (nghĩa là mỗi chủ sở hữu nhóm sẽ là một trong các thiết bị trong nhóm).

Ngoài ra, khi tạo nhóm liên tục, chỉ cần chấp nhận kết nối lần đầu tiên, phải không?

Trả lời

0

Hành vi kiên trì chưa được hỗ trợ trong khung công tác trực tiếp android wifi.

+1

Hiện tại. Có thể câu trả lời này đã lỗi thời. –

+0

Hơn *** mỉa mai *** nó được sử dụng để không tồn tại, nhưng bây giờ mà nó là cố định, tôi không thể loại bỏ nó bởi vì nó là REALLY dai dẳng. – CrandellWS

3

Câu trả lời cho câu hỏi đầu tiên của bạn là KHÔNG. "Chủ sở hữu nhóm P2P của một nhóm P2P liên tục được xác định khi Nhóm P2P được hình thành và là cùng một thiết bị P2P trong các phiên nhóm P2P tiếp theo". Dòng này từ đặc tả p2p nói rằng bạn không thể 'thay đổi chủ sở hữu nhóm.

Có, bắt buộc phải chấp nhận kết nối ngay trong lần đầu tiên.Một nhóm liên tục cho phép kết nối lại mà không cần sự can thiệp của người dùng.

+0

Điểm thực sự trả lời (các) câu hỏi được hỏi mặc dù điều gì đã giúp tôi -> http://stackoverflow.com/a/26242221/1815624 – CrandellWS

14

Bây giờ bạn có thể tạo một nhóm liên tục mới qua WifiP2pManager.createGroup(..). Nó sẽ tạo ra một nhóm mới và làm cho chủ sở hữu nhóm thiết bị gọi (A) và có thể làm những gì bạn mô tả. Vấn đề duy nhất là khi bạn tạo một nhóm và kết nối với một thiết bị khác, thiết bị kia (B) sẽ nhớ nhóm cụ thể đó. Nếu bạn cố gắng tạo một nhóm mới trong A (nói, mở ứng dụng lần thứ hai) và thử kết nối từ B, nó sẽ tự động gia nhập nhóm cũ và không xuất hiện như thể nó được kết nối trong nhóm mới trong A.

EDIT: Có một cách để xóa sạch tất cả các nhóm liên tục. Đó là một chức năng ẩn được gọi là deletePersistentGroups. Điều này sẽ quét sạch tất cả mọi người mặc dù, nhưng nó có vẻ là cách đáng tin cậy duy nhất để giải quyết vấn đề của bạn. Gọi điện thoại này sau khi bạn gọi WifiP2pManager.initialize(..), để bạn có thể sử dụng kênh.

private void deletePersistentGroups(){ 
    try { 
     Method[] methods = WifiP2pManager.class.getMethods(); 
     for (int i = 0; i < methods.length; i++) { 
      if (methods[i].getName().equals("deletePersistentGroup")) { 
       // Delete any persistent group 
       for (int netid = 0; netid < 32; netid++) { 
        methods[i].invoke(wifiP2pManager, mChannel, netid, null); 
       } 
      } 
     } 
    } catch(Exception e) { 
     e.printStackTrace(); 
    } 
} 

Tôi không chắc chắn lý do tại sao netid lên tới 31, tôi cho rằng đó là số lượng tối đa các kết nối được ghi nhớ cho phép. Mã được lấy từ here.

+0

Cảm ơn bạn, điều này đã làm việc cho tôi: D –

+2

Tôi biết cảm ơn của bạn không được khuyến khích nhưng người đàn ông phải nói "THANK YOU" – CrandellWS

+0

https://android.googlesource.com/platform/frameworks/base/+/refs/heads/master/wifi/java/android/net/wifi/p2p/WifiP2pManager.java# 1338 – CrandellWS

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