如何连接android wifi到adhoc wifi?

问候,

我是新的Android系统。 这是正确的,android 2.2.1 WIFI只检测非ad hoc无线networking? 我想知道是否有一种方法来连接我的机器人从我的笔记本电脑的ad hocnetworking设置。

您的回应将高度赞赏。

谢谢,Cyril H.

虽然Google已经表示,自从Android正式发布以来,这是正确的,但目前这还不是Android本身支持的。

虽然不是本地支持,但迄今为止发布的每个Android设备上的硬件都支持它。 它只是在软件禁用,你需要启用它才能使用这些function。

然而,这样做相当容易,但是您需要成为root用户,不同设备之间的细节可能会略有不同。 有关这方面更多信息的最佳来源是XDA开发人员: http : //forum.xda-developers.com/forumdisplay.php ?f= 564 。 现有的大多数解决scheme都是以replacewpa_supplicant为基础的,如果可能的话,我会build议你的方法。 有关更多详细信息,请参阅http://szym.net/2010/12/adhoc-wifi-in-android/

更新 :现在已经有几年了,每当我需要手机上的ad hocnetworking连接时,我都会使用CyanogenMod 。 它提供了对这些function的编程和脚本访问,以及在WiFi设置菜单中创build临时 (ibss)networking的能力。

如果你特别想使用ad hoc无线networking,那么Andy的答案似乎是你唯一的select。 但是,如果您只是想通过Wi-Fi使用任何必要的方式共享笔记本电脑的互联网连接,那么您至less有两个select:

  1. 使用您的笔记本电脑作为路由器使用虚拟路由器或Connectify创build一个WiFi热点。 一个很好的指示可以在这里find。
  2. 使用Wi-Fi Direct协议可以在任何支持它的设备之间build立直接连接,但是对于Android设备的支持是有限的,而对于Windows来说,这个function似乎只能是Windows 8。

*一些Android 2.3手机具有专有的操作系​​统扩展,使Wi – Fi直接(主要是较新的三星手机),但Android 4应该完全支持这个( 来源 )。

我在这里注意到一些有趣的事情:在我的2.3.4手机中,我无法在设置>无线和networking菜单中看到AP / AdHoc SSID。 在运行4.0.3的Acer A500上,我确实看到它们,前面加上(*)

然而在下面的代码中,我改编自(不记得源代码,对不起!)我确实在我的2.3.4手机的Wifi扫描中看到了Ad Hoc的显示。 我仍然期待实际连接并创build一个socket + input / outputStream。 但是,在这里你去:

public class MainActivity extends Activity { private static final String CHIPKIT_BSSID = "E2:14:9F:18:40:1C"; private static final int CHIPKIT_WIFI_PRIORITY = 1; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); final Button btnDoSomething = (Button) findViewById(R.id.btnDoSomething); final Button btnNewScan = (Button) findViewById(R.id.btnNewScan); final TextView textWifiManager = (TextView) findViewById(R.id.WifiManager); final TextView textWifiInfo = (TextView) findViewById(R.id.WifiInfo); final TextView textIp = (TextView) findViewById(R.id.Ip); final WifiManager myWifiManager = (WifiManager) getSystemService(Context.WIFI_SERVICE); final WifiInfo myWifiInfo = myWifiManager.getConnectionInfo(); WifiConfiguration wifiConfiguration = new WifiConfiguration(); wifiConfiguration.BSSID = CHIPKIT_BSSID; wifiConfiguration.priority = CHIPKIT_WIFI_PRIORITY; wifiConfiguration.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.NONE); wifiConfiguration.allowedKeyManagement.set(KeyMgmt.NONE); wifiConfiguration.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.TKIP); wifiConfiguration.allowedAuthAlgorithms.set(WifiConfiguration.AuthAlgorithm.OPEN); wifiConfiguration.status = WifiConfiguration.Status.ENABLED; myWifiManager.setWifiEnabled(true); int netID = myWifiManager.addNetwork(wifiConfiguration); myWifiManager.enableNetwork(netID, true); textWifiInfo.setText("SSID: " + myWifiInfo.getSSID() + '\n' + myWifiManager.getWifiState() + "\n\n"); btnDoSomething.setOnClickListener(new View.OnClickListener() { public void onClick(View v) { clearTextViews(textWifiManager, textIp); } }); btnNewScan.setOnClickListener(new View.OnClickListener() { public void onClick(View v) { getNewScan(myWifiManager, textWifiManager, textIp); } }); } private void clearTextViews(TextView...tv) { for(int i = 0; i<tv.length; i++){ tv[i].setText(""); } } public void getNewScan(WifiManager wm, TextView...textViews) { wm.startScan(); List<ScanResult> scanResult = wm.getScanResults(); String scan = ""; for (int i = 0; i < scanResult.size(); i++) { scan += (scanResult.get(i).toString() + "\n\n"); } textViews[0].setText(scan); textViews[1].setText(wm.toString()); } @Override public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.main, menu); return true; } 

不要忘记,在Eclipse中,您可以使用Ctrl + Shift + [字母O]填写缺less的导入…

和我的清单:

  <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.digilent.simpleclient" android:versionCode="1" android:versionName="1.0" > <uses-sdk android:minSdkVersion="8" android:targetSdkVersion="15" /> <uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/> <uses-permission android:name="android.permission.CHANGE_WIFI_STATE"/> <application android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:theme="@style/AppTheme" > <activity android:name=".MainActivity" android:label="@string/title_activity_main" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application> 

希望有所帮助!

如果您有一个Microsoft虚拟WiFi微型端口适配器作为可用的networking适配器之一,您可以执行以下操作:

  • 以pipe理员身份运行Windows命令处理器(cmd)
  • netsh wlan set hostednetwork mode=allow ssid=NAME key=PASSWORDnetsh wlan set hostednetwork mode=allow ssid=NAME key=PASSWORD
  • 然后: netsh wlan start hostednetwork
  • 打开“控制面板\networking和Internet \networking连接”
  • 用鼠标右键单击您的活动networking适配器(用于在Internet上连接的那个),然后单击属性
  • 然后打开共享选项卡
  • 选中“允许其他networking用户连接…”并select您的WiFi微型端口适配器
  • 一旦完成,键入: netsh wlan stop hostednetwork

而已!

来源: 如何将android手机连接到没有软件的ad-hocnetworking。

你是对的,但是请注意,你可以用另一种方式来做 – 使用Android Wifinetworking共享,将手机设置为基站,并从笔记本电脑连接到所述基站。