Androidプログラミングの実現設定、wifiホットスポットの共有を他人に接続する方法

6449 ワード

この例は、他の人の接続のためのWifiホットスポット共有を開くためのAndroidプログラミングの設定を述べている。皆さんに参考にしてあげます。具体的には以下の通りです。
早歯を使った友達は二日間の設備間でファイルを転送する時に使うのがwifiホットスポットと知っていて、もう一つの台はこのホットスポットを接続して転送します。速い歯の伝送速度は驚くべきもので、このメカニズムと関係があるでしょう。検索の仕組みは分かりませんが、ホットスポットの名前で判断できると思います。これからwifiホットスポットの自動作成方法を検討しましょう。
Wifiのホットスポットを作るには、まず携帯電話のサポートが必要です。開発を提案しているお兄さんたちは全体的に良い携帯電話です。当社の山寨設備の半分近くはホットスポットを支持していません。ホットスポットを作るのは簡単です。まずWifiのサービスを受けてホットスポットの名前やパスワードを設定して、反射して開けばいいです。
ホットスポットを作るコードの実現を見てみましょう。

package com.tel.lajoin.wifi.hotspot;
import java.lang.reflect.Method;
import android.app.Activity;
import android.content.Context;
import android.net.wifi.WifiConfiguration;
import android.net.wifi.WifiManager;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
public class HotspotActivity extends Activity {
  private WifiManager wifiManager;
  private Button open;
  private boolean flag=false;
  @Override
  protected void onCreate(Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    //  wifi    
    wifiManager = (WifiManager) getSystemService(Context.WIFI_SERVICE);
    open=(Button)findViewById(R.id.open_hotspot);
    //          
    open.setOnClickListener(new View.OnClickListener() {
      @Override
      public void onClick(View v) {
        //          ,        
        flag=!flag;
        setWifiApEnabled(flag);
      }
    });
  }
  // wifi    
  public boolean setWifiApEnabled(boolean enabled) {
    if (enabled) { // disable WiFi in any case
      //wifi         ,             wifi
      wifiManager.setWifiEnabled(false);
    }
    try {
      //      
      WifiConfiguration apConfig = new WifiConfiguration();
      //       (               )
      apConfig.SSID = "YRCCONNECTION";
      //       
      apConfig.preSharedKey="12122112";
        //          
      Method method = wifiManager.getClass().getMethod(
          "setWifiApEnabled", WifiConfiguration.class, Boolean.TYPE);
      //        
      return (Boolean) method.invoke(wifiManager, apConfig, enabled);
    } catch (Exception e) {
      return false;
    }
  }
}

レイアウトは書かないでしょう。ボタンだけで、誰もが知っているものは書いても意味がありません。ファイル転送を実現するには、もちろんホットスポットを接続するクライアントを書く必要があるでしょう。ホットスポットを接続する流れはまずホットスポットを検索してからホットスポットが規則に合っているかどうかを判断してから接続します。

package com.tel.lajoin.wifiscan; 
import java.util.ArrayList; 
import java.util.List; 
import android.app.Activity; 
import android.content.BroadcastReceiver; 
import android.content.Context; 
import android.content.Intent; 
import android.content.IntentFilter; 
import android.net.wifi.ScanResult; 
import android.net.wifi.WifiConfiguration; 
import android.net.wifi.WifiManager; 
import android.os.Bundle; 
public class MainActivity extends Activity { 
 private List<ScanResult> wifiList; 
 private WifiManager wifiManager; 
 private List<String> passableHotsPot; 
 private WifiReceiver wifiReceiver; 
 private boolean isConnected=false; 
 private Button connect; 
 @Override 
 public void onCreate(Bundle savedInstanceState) { 
  super.onCreate(savedInstanceState); 
  init(); 
 } 
 /*       */ 
 public void init() { 
  setContentView(R.layout.main); 
  connect=(Button)findViewById(R.id.connect); 
  wifiManager = (WifiManager) getSystemService(Context.WIFI_SERVICE); 
  wifiReceiver = new WifiReceiver(); 
  //           
  connect.setOnClickListener(new View.OnClickListener() { 
   @Override 
   public void onClick(View v) { 
    wifiManager.startScan(); 
   } 
  });  
 } 
 /*        */ 
 private final class WifiReceiver extends BroadcastReceiver { 
  @Override 
  public void onReceive(Context context, Intent intent) { 
   wifiList = wifiManager.getScanResults(); 
   if (wifiList == null || wifiList.size() == 0 || isConnected) 
    return; 
   onReceiveNewNetworks(wifiList); 
  } 
 } 
 /*      wifi              */ 
 public void onReceiveNewNetworks(List<ScanResult> wifiList){ 
  passableHotsPot=new ArrayList<String>(); 
  for(ScanResult result:wifiList){ 
   System.out.println(result.SSID); 
   if((result.SSID).contains("YRCCONNECTION")) 
    passableHotsPot.add(result.SSID); 
  } 
  synchronized (this) { 
   connectToHotpot(); 
  } 
 } 
 /*     */ 
 public void connectToHotpot(){ 
  if(passableHotsPot==null || passableHotsPot.size()==0) 
   return; 
  WifiConfiguration wifiConfig=this.setWifiParams(passableHotsPot.get(0)); 
  int wcgID = wifiManager.addNetwork(wifiConfig); 
  boolean flag=wifiManager.enableNetwork(wcgID, true); 
  isConnected=flag; 
  System.out.println("connect success? "+flag); 
 } 
 /*           */ 
 public WifiConfiguration setWifiParams(String ssid){ 
  WifiConfiguration apConfig=new WifiConfiguration(); 
  apConfig.SSID="\""+ssid+"\""; 
  apConfig.preSharedKey="\"12122112\""; 
  apConfig.hiddenSSID = true; 
  apConfig.status = WifiConfiguration.Status.ENABLED; 
  apConfig.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.TKIP); 
  apConfig.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.CCMP); 
  apConfig.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.WPA_PSK); 
  apConfig.allowedPairwiseCiphers.set(WifiConfiguration.PairwiseCipher.TKIP); 
  apConfig.allowedPairwiseCiphers.set(WifiConfiguration.PairwiseCipher.CCMP); 
  apConfig.allowedProtocols.set(WifiConfiguration.Protocol.RSN); 
  return apConfig; 
 } 
 @Override 
 protected void onDestroy() { 
  super.onDestroy(); 
  /*       */ 
  unregisterReceiver(wifiReceiver); 
 } 
}

コードは簡単です。そして、コメントがあります。みんなが分かります。このようにしましょう。ファイル転送については、やはりsocketに関する記事を見に行きましょう。
ここで述べたように、皆さんのAndroidプログラムの設計に役に立ちます。