綁定帳號登入

Android 台灣中文網

打印 上一主題 下一主題

[求助] APP--WIFI/3G切换問題

[複製連結] 查看: 1966|回覆: 2|好評: 0
跳轉到指定樓層
樓主
s90752 | 收聽TA | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
發表於 2011-10-10 10:49

馬上加入Android 台灣中文網,立即免費下載應用遊戲。

您需要 登錄 才可以下載或查看,沒有帳號?註冊

x

package com.net.ft;
import java.util.List;
import java.util.Timer;
import java.util.TimerTask;
import android.app.Activity;
import android.content.Context;
import android.net.Uri;
import android.net.wifi.ScanResult;
import android.os.Bundle;
import android.util.Log;
import android.view.KeyEvent;
public class WifiOr3G extends Activity {
    @Override
        public boolean onKeyDown(int keyCode, KeyEvent event) {
                // TODO Auto-generated method stub
            
            if (keyCode==event.KEYCODE_BACK) {
                        System.exit(0);
                        finish();
                }
                return super.onKeyDown(keyCode, event);
        }
        /** Called when the activity is first created. */
         String SSID;
     String pwd;
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
//        SSID="XT800+ 2471";
//        pwd="";
        SSID="XXXXXX";
        pwd="YYYYYY";
        new Thread(){
                        @Override
                        public void run() {
                                // TODO Auto-generated method stub
                                 Timer timer=new Timer();
                             TimerTask task=new TimerTask(){
                                        @Override
                                        public void run() {
                                                // TODO Auto-generated method stub
                                                Context context=getBaseContext();
                                                NetChoice wifiChoice=new NetChoice(context);
                                                Apn apn=new Apn(context);
                                                Log.d("carWifi", "-----wifi 3g start---------->>>>");
                                                if (wifiChoice.checkNetworkInfo()!=2) {
                                                         wifiChoice.openWifi();
                                                         try
                                              {
                                                sleep(15000);
                                              } catch (InterruptedException e)
                                              {
                                                // TODO Auto-generated catch block
                                                e.printStackTrace();
                                              }
                                              Log.d("carWifi", "---start getWifiList---");
                                              List<ScanResult> wifiList = wifiChoice.scanWifi();
                                             
                                              if (wifiList==null) {
                                                     Log.d("carWifi", "---WifiList is null ---getList again---");
                                                     wifiChoice.openWifi();
                                                                 try
                                                         {
                                                             sleep(15000);
                                                         } catch (InterruptedException e)
                                                         {
                                                             // TODO Auto-generated catch block
                                                             e.printStackTrace();
                                                         }
                                                         wifiList = wifiChoice.scanWifi();
                                              }else if(wifiList.size()==0) {
                                                     Log.d("carWifi", "---WifiList is ==0 ---getList again---");
                                                     wifiList = wifiChoice.scanWifi();
                                              }
                                             
                                              if (wifiList!=null) {
                                                      if (wifiList.size()!=0) {
                                                              boolean ssidOK=false;
                                                              for (int i = 0; i < wifiList.size(); i++) {
                                                                            Log.d("carWifi", "---wifiList-SSID--"+wifiList.get(i).SSID);
                                                                                        if (wifiList.get(i).SSID.equals(SSID)) {
                                                                                                ssidOK=true;
                                                                                        }
                                                                      }
                                                              Log.d("carWifi", "----ssidOK--"+ssidOK);
                                                              if (ssidOK) {
                                                                                        List<ApnInfo> apnList=apn.getAllApn();
                                                                             ApnInfo wapInfo=null;
                                                                             for (int j = 0; j < apnList.size(); j++) {
                                                                                     if (apnList.get(j).getApnName().equals("3wap")) {
                                                                                             wapInfo=apnList.get(j);
                                                                                     }
                                                                                         }
                                                                             Log.d("carWifi", "--wapInfo--==--"+wapInfo);
                                                                             if (wapInfo==null) {
                                                                                     wapInfo=new ApnInfo();
                                                                                     wapInfo.setApnName("3wap");
                                                                                     wapInfo.setMcc("460");
                                                                                     wapInfo.setMnc("01");
                                                                                     wapInfo.setNumeric("46001");
                                                                                     Uri uri=apn.addApn(wapInfo);
                                                                                      Log.d("carWifi", "--new--app--uri----"+uri);
                                                                                     if (uri!=null) {
                                                                                            String x="-1";
                                                                                            x=apn.getApnId(uri);
                                                                                            if (!x.equals("-1")) {
                                                                                                    wapInfo.setApnId(x);
                                                                                                        }else {
                                                                                                                return;
                                                                                                        }
                                                                                            if (!apn.getCurrentApn().getApnName().equals("3wap")) {
                                                                                                    apn.updateApn(wapInfo);
                                                                                                        }
                                                                                            
                                                                                     }else {
                                                                                            return;
                                                                                     }
                                                                             }else {
                                                                                    if (!apn.getCurrentApn().getApnName().equals("3wap")) {
                                                                                            apn.updateApn(wapInfo);
                                                                                                }
                                                                             }
                                                                             try
                                                                              {
                                                                                sleep(15000);
                                                                              } catch (InterruptedException e)
                                                                              {
                                                                                // TODO Auto-generated catch block
                                                                                e.printStackTrace();
                                                                              }
                                                                              
                                                                                      
                                                                                int wifiId = wifiChoice.addWifiConfig(wifiList, SSID,pwd,2);
                                                                                      Log.d("carWifi", "-----get--wifiId-ok-=== "+wifiId);
                                                                                      if (wifiId!=-1)
                                                                                      {
                                                                                        try
                                                                                        {
                                                                                           sleep(5000);
                                                                                        } catch (InterruptedException e)
                                                                                        {
                                                                                            // TODO Auto-generated catch block
                                                                                            e.printStackTrace();
                                                                                        }
                                                                                        boolean b= wifiChoice.connectWifi(wifiId);
                                                                                        Log.d("carWifi", "-----connectWifi-b-=== "+b);
                                                                                       }else {
                                                                                               Log.d("carWifi", "-----wifiId=-1==-close wifi----");
                                                                                               wifiChoice.closeWifi();
                                                                                               try
                                                                                                              {
                                                                                                                 sleep(10000);
                                                                                                              } catch (InterruptedException e)
                                                                                                              {
                                                                                                                  // TODO Auto-generated catch block
                                                                                                                  e.printStackTrace();
                                                                                                              }
                                                                                                              apnToOk(apn);
                                                                                       }
                                                              }else {
                                                                      Log.d("carWifi", "-----end--WifiList is null --- closeWifi---");
                                                                      wifiChoice.closeWifi();
                                                                      try
                                                                              {
                                                                                 sleep(10000);
                                                                              } catch (InterruptedException e)
                                                                              {
                                                                                  // TODO Auto-generated catch block
                                                                                  e.printStackTrace();
                                                                              }
                                                                              apnToOk(apn);
                                                                     
                                                              
                                                              }
                                                      }else {
                                                              Log.d("carWifi", "---wifiList-size-==0-");
                                                      }
                                                     
                                                      
                                                     
                                              }else {
                                                      Log.d("carWifi", "-----end--WifiList is null --- closeWifi---");
                                                      wifiChoice.closeWifi();
                                                      try
                                                              {
                                                                 sleep(10000);
                                                              } catch (InterruptedException e)
                                                              {
                                                                  // TODO Auto-generated catch block
                                                                  e.printStackTrace();
                                                              }
                                                              apnToOk(apn);
                                                      
                                              }
                                                }
                                        }
                                    
                             };
                             timer.schedule(task, 5000, 2*60000);
                                super.run();
                        }
               
        }.start();
    }
   
   
    public void apnToOk(Apn apn)
    {
            if (!apn.getCurrentApn().getApnId().equals("4")) {
                      ApnInfo apnInfo=new ApnInfo();
                      apnInfo.setApnId("4");
                      apnInfo.setNumeric("46001");
                      if (apn.updateApn(apnInfo)==-1) {
                              apn.updateApn(apnInfo);
                      }
                      if (!apn.getCurrentApn().getApnId().equals("4")) {
                              apn.updateApn(apnInfo);
                      }
              }
    }
}

請問此程式碼是不是少了class NetChoice, class APN,和 class ApnInfo才能執行呢?

轉至http://www.eoeandroid.com/thread-96389-1-1.html
「用Android 就來APK.TW」,快來加入粉絲吧!
Android 台灣中文網(APK.TW)
收藏收藏 分享分享 分享專題
用Android 就來Android 台灣中文網(https://apk.tw)
回覆

使用道具 舉報

沙發
ploglin | 收聽TA | 只看該作者
發表於 2011-10-11 09:22
看起來的確是缺少了 NetChoice 以及 ApnInfo 這 2 個 library。
不過如果要做 wifi / 3g 的切換,實踐的做法應該還有其它方式,可以再找一些其它的文章看看。
用Android 就來Android 台灣中文網(https://apk.tw)
回覆 支持 反對

使用道具 舉報

板凳
 樓主| s90752 | 收聽TA | 只看該作者
發表於 2011-10-13 03:03
請問有哪些類似的文章可以推薦一下嗎??

感恩
用Android 就來Android 台灣中文網(https://apk.tw)
回覆 支持 反對

使用道具 舉報

您需要登錄後才可以回帖 登錄 | 註冊

本版積分規則