2012-01-03 4 views
19

Tôi đang làm việc trên một ứng dụng sẽ chạy trên điện thoại có điện thoại sẽ là một đài trên mạng Wi-Fi riêng. Điện thoại sẽ là một trạm , không phải là điểm truy cập và mạng Wi-Fi riêng không tuyến đường đến Internet. Ứng dụng của tôi cần liên lạc với các máy chủ trên Internet cũng như các thiết bị trên mạng Wi-Fi cục bộ, để nó cần có kết nối trên cả hai mạng cùng một lúc. Tôi đã cố gắng tìm ra cách để làm điều này.Tôi có thể mở cả hai giao diện mạng di động và Wi-Fi cùng một lúc trên Android không?

Tôi đã cố gắng kỹ thuật được mô tả trong các cuộc thảo luận về nhóm các nhà phát triển Google Android mang tên " Android 2.x thể kết nối với 3G và mạng dữ liệu Wifi cùng một lúc?", Nhưng nó không hoạt động tốt. Điều tôi thấy là khi tôi kích hoạt mạng di động bằng cách gọi ConnectivityManager.setNetworkPreference(ConnectivityManager.TYPE_MOBILE), bất kỳ ổ cắm nào tôi đã mở trên mạng Wi-Fi đều bị đóng. Tôi đã không đã thử nó, nhưng tôi nghi ngờ điều tương tự sẽ xảy ra với ổ cắm trên mạng di động khi tôi chuyển về Wi-Fi.

Một vấn đề khác là, các cuộc gọi này hoạt động ở mức toàn cầu, thay đổi cài đặt mạng cho toàn bộ điện thoại, không chỉ ứng dụng. Việc chuyển đổi mạng thiết lập trên toàn cầu như thế này sẽ ảnh hưởng đến bất kỳ ứng dụng nào khác mà xảy ra khi đang chạy trên điện thoại. Ngay cả sau khi ứng dụng của tôi thoát, điện thoại vẫn tiếp tục chạy với cấu hình mạng cuối cùng được thiết lập.

Tôi đang tìm cách để các kết nối mở trên cả mạng di động dữ liệu và mạng Wi-Fi cùng một lúc và không can thiệp vào các ứng dụng khác đang chạy trên điện thoại.

1.Bất cứ ai biết cách làm điều này?
2.Bất cứ ai biết nếu điều này là có thể?

Cảm ơn sự giúp đỡ của bạn.

+1

Câu hỏi tương tự? http://stackoverflow.com/questions/5497553/wifi-and-3g-same-time –

Trả lời

0

Nếu bạn không thể thực hiện bằng cách sử dụng các cuộc gọi API và nếu bạn sẵn sàng để bàn tay bị bẩn với mức thấp hơn, một số kiến ​​thức về Linux có thể hữu ích. Về cơ bản những gì bạn phải làm là đưa lên cả hai giao diện và có lộ trình mặc định được đặt trên giao diện 3g. Bạn sẽ phải sử dụng lệnh hệ thống với đặc quyền gốc cho loại tác vụ này. Lý do cho các ổ cắm gần có lẽ là giao diện đi xuống và lên một lần nữa vì cuộc gọi API.

0

Nếu không có quyền truy cập root, ứng dụng không thể ảnh hưởng nhiều.

Với Android API, điều bạn có thể làm nhiều nhất là bật Wi-Fi với hy vọng thiết bị sẽ chuyển sang WiFi và tắt WiFi để chuyển thiết bị sang 3G (nếu có, APN chính xác, v.v.) .

Mọi thứ khác không được bảo đảm để hoạt động. Ví dụ. thiết lập loại kết nối ưu tiên không đảm bảo rằng thiết bị sẽ chuyển sang loại đó.

Hành vi thông thường là ngay sau khi WiFi khả dụng, thiết bị sẽ có cả 3G và WiFi trong một thời gian ngắn (3-5 giây) và sau đó tắt 3G. Ngay khi WiFi bị tắt bởi người dùng hoặc ứng dụng của bạn và thiết bị tìm cách kết nối với Internet, thiết bị sẽ bật 3G sau một thời gian ngắn.

Bắt đầu với Android 2.3, bạn không thể tắt sự kiện/bật 3G nữa. Một được sử dụng để làm hỏng/khôi phục cài đặt APN để bật/tắt 3G, nhưng bắt đầu với 4.0, bạn không thể thay đổi cài đặt APN theo cách lập trình.

