2012-01-03 2 views
19

전화 이 개인 Wi-Fi 네트워크의 스테이션이 될 전화에서 실행되는 응용 프로그램을 작성 중입니다. 전화는 액세스 포인트가 아닌 스테이션이되며 개인 Wi-Fi 네트워크는 인터넷에 연결되지 않습니다. 내 응용 프로그램은 인터넷의 서버와 로컬 Wi-Fi 네트워크의 장치 인 과 통신해야하므로 두 네트워크 모두에서 동시에 연결해야합니다. 나는 어떻게하는지 알아 내려고 노력해 왔습니다.Android에서 동시에 Wi-Fi 및 셀룰러 네트워크 인터페이스를 모두 열 수 있습니까?

나는 제목의 구글 안드로이드 개발자 그룹에서 토론에 설명 된 기술을하려고했는데 그것은 잘 작동하지 않습니다 " 안드로이드 2.X는? 동시에 3G와 와이파이 데이터 네트워크에 연결할 수 없습니다"하지만 . 내가 찾은 것은 셀룰러 네트워크를 ConnectivityManager.setNetworkPreference(ConnectivityManager.TYPE_MOBILE)으로 호출하여 활성화하면 은 Wi-Fi 네트워크에서 열려있는 모든 소켓이 닫힙니다. 나는 을 시도하지 않았지만 Wi-Fi로 다시 전환 할 때 셀룰러 네트워크에서 같은 일이 일어날 것이라고 생각합니다.

또 다른 문제점은 이러한 호출은 전역 수준에서 작동하므로 응용 프로그램뿐만 아니라 전체 전화에 대해 네트워크 설정이 변경됩니다. 네트워크를 과 같이 전역으로 전환하면 이 휴대 전화에서 실행되는 다른 앱을 방해합니다. 응용 프로그램이 종료 된 후에도 전화는 설정 한 마지막 네트워크 구성으로 계속 실행됩니다.

나는 같은 시간에, 그리고 다른 응용 프로그램이 휴대 전화에서 실행을 방해하지 않고 휴대 데이터 및 Wi-Fi 네트워크 모두에 열려있는 연결을 할 수있는 방법을 찾고 있어요.

1. 아무도 어떻게 이것을 해야할지 모른다. ?
2. 가능한 경우 누구에게 알리십니까?

도움 주셔서 감사합니다.

+1

비슷한 질문이 있으십니까? http://stackoverflow.com/questions/5497553/wifi-and-3g-same-time –

답변

0

API 호출을 사용하여 만들 수없고 더 낮은 수준에서 손을 더럽 혔 으면 일부 Linux 지식이 도움이 될 수 있습니다. 기본적으로해야 할 일은 두 인터페이스를 모두 가져와 3g 인터페이스에 기본 경로를 설정하는 것입니다. 이러한 종류의 작업을 수행하려면 루트 권한이있는 시스템 명령을 사용해야합니다. 닫기 소켓의 이유는 아마도 API 호출로 인해 다시 작동하는 인터페이스 일 것입니다.

0

루트 액세스가 없으면 앱에 큰 영향을 미치지 않습니다.

안드로이드 API로 할 수있는 일은 기기를 전환하고 기기를 3G로 전환하도록 WiFi를 끄기 만하면됩니다 (APN이 올바르다면 등) .

다른 어떤 것도 작동하지 않을 수도 있습니다. 예 : 기본 연결 유형을 설정해도 장치가 해당 유형으로 전환되는 것은 아닙니다.

일반적으로 Wi-Fi가 사용 가능 해지면 장치는 잠시 (3 ~ 5 초) 3G 및 WiFi를 모두 켜고 3G를 끕니다. 사용자 또는 앱에서 Wi-Fi를 끄고 기기가 인터넷에 연결을 시도하면 잠시 후 3G가 켜집니다.

