【问题标题】:Setting airplane mode does not completely work设置飞行模式不完全奏效
【发布时间】:2011-08-17 00:24:58
【问题描述】:

我编写了下面的代码,将手机设置为飞行模式以节省电量。这些设备被用作 WiFi 热点,用于中继来自印度尼西亚一个村庄的一些传感器的数据。传感器同时发送它们的数据,所以我只需要在午夜离开飞行模式五分钟,然后重新进入飞行模式。

问题是蜂窝无线电没有关闭并且飞机图标没有出现。尽管电话报告其状态为飞机模式开启,但仍然可以调用它。市场上的其他小部件似乎也好不到哪里去。我试过“飞行模式 Wi-Fi 工具”。它也无法让飞机图标出现,也无法禁用手机收音机。在使用设备设置进入飞行模式时观看 LogCat 时,我可以看到发生的事情比从程序中尝试时要多得多。

如果我在 Droid 上加载我的程序,此代码将按预期工作。 AIRPLANE_MODE_RADIOS 设置为 cell, bluetooth, wifi

违规设备是三星 Galaxy 5, I5500 测试:

-Froyo 2.2 构建 FROYO.UYJP2 -Froyo 2.2.1 构建 FROYO.UYJPE

一个有趣的旁注:如果我以编程方式设置飞行模式,然后重启设备,它会进入完全飞行模式,拒绝来电等。

其他人是否有使用此设备或其他设备的类似故事?有没有办法专门关闭手机?

public static void setAirplaneMode(Context context, boolean status) {

    boolean isAM = Settings.System.getInt(context.getContentResolver(),
            Settings.System.AIRPLANE_MODE_ON, 0) != 0;

    String radios = Settings.System.getString(context.getContentResolver(),
            Settings.System.AIRPLANE_MODE_RADIOS);

    //This line is reporting all radios affected but annunciator does not seem to think so. Does not show airplane
    Wake.logger("Airplane mode is: " + isAM + " changing to " + status + " For radios: " + radios, false);

    // It appears Airplane mode should only be toggled. Don't reset to
    // current state.
    if (isAM && !status) {
        Settings.System.putInt(context.getContentResolver(),
                Settings.System.AIRPLANE_MODE_ON, 0);
        Intent intent = new Intent(Intent.ACTION_AIRPLANE_MODE_CHANGED);
        intent.putExtra("state", 0);
        context.sendBroadcast(intent);
        return;
    }
    if (!isAM && status) {
        Settings.System.putInt(context.getContentResolver(),
                Settings.System.AIRPLANE_MODE_ON, 1);
        Intent intent = new Intent(Intent.ACTION_AIRPLANE_MODE_CHANGED);
        intent.putExtra("state", 1);
        context.sendBroadcast(intent);
        return;
    }
}

【问题讨论】:

  • 所以你说如果你设置飞行模式然后重启手机就可以了?这听起来特定于设备,解决方法就是这样做!你可以有一个广播接收器,它会在手机重新开机后启动你的应用程序。
  • 正确。但是,该设备将无人看管。它将在设定的时间从没有电源的位置中继数据。我们将拥有大型电池或廉价的太阳能。是否可以将设备配置为定期上电?我在想有可能每天通过 USB 供电 10 分钟来启动和停止手机。虽然不起作用。无论如何,我发现了我的问题。见答案。

标签: android


【解决方案1】:

经典位扭曲错误。广播意图中的额外数据参数需要是真/假,而不是 1/0。啊!!!

    intent.putExtra("state", true);  //Not 1!!

一部手机能用,另一部不能。现在两者都可以。

【讨论】:

  • 啊,谢谢!每个其他问题都有这个错误,它需要是一个布尔值,而不是一个 int !
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-03-08
  • 2020-05-19
  • 2012-10-06
  • 2016-08-29
相关资源
最近更新 更多