在Android 4.0中直接启用Wifi

时间:2012-05-09 14:11:13

标签: android wifi

我已经买了一台新的Android 4.0.3平板电脑 - Micromax Funbook P300来学习开发Android应用程序。

我开始使用Wifi Direct,这样平板电脑就可以用作机器人平台的遥控器。

令我失望的是,库存操作系统不会在设置菜单中提供此功能。

是否有可能检查我们是否可以以编程方式启动wifi直接功能?

如果没有,有人可以直接找到解决这个问题的教程吗?

感谢。

3 个答案:

答案 0 :(得分:0)

Android SDK包含使用DirectWiFi模式的示例应用程序:

WiFiDirectDemo - Wi-Fi Direct Demo

使用的API本身位于android.net.wifi.p2p

答案 1 :(得分:0)

Android 4.0.3应支持WiFi Direct(自Android API 14或Android 4.0以来一直存在)。由于硬件限制,您的平板电脑可能不支持WiFi Direct,但我对此表示怀疑。您可能无法在设置中看到它,因为平板电脑上运行的自定义Android皮肤会阻止您看到它,或者可能在Android 4.1或其他东西之前未实现WiFi Direct设置界面。 / p>

无论如何,您都可以在代码中轻松测试。

首先,在manifest.xml中放入适当的权限

http://developer.android.com/training/connect-devices-wirelessly/wifi-direct.html#permissions

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.android.nsdchat"
    ...

    <uses-permission
        android:required="true"
        android:name="android.permission.ACCESS_WIFI_STATE"/>
    <uses-permission
        android:required="true"
        android:name="android.permission.CHANGE_WIFI_STATE"/>
    <uses-permission
        android:required="true"
        android:name="android.permission.INTERNET"/>
    ...

接下来,尝试初始化Android WiFiP2pManager类以查看它是否受支持。

http://developer.android.com/reference/android/net/wifi/p2p/WifiP2pManager.html

public void onCreate(Bundle savedInstanceState) {
    WifiP2pManager manager = (WifiP2pManager) getSystemService(Context.WIFI_P2P_SERVICE);
    WifiP2pManager.Channel channel = manager.initialize(this, getMainLooper(), null);
}

在我放置null的地方,你可以通过回调来检查失败。如果有效,请按照Wi-Fi Direct guide的其余部分创建您的应用。

答案 2 :(得分:-2)

他不是要求编码程序示例,而是要求以编程方式切换技术(即一行代码)。据我所知,没有办法做到这一点。这一切都必须在您的设备设置中完成。虽然有些设备允许打开Wi-Fi Direct,但其他设备的处理方式与启用常规Wi-Fi相同 - 您试过这个吗?你有没有检查过P300是否支持Wi-Fi Direct?