アプリに 2 つのボタンがあります。
ボタン 1: Wi-Fi に接続する ボタン 2: クライアント ソケットを作成する
個々の 2 つのボタンを使用すると、この機能が機能します。
void WifiConnect() {
String networkSSID = "HI-LINK_DA79";
String networkPass = "12345678";
WifiConfiguration conf = new WifiConfiguration();
conf.SSID = "\"" + networkSSID + "\""; //ssid must be in quotes
conf.preSharedKey = "\""+ networkPass +"\"";
WifiManager wifiManager = (WifiManager)getSystemService(WIFI_SERVICE);
int r1 =-1;
r1= wifiManager.addNetwork(conf);
Log.d("Client", "add Network returned " + r1 );
boolean b = wifiManager.enableNetwork(r1, true);
Log.d("Client", "enableNetwork returned " + b );
boolean d= wifiManager.reconnect();
Log.d("Client", "wifiManager.reconnect() returned " + d )
}
`Button.OnClickListener buttonWifiConnectOnClickListener = new Button.OnClickListener() {
public void onClick(View v) {
WifiConnect();
}
};
Button.OnClickListener buttonConnectOnClickListener = new Button.OnClickListener() {
public void onClick(View v) {
if (socket == null) {
Log.i("Client", "socket():Creating --");
new Thread(new ClientThread()).start();
//connect.setText("Disconnect");
}
else
{
try {
socket.close();
socket=null;
Log.i("Client", "socket():closed --");
// connect.setText("Connect");
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
};
`
しかし、1 つのボタン クリックでそれらを組み合わせると、これは機能しません
public void onClick(View v) {
WifiConnect(); //WiFi connect
if (socket == null) {
Log.i("Client", "socket():Creating --");
new Thread(new ClientThread()).start();
//connect.setText("Disconnect");
}
else
{
try {
socket.close();
socket=null;
Log.i("Client", "socket():closed --");
// connect.setText("Connect");
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
};
`
ソケットを作成するためのスレッドがここで呼び出されていないようです。理由はわかりません。