2013-02-06 182 views
1

我想知道是否有某种方法让模拟器在访问互联网时像真实设备一样运行。需要访问Internet的任何操作之前,我通常检查连接这样如何在Android模拟器中模拟真实的移动互联网连接

public boolean internet(){ 
      ConnectivityManager cm = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE); 
      NetworkInfo netInfo = cm.getActiveNetworkInfo(); 
      if (netInfo != null && netInfo.isConnectedOrConnecting()) { 
       return true; 
      } 
      return false; 
    } 

但在真机上,当移动接收效果不佳,互联网连接不实际可用想到互联网()返回真。这不仅仅是延迟问题或低速问题,它根本没有发送请求(或者从来没有得到响应,我不知道)。目前我遇到这个问题时调用

HttpGet request = new HttpGet(new URI(url)); 
HttpResponse response = httpclient.execute(request); 

并不知道如何调试它在真实的设备上。我很确定这是移动互联网连接的错误,因为当通过Wi-Fi连接相同设备时,我没有任何问题。 我认为设置httpclient套接字和连接超时将解决问题,但我仍然崩溃。

+0

请添加崩溃日志 –

+0

@ Mr.Me如何从设备上获取日志? – lelloman

+1

当连接到PC时,您可以看到log扔logcat。否则,你将不得不编写自己的日志方法,也许写任何异常输出到你的SD卡或 –

回答

3

您可以在启动模拟器时使用一些参数来模拟此操作。他们全部记录在这里: Android Emulator

在这种情况下你想要的参数是:

-netdelay <delay

-netspeed <speed>

他们设置你的仿真器使用连接的等待时间和速度。

对于任何其他问题,您可能需要发布您的logcat日志,它可能是连接,并在请求的中间连接下降和设备断开连接。

+0

这些是可以从eclipse adt ddms角度设置的相同参数,不是吗?我认为连接实际上下降,但在系统栏中,我仍然可以看到移动网络,3g或h或h +,就好像它已连接 – lelloman

+0

那样,您可以设置来自eclipse的那些连接。 关于下降的连接,我试验过,因为我国的连接并不好。 有时Gtalk甚至没有注意到再也没有可用的网络了,所以最多你可以AFAIK是一个超时并优雅地处理错误。 – hacksy

相关问题