Android 2.3부터는 더 이상 3G를 사용 중지/사용 중지 할 수 없습니다. 하나는 3G를 활성화/비활성화하기 위해 APN 설정을 망칠/복원하는 데 사용되었지만 4.0부터는 프로그래밍 방식으로 APN 설정을 변경할 수 없습니다.

+0

아직 수동으로 3G를 사용 중지 할 수 있습니다. 다이얼러를 열고'* # * # 4636 # * # *'을 입력하십시오. 그런 다음 "전화 정보"및 "라디오 끄기"를 누릅니다. –

0

한 번에 하나의 서비스 만 가능하다고 생각합니다. Wi-Fi를 사용하거나 Cellular 3G Data를 사용할 수 있습니다. 동시에 둘 다 동시에 작동 할 수 없습니다.

1

이 스레드 Android: Force data to be sent over radio vs WiFi에는이 문제에 대한 두 가지 접근 방법이 나와 있습니다.

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

두 번째 경우 :

ConnectivityManager cm = (ConnectivityManager)getSystemService(Context.CONNECTIVITY_SERVICE); 
cm.setNetworkPreference(ConnectivityManager.TYPE_MOBILE); 
  • 하는 것은 우선 순위가 높은 모바일 데이터 연결을 사용 :

    1. 는 앱이 특정 연결을 사용할 때마다 네트워크 환경 설정 접근 방식은 안드로이드 2.2에서 작동한다고 구체적으로 밝혀졌습니다.이 버전이 실제 버전에서도 작동하는지는 알 수 없습니다. 그러나 내가 아는 한, enableHIPRI은 다소 숨겨진 네트워크 설정이므로 가능한 경우 첫 번째 방법을 선호합니다.

  • 0

    3G 및 Wi-Fi 데이터 네트워크는 동시에 연결할 수 없지만 운영자 지원 및 Android 프레임 워크가 운영자에게 변경되는 경우 3G 및 Wi-Fi를 동시에 연결할 수 있습니다. 이제 일부 운영자는 이미이 기능을 갖추고 있지만 일부 기능은 사용할 수 없습니다.

    0

    현재 Android 앱에서는 한 번에 두 네트워크를 모두 사용할 수 없지만 PC에서는이 작업을 수행 할 수 있습니다.
    WIFI 라우터와 LAN 또는 USB 인터넷 스틱 중 하나를 연결하십시오.
    그래서 APp를 만들고 PC에서 사용하십시오. PC에서 안드로이드를 실행하는 법을 구글보다 더 잘 모른다면.

    0

    Wi-Fi 및 3G/4G를 모두 사용할 수 있다면 내가 잘못 본 것이 아니라면 Wi-Fi가 우선합니다.

    Wi-Fi를 사용할 수없는 경우에만 3G/4G로 전환됩니다. 물론이 둘은 동시에 스위치가 켜져 있습니다.

    개인 Wi-Fi를 사용하는 대신 VPN을 사용하는 인터넷을 고려해 볼 수 있으므로 기기가 3G/4G에서 VPN에 연결되고 개인 보안 와이파이,.

    VPN 클라이언트는 Android에 설치되어 있으며 타사 클라이언트도 사용할 수 있습니다.

    희망 하시겠습니까?

    0

    ad-hoc wifi 네트워크를 살펴볼 수 있습니다. 드로 이드가 이미 인터넷을 위해 wifi를 사용 중이더라도 (Wi-Fi를 통해) 장치에 연결합니다 (그러나 ip 스택을 사용하지는 않습니다).

    인터넷 (IP) 연결을 사용하는 Wi-Fi (IEEE 802.11x) 연결을 혼동하지 마십시오. IP는 Wi-Fi, 모바일, 이더넷, DSL, dailup 또는 homing pigeon에서 실행할 수 있지만 한 번에 하나의 네트워크에서만 실행할 수 있습니다.

    ad-hoc wifi 네트워크에 대한 자세한 내용은 다음 링크를 참조하십시오.

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

    많은 사업자들이 IP 연결 (공유) 멀티 캐스팅 것을 금지 있습니다. 좋은.