안드로이드 시스템 설정에서 Wifi 필터링

3283 단어 Android
프로젝트의 필요에 따라 플러그 박스에 서로 다른 버전을 설정했고 낮은 버전의 와이파이 모듈은 5.8G의 와이파이를 지원하지 않기 때문에 시스템 설정의 와이파이 목록의 5.8G 디스플레이 정보를 차단해야 한다.
신호 매개변수(WorldWide Available)
2.4G 신호: Frequency range: 2.400G - 2.500GHz(2400MHz - 2500MHz), Bandwidth: 100MHz, Center Frequency: 2.450GHz 5.8G 신호: Frequency range: 5.725G - 5.800GHz, 즉 (5725MHz - 5800MHz), Bandwidth: 100MHz, Center Frequency: 5.800GHz
어떻게 수정합니까
시스템 설정 코드를 추적하여 표시된 Wifi 핫이슈를 필터하려면 Wifi Settings에서 확인할 수 있습니다.java에서 처리하기;하지만 곧 AccessPoint에frequency에 대한 정보가 없다는 것을 알게 될 것입니다.따라서 먼저 AccessPoint를 사용해야 합니다.java에서 해당 속성을 정의합니다.
경로는\packages\apps\Settings\src\com\android\settings\wifi\AccessPoint에 있습니다.java:
    //add by dq begin
    private int frequency;

    public int getFrequency() {
        return frequency;
    }
    public void setFrequency(int frequency) {
        this.frequency = frequency;
    }
    //add by dq end
    ......

    private void loadResult(ScanResult result) {
        ssid = result.SSID;
        bssid = result.BSSID;
        security = getSecurity(result);
        wpsAvailable = security != SECURITY_EAP && result.capabilities.contains("WPS");
        if (security == SECURITY_PSK)
            pskType = getPskType(result);
        networkId = -1;
        mRssi = result.level;
        mScanResult = result;
        setFrequency(result.frequency);//add by dq
    }

이어서 WifiSettings가 필요합니다.java에서 처리하기:
private void updateAccessPoints() {
  ....
  switch (wifiState) {
    case WifiManager.WIFI_STATE_ENABLED:
        for (AccessPoint accessPoint : accessPoints) {
           //add by dq begain to omit 5.8G wifi.    
           Log.d(TAG,"wifi ap   frequency:"
                       +accessPoint.getFrequency());
         int frequency = accessPoint.getFrequency();
         if(frequency >= 5725 && frequency <= 5800) {
               continue;
         }
         //add by dq end.
         getPreferenceScreen().addPreference(accessPoint);                
       }
    break;
}

원본 코드를 컴파일한 후 5.8G의 신호가 목록에서 차단되었다.2015.3.31

좋은 웹페이지 즐겨찾기