【问题标题】:how to simulate a real mobile internet connection within android emulator如何在 android 模拟器中模拟真实的移动互联网连接
【发布时间】:2013-02-06 21:44:13
【问题描述】:

我想知道是否有某种方法可以让模拟器在访问互联网时表现得像真实设备一样。在任何需要互联网访问的操作之前,我通常会像这样检查连接

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

但是在真实设备上并且当移动接收很差时,互联网连接实际上不可用,因为 internet() 返回了 true。这不仅仅是延迟问题或低速问题,它根本没有发送请求(或者永远不会得到响应,我不知道)。目前我在打电话时遇到这个问题

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

并且不知道如何在真实设备上调试它。我很确定这是移动互联网连接的问题,因为当通过 wi-fi 连接同一设备时我没有问题。 我认为设置 httpclient 套接字和连接超时可以解决问题,但我仍然遇到崩溃。

【问题讨论】:

  • 请添加崩溃日志
  • @Mr.Me 如何从设备获取日志?
  • 连接PC可以看到log throw logcat。否则,您将不得不编写自己的日志方法,可能会将任何异常输出写入您的 sdcard 或其他东西

标签: android connection emulation


【解决方案1】:

您可以在启动模拟器时使用一些参数进行模拟。 它们都记录在这里: Android Emulator.

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

-netdelay <delay

-netspeed <speed>

它们设置您的模拟器使用的连接的延迟和速度。

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

【讨论】:

  • 这些是可以从 eclipse adt ddms 角度设置的相同参数,不是吗?我认为连接确实断开了,但在系统栏中我仍然可以看到移动网络,3g 或 h 或 h+ 好像已连接
  • 是的,你可以从 Eclipse 中设置。关于断开连接,我已经尝试过这些连接,因为我的国家的连接不是很好。有时 Gtalk 甚至不会注意到没有可用的网络了,所以 AFAIK 最多只能超时并优雅地处理错误。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-03-20
  • 2011-06-21
  • 1970-01-01
  • 1970-01-01
  • 2011-11-07
  • 2018-12-31
  • 2012-07-06
相关资源
最近更新 更多