MainActivity.java
Go to the documentation of this file.
00001 package com.ros.turtlebot.apps.rocon;
00002 
00003 import java.net.Inet4Address;
00004 import java.net.InetAddress;
00005 import java.net.NetworkInterface;
00006 import java.net.SocketException;
00007 import java.net.URI;
00008 import java.net.URISyntaxException;
00009 import java.util.Collection;
00010 import java.util.Collections;
00011 import java.util.List;
00012 
00013 import org.apache.http.conn.util.InetAddressUtils;
00014 import org.ros.address.InetAddressFactory;
00015 import org.ros.android.RosActivity;
00016 import org.ros.exception.RosRuntimeException;
00017 import org.ros.node.NodeMainExecutor;
00018 
00019 import com.google.common.collect.Lists;
00020 
00021 import android.annotation.SuppressLint;
00022 import android.app.Activity;
00023 import android.content.BroadcastReceiver;
00024 import android.content.Context;
00025 import android.content.Intent;
00026 import android.content.IntentFilter;
00027 import android.content.SharedPreferences;
00028 import android.net.wifi.ScanResult;
00029 import android.net.wifi.WifiConfiguration;
00030 import android.net.wifi.WifiInfo;
00031 import android.net.wifi.WifiManager;
00032 import android.os.AsyncTask;
00033 import android.os.Build;
00034 import android.os.Bundle;
00035 import android.os.Vibrator;
00036 import android.util.Log;
00037 import android.view.View;
00038 import android.widget.EditText;
00039 import android.widget.TextView;
00040 import android.widget.Toast;
00041 
00042 public class MainActivity extends Activity
00043 {
00044         private static final String PREFS_KEY_TABLE = "TABLE_KEY";
00045         private static final String PREFS_KEY_SSID = "SSID_KEY";
00046         private static final String PREFS_KEY_PW = "PW_KEY";
00047         private static final String PREFS_KEY_URI = "URI_KEY";
00048         private static final String PREFS_KEY_WEB = "WEB_KEY";
00049         
00050         WifiManager wifiManager = null ;
00051         IntentFilter wifiFilter = null ;
00052         List<ScanResult> scanResults ;
00053         List<WifiConfiguration> configs ;
00054         
00055         Intent rocon_intent = null ;
00056         
00057         String nfc_table = "";
00058         String nfc_ssid = "";
00059         String nfc_password = "";
00060         String nfc_masteruri = "";
00061         String nfc_weblink = "";
00062         
00063         EditText editTable = null ;
00064         EditText editSsid = null ;
00065         EditText editPassword = null ;
00066         EditText editMasterUri = null ;
00067         EditText editWebLink = null ;
00068         
00069 
00071     @Override
00072     public void onCreate(Bundle savedInstanceState)
00073     {
00074         super.onCreate(savedInstanceState);
00075         setContentView(R.layout.main);
00076         
00077         wifiManager = (WifiManager) getSystemService(Context.WIFI_SERVICE);
00078             wifiFilter = new IntentFilter();
00079             wifiFilter.addAction(WifiManager.SCAN_RESULTS_AVAILABLE_ACTION);
00080         
00081       //** Step 2. Enable wifi if it's disabled
00082         if(!wifiManager.isWifiEnabled())
00083                 wifiManager.setWifiEnabled(true);
00084         
00085         
00086         //** Step 3. Get wifi configured networks and start scan access points.
00087         configs = wifiManager.getConfiguredNetworks() ;
00088         wifiManager.startScan();
00089         
00090         //** Step 4. Try to connect to wireless network (ssid/password)
00091         // This step starts after completion of the wifi scan
00092         
00093         editTable = (EditText) findViewById(R.id.table);
00094             editSsid = (EditText) findViewById(R.id.ssid);
00095             editPassword = (EditText) findViewById(R.id.pasword);
00096             editMasterUri = (EditText) findViewById(R.id.master_uri);
00097             editWebLink = (EditText) findViewById(R.id.web_link);
00098             
00099             nfc_table = getPreferences(MODE_PRIVATE).getString(PREFS_KEY_TABLE, editTable.getText().toString());
00100             nfc_ssid = getPreferences(MODE_PRIVATE).getString(PREFS_KEY_SSID, editSsid.getText().toString());
00101             nfc_password = getPreferences(MODE_PRIVATE).getString(PREFS_KEY_PW, editPassword.getText().toString());
00102             nfc_masteruri = getPreferences(MODE_PRIVATE).getString(PREFS_KEY_URI, editMasterUri.getText().toString());
00103             nfc_weblink = getPreferences(MODE_PRIVATE).getString(PREFS_KEY_WEB, editWebLink.getText().toString());
00104             
00105             editTable.setText(nfc_table);
00106             editSsid.setText(nfc_ssid);
00107             editPassword.setText(nfc_password);
00108             editMasterUri.setText(nfc_masteruri);
00109             editWebLink.setText(nfc_weblink);
00110     }
00111     
00112     
00113     @Override
00114         protected void onResume() {
00115                 // TODO Auto-generated method stub
00116                 super.onResume();
00117                 if(wifiFilter != null)
00118                 registerReceiver(wifiEventReceiver, wifiFilter);
00119         }
00120         
00121         @Override
00122         protected void onPause() {
00123                 // TODO Auto-generated method stub
00124                 super.onPause();
00125                 if(wifiFilter != null)
00126                 unregisterReceiver(wifiEventReceiver);
00127         }
00128         
00129         
00130         private BroadcastReceiver wifiEventReceiver = new BroadcastReceiver() {
00131                 
00132                 @Override
00133                 public void onReceive(Context context, Intent intent) {
00134                         // TODO Auto-generated method stub
00135                         Log.d("MainActivity", "onReceive");
00136                         if(intent.getAction().equals(WifiManager.SCAN_RESULTS_AVAILABLE_ACTION)) {
00137                                 //** Step 4.
00138                                 scanResults = wifiManager.getScanResults();
00139                                 /*if(connecting == false) {
00140                                         connecting = true ;
00141                                         wifiConnect() ;
00142                                 }*/
00143                         }
00144                 }
00145         };
00146         
00147         public void onClick(View v) {
00148                 switch(v.getId()) {
00149                         case R.id.start_rocon :
00150                         {
00151                                 nfc_table = editTable.getText().toString() ;
00152                             nfc_weblink = editWebLink.getText().toString() ;
00153                             nfc_ssid = editSsid.getText().toString() ;
00154                             nfc_password = editPassword.getText().toString() ;
00155                             nfc_masteruri = editMasterUri.getText().toString() ;
00156                         
00157                         rocon_intent = new Intent(MainActivity.this, RoconMainActivity.class);
00158                                 rocon_intent.putExtra("table", nfc_table);
00159                                 rocon_intent.putExtra("weblink", nfc_weblink);
00160                                 rocon_intent.putExtra("masteruri", nfc_masteruri);
00161                                 
00162                                 SharedPreferences.Editor editor = getPreferences(MODE_PRIVATE).edit();
00163                             editor.putString(PREFS_KEY_TABLE, nfc_table);
00164                             editor.putString(PREFS_KEY_SSID, nfc_ssid);
00165                             editor.putString(PREFS_KEY_PW, nfc_password);
00166                             editor.putString(PREFS_KEY_URI, nfc_masteruri);
00167                             editor.putString(PREFS_KEY_WEB, nfc_weblink);
00168                             editor.commit();
00169                                 
00170                                 wifiConnect() ;
00171                                 startActivity(rocon_intent);
00172         
00173                                 finish();
00174                         }
00175                         break ;
00176                 }
00177         }
00178         
00179         private void wifiConnect()
00180         {
00181                 Log.d("MainActivity", "wifiConnect");
00182                 
00183                 scanResults = wifiManager.getScanResults();
00184                 if(scanResults == null || scanResults.size() == 0) {
00185                         Toast.makeText(this, "No access point is found.", Toast.LENGTH_SHORT).show();
00186                         return ;
00187                 }
00188                 
00189                 ScanResult foundResult = null ;
00190                 for(ScanResult result : scanResults){
00191                         if(nfc_ssid.equals(result.SSID)) {
00192                                 foundResult = result ;
00193                                 break ;
00194                         }
00195                 }
00196                 
00197                 if( foundResult == null ) {
00198                         Toast.makeText(this, "Sorry!" + nfc_ssid + " is not found!", Toast.LENGTH_SHORT).show();
00199                         return ;
00200                 }
00201                 
00202                 configs = wifiManager.getConfiguredNetworks() ;
00203                                 
00204                 for(WifiConfiguration config : configs){
00205                         if(("\"" + nfc_ssid + "\"").equals(config.SSID)) {
00206                                 wifiManager.enableNetwork(config.networkId, true);
00207                                 return ;
00208                         }
00209                 }
00210                 
00211                 WifiConfiguration config = new WifiConfiguration() ;
00212                 config.SSID = "\"" + foundResult.SSID + "\"" ;
00213                 config.priority = 40 ;          
00214                 
00215                 if(foundResult.capabilities.contains("WPA")) {
00216                         config.status = WifiConfiguration.Status.ENABLED ;
00217                         config.preSharedKey = "\"" + nfc_password + "\"" ;
00218                 } else if(foundResult.capabilities.contains("WEB")){
00219                         config.wepKeys[0] = "\"" + nfc_password + "\"" ;
00220                         config.wepTxKeyIndex = 0 ;
00221                 } else {
00222                         config.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.NONE);
00223                 }
00224                 
00225                 int newId = wifiManager.addNetwork(config);
00226                 if(newId < 0) {
00227                         Toast.makeText(this, "Sorry! Fail to add network " + nfc_ssid, Toast.LENGTH_SHORT).show();
00228                         return ;
00229                 } 
00230                 else {
00231                         if(wifiManager.enableNetwork(newId, true)) {
00232                                 Toast.makeText(this, "Trying to connect to " + config.SSID, Toast.LENGTH_SHORT).show();
00233                                 wifiManager.saveConfiguration();
00234                         }
00235                         else {
00236                                 Toast.makeText(this, "Sorry! Fail to connect to " + nfc_ssid, Toast.LENGTH_SHORT).show();
00237                         }
00238                 }
00239         }
00240 }


android_remocons
Author(s): Daniel Stonier , Kazuto Murase
autogenerated on Wed Aug 26 2015 10:40:28