+0

Không hoàn toàn - vẫn có thể vô hiệu hóa thủ công 3G. Chỉ cần mở trình quay số và nhập '* # * # 4636 # * # *'. Sau đó, nhấn "Thông tin điện thoại" và "Tắt radio". –

0

Tôi nghĩ chỉ có thể thực hiện một dịch vụ tại một thời điểm. Hoặc bạn có thể sử dụng WiFi hoặc bạn có thể sử dụng dữ liệu Cellular 3G. Cả hai không thể làm việc đồng thời tại một thời điểm.

1

Chủ đề này Android: Force data to be sent over radio vs WiFi đề cập đến hai cách tiếp cận có thể có cho vấn đề.

  1. Đặt tùy chọn mạng bất cứ khi nào bạn muốn ứng dụng của bạn sử dụng một kết nối cụ thể:

    ConnectivityManager cm = (ConnectivityManager)getSystemService(Context.CONNECTIVITY_SERVICE); 
    cm.setNetworkPreference(ConnectivityManager.TYPE_MOBILE); 
    
  2. Enable ưu tiên cao điện thoại di động kết nối dữ liệu:

    connectivityManager.startUsingNetworkFeature(ConnectivityManager.TYPE_MOBILE, "enableHIPRI"); 
    

Đối với phần thứ hai tiếp cận nó là đặc biệt nói nó hoạt động với Android 2.2, không có ý tưởng nếu điều này làm việc trong các phiên bản thực tế là tốt. Tuy nhiên, theo như tôi phát hiện ra, enableHIPRI ít nhiều là cài đặt mạng ẩn, vì vậy tôi muốn sử dụng phương pháp đầu tiên nếu có thể.

0

Mạng dữ liệu 3G và Wifi không thể kết nối cùng một lúc, nhưng 3G và Wifi có thể được kết nối đồng thời nếu nhà điều hành hỗ trợ và khung android cũng thay đổi cho nhà điều hành. Bây giờ một số nhà khai thác đã có tính năng này nhưng một số có thể không.

0

Không thể sử dụng cả hai mạng tại một thời điểm trong Ứng dụng Android hiện tại nhưng bạn có thể thực hiện việc này trong PC.
Kết nối một bộ định tuyến từ bộ định tuyến WIFI của bạn và một từ LAN hoặc USB Internet Stick.
Vì vậy, hãy tạo APp và sử dụng trên PC. Nếu bạn không biết làm thế nào để chạy Android trên PC hơn google nó.

0

Nếu tôi không nhầm, nếu cả Wi-Fi và 3G/4G đều có sẵn, Wi-Fi sẽ được ưu tiên.

Chỉ khi Wi-Fi không khả dụng, Wi-Fi sẽ chuyển sang 3G/4G. Tất nhiên điều này cung cấp cả hai được bật cùng một lúc. Thay vì sử dụng wifi riêng, hạn chế sự lựa chọn của bạn, bạn có thể xem VPN có kết nối internet, vì vậy thiết bị sẽ kết nối với VPN từ 3G/4G và sau đó truy cập dữ liệu nếu bảo mật là mối quan tâm của bạn khi sử dụng riêng tư wifi,.

Và các máy khách VPN có sẵn trong Android và cũng có sẵn các ứng dụng khách của bên thứ ba.

Hy vọng điều đó sẽ hữu ích!

0

Bạn có thể muốn xem xét các mạng wifi đặc biệt. Nó kết nối với các thiết bị qua wifi ngay cả khi droid đã sử dụng wifi cho internet (không sử dụng ngăn xếp ip, mặc dù).

Không gây nhầm lẫn các kết nối wifi (IEEE 802.11x) với kết nối internet (IP). IP có thể chạy trên mạng wifi, di động, ethernet, DSL, dailup hoặc chim bồ câu, nhưng chỉ có một mạng tại một thời điểm.

Để biết thêm thông tin về mạng wifi đặc biệt, hãy xem liên kết sau.

https://code.google.com/p/android-wifi-tether/

Xin lưu ý rằng nhiều hãng vận tải cấm multicasting (chia sẻ) kết nối IP của họ. Tốt đẹp.