<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    隨筆-348  評論-598  文章-0  trackbacks-0

    OPHONE聯網詳解

    在移動游戲基地調試了2天,終于明白了OPHONE聯網是咋回事了,不敢獨享,貼出來給后來的朋友們。   


    先從OPHONE的聯網機制開始說起。 


    OPHONE聯網,具體分兩步, 第一步是啟動聯網,就跟普通手機啟動GPRS一樣,只是OPHONE改成了程序可以控制啟動和關閉,GPRS則是系統根據程序需求自動連接的。 


    進入OPHONE系統,設置-》數據連接,  就能看到一個選擇框,“開機時連接”, 如果這個已經鉤上,則表明,第一步系統已經給你做了,只是默認連接時CMNET, 我測試的MOTO MT710是這樣的。  如果這個鉤沒有鉤上,則需要你的聯網應用在程序內啟動數據連接。 具體的代碼如下: 


    啟動數據連接       注意下面的參數  networkmode, 這個就是你在OPHONE數據連接設置里看到的,比如internet, cms,wap,等等,你自己建的也可以,根據名字來就行 

    public boolean ActiveNetWorkByMode(String networkmode) { 

            try 
            { 
                Context context = getApplicationContext(); 

                ConnectivityManager connectivity = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE); 

                connectivity.startUsingNetworkFeature(ConnectivityManager.TYPE_MOBILE, networkmode); 
                
                return isNetworkCMWAPAvailable(); 
                
            } 
            catch(Exception e) 
            { 
                
            } 
            return false; 
              

        } 
        

    //關閉數據連接 
        public boolean DestroyNetWorkByMode(String networkmode) { 

            try 
            { 
                Context context = getApplicationContext(); 

                ConnectivityManager connectivity = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE); 

                connectivity.stopUsingNetworkFeature(ConnectivityManager.TYPE_MOBILE, networkmode); 
                
                return isNetworkCMWAPAvailable(); 
                
            } 
            catch(Exception e) 
            { 
                
            } 
            return false; 
              

        } 



    //判斷數據連接是否激活,如果激活則進一步判斷是不是CMWAP連接,我的聯網只用CMWAP,你可以根據自己的需要具體去改寫。 

    public boolean isNetworkCMWAPAvailable() { 

               Context context = getApplicationContext(); 

               ConnectivityManager connectivity = (ConnectivityManager) context 

               .getSystemService(Context.CONNECTIVITY_SERVICE); 
              
               //System.out.println("NETWORK active connectivity     "); 

               if (connectivity != null) { 

                 NetworkInfo[] info = connectivity.getAllNetworkInfo(); 

                 if (info != null) { 
                     //System.out.println("NETWORK active info is well     "); 
                   for (int i = 0; i < info.length; i++) { 
                     String typeName = info.getTypeName(); 
                     String extraInfo = info.getExtraInfo(); 
                      
                     //System.out.println("NETWORK active info state      "  + info.getState() + "   "  + typeName + "   " + extraInfo); 
                     if (info.getState() == NetworkInfo.State.CONNECTED) { 
                          
                         //System.out.println("NETWORK CONNECTED     " + extraInfo); 
                                String subType = info.getSubtypeName(); 
                                if ( extraInfo!=null && extraInfo.contains("cmwap") ) { 
                                    //System.out.println("NETWORK CONNECTED SHUTDOWN    " + extraInfo); 
                                    //connectivity.stopUsingNetworkFeature(ConnectivityManager.TYPE_MOBILE, "wap"); 
                                      
                                    return true; 
                                } 

                   } 

                 } 

                } 

               } 

              return false; 

            } 



    以上就是第一步,先判斷數據連接是否激活,沒有激活則代碼激活之。另外,激活的過程大概需要3到5秒,所以激活調用后,立即去判斷是否激活,返回的結果肯定是FALSE,如果等個10再去調用判斷,則會顯示成功,所以建議激活不要和聯網放在一起,我一般是啟動游戲,激活,關閉游戲時同時關掉激活。 


    第二步,就是聯網, 


    聯網方式最好不要用傳統的聯網,我一開始就是傳統的,比如。 


    CMNET 

    private int CountMoney(String urlstr) 
      { 
          
          
          String strHead = ""; 
          try{ 
                URL url = new URL(urlstr); 
              URLConnection conn = url.openConnection(); 
              
              String headerstr = conn.getHeaderField("Content-Type"); 
                
              if (headerstr!= null && headerstr.startsWith("text")) { 
                  conn = url.openConnection(); 
              } 
              
              InputStream inputstream = conn.getInputStream(); 
              ByteArrayOutputStream bytearrayoutputstream = new ByteArrayOutputStream(); 
              byte abyte1[] = new byte[1024]; 
              for(int k = 0; -1 != (k = inputstream.read(abyte1));) 
                  bytearrayoutputstream.write(abyte1, 0, k); 
              
              strHead = new String(bytearrayoutputstream.toByteArray(), "UTF-8"); 
              
              System.out.println("cmnet  " + strHead); 
              
              } 
              catch (Exception e)    { 
                 
                  s_netmodewap = !s_netmodewap; 
                  return 2; 
              } 
              
            if(strHead.indexOf("status=1301") > -1 || strHead.indexOf("status=1300") > -1) 
            { 
              return 1; 
            } 
            else 
            { 
              return 0; 
            } 
          
      } 

      CMWAP,代理用得很糙,呵呵。 

      private int CountMoneyCMWAP(String urlstr) 
      { 
          
          
          String strHead = ""; 
          try{ 
              
              
              
              URL url = new URL(urlstr); 
              Proxy proxy=new Proxy(java.net.Proxy.Type.HTTP,new InetSocketAddress("10.0.0.172",80)); 
              HttpURLConnection connection=(HttpURLConnection) 
              url.openConnection(proxy); 
              String headerstr = connection.getHeaderField("Content-Type"); 
              if (headerstr!= null && headerstr.startsWith("text")) { 
                  connection=(HttpURLConnection) 
                  url.openConnection(proxy); 
              } 
              
              InputStream inputstream = connection.getInputStream(); 
              ByteArrayOutputStream bytearrayoutputstream = new ByteArrayOutputStream(); 
              byte abyte1[] = new byte[1024]; 
              for(int k = 0; -1 != (k = inputstream.read(abyte1));) 
                  bytearrayoutputstream.write(abyte1, 0, k); 
                 
              
              strHead = new String(bytearrayoutputstream.toByteArray(), "UTF-8"); 

              System.out.println("cmwap  " + strHead); 
              } 
              catch (Exception e)    { 
                  e.printStackTrace(); 
                  return 2; 
              } 
              
           
              
            if(strHead.indexOf("status=1301") > -1 || strHead.indexOf("status=1300") > -1) 
            { 
              return 1; 
            } 
            else 
            { 
              return 0; 
            } 
          
      } 


    以上都是傳統的聯網思維,所以連起來速度會很慢。后來經過移動OPHONE的人指點,終于弄明白了。如下,速度會快很多。 


    private int CountMoneyCMWAPNEWWAY(String urlstr) 
      { 
          
          
          String strHead = ""; 
          try{ 
              
              
              if(!GameLet._self.isNetworkCMWAPAvailable()) 
              { 
                  GameLet._self.ActiveNetWorkByMode("wap"); 
                  return 2; 
              } 
              
              
              int splashIndex = urlstr.indexOf("/", 7); 

              String hosturl = urlstr.substring(7, splashIndex); 
              String hostfile = urlstr.substring(splashIndex); 
              
              System.out.println("hosturl   " + hosturl); 
              System.out.println("hostfile   " + hostfile); 

              HttpHost proxy = new HttpHost( "10.0.0.172", 80, "http"); 
              HttpHost target = new HttpHost(hosturl, 80, "http");       

              DefaultHttpClient httpclient = new DefaultHttpClient(); 
              httpclient.getParams().setParameter(ConnRoutePNames.DEFAULT_PROXY, proxy); 
                
              HttpGet req = new HttpGet(hostfile); 

              HttpResponse rsp = httpclient.execute(target, req); 
              HttpEntity entity = rsp.getEntity(); 

              InputStream inputstream = entity.getContent(); 
              ByteArrayOutputStream bytearrayoutputstream = new ByteArrayOutputStream(); 
              byte abyte1[] = new byte[1024]; 
              for(int k = 0; -1 != (k = inputstream.read(abyte1));) 
                 bytearrayoutputstream.write(abyte1, 0, k); 
              
              strHead = new String(bytearrayoutputstream.toByteArray(), "UTF-8"); 

              httpclient.getConnectionManager().shutdown(); 
              } 
              catch (Exception e)    { 
                  return 2; 
              } 
              
            if(strHead.indexOf("status=1301") > -1 || strHead.indexOf("status=1300") > -1) 
            { 
              return 1; 
            } 
            else 
            { 
              return 0; 
            } 
          
      } 



    最后,有幾個PERRMISSION別忘了加了。 


    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> 
    <uses-permission android:name="android.permission.CHANGE_NETWORK_STATE" /> 



    就寫到這里,祝大家成功。

    補充一下:如果想準確的接收連接建立的通知事件,還需要監聽一個消息
    android.net.conn.CONNECTIVITY_CHANGE
    然后在Receiver程序中做個判斷
    NetworkInfo ni = intent.getParcelableExtra(ConnectivityManager.EXTRA_NETWORK_INFO);
    if (ni != null && ni.isConnected()&& NetAccess.NETWORK_AP.equals(Utils.getAPType(ni)))  {......}
    這樣就可以了。

    http://www.ophonesdn.com/forum/thread-2831-1-1.html


    ---------------------------------------------------------
    專注移動開發

    Android, Windows Mobile, iPhone, J2ME, BlackBerry, Symbian
    posted on 2010-09-14 14:56 TiGERTiAN 閱讀(426) 評論(0)  編輯  收藏 所屬分類: Android
    主站蜘蛛池模板: 激情吃奶吻胸免费视频xxxx| a级男女仿爱免费视频| 免费成人午夜视频| 久久国产精品国产自线拍免费| 亚洲高清视频在线播放| 在线观看亚洲免费视频| 182tv免费视频在线观看| 伊人久久亚洲综合影院首页| 区三区激情福利综合中文字幕在线一区亚洲视频1 | 亚洲视频在线精品| 99爱视频99爱在线观看免费| 亚洲AV无码一区二区三区性色 | 亚洲精品国产啊女成拍色拍| 国产成人免费片在线视频观看| 日本免费高清视频| 性色av极品无码专区亚洲 | 亚洲人成网站日本片| 久久久久国产成人精品亚洲午夜| 精品免费久久久久久久| 全部一级一级毛片免费看| 亚洲女人初试黑人巨高清| 亚洲亚洲人成综合网络| 成年男女男精品免费视频网站 | 免费高清av一区二区三区| 精品成人免费自拍视频| 婷婷亚洲综合一区二区| 亚洲第一成年网站大全亚洲| 亚洲午夜国产片在线观看| 久久久久久久久免费看无码| 国产麻豆成人传媒免费观看| 苍井空亚洲精品AA片在线播放| 久久亚洲精品国产精品| 国产精品亚洲不卡一区二区三区 | 99在线精品免费视频九九视| 香蕉免费看一区二区三区| 亚洲AV无码专区国产乱码不卡| 亚洲国产成人综合| 亚洲av成人无码久久精品| 国产av无码专区亚洲av果冻传媒| 午夜两性色视频免费网站| 久九九精品免费视频|