if(isConnecting)
{
isConnecting=false;
if(mSocketClient!=null)
{
try{
mSocketClient.close();
mSocketClient = null;
if (mPrintWriterClient!=null){
mPrintWriterClient.close();
mPrintWriterClient = null;
}
mThreadClient.interrupt();
startButton.setText(“开始连接”);
IPText.setEnabled(true);//可以输入ip和端口号
warning_show.setText(“断开连接\n”);
} catch (IOException e) {
e.printStackTrace();
}
}
}else
{
mThreadClient = new Thread(mRunnable);
mThreadClient.start();
}
}
});
//通风开关按钮初始化
final Switch switch_c=findViewById(R.id.switch_c);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
switch_c.setShowText(true);//按钮上默认显示文字
}
switch_c.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@RequiresApi(api = Build.VERSION_CODES.LOLLIPOP)
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
if (isChecked)//当isChecked为true时,按钮就打开,并发送开的指令,当isChecked为false时,按钮就关闭,并发送关的指令
{
switch_c.setSwitchTextAppearance(MainActivity.this,R.style.s_true);//开关样式
switch_c.setShowText(true);//显示开关为on
if (send(send_order[0],-1)){
showDialog(“开启通风”);
}else{
switch_c.setChecked(false);//当APP没有连接到单片机时,默认此按钮点击无效
}
}else{
switch_c.setSwitchTextAppearance(MainActivity.this,R.style.s_false);//开关样式
switch_c.setShowText(true);//显示文字on
if (send(send_order[1],-1)){
showDialog(“关闭通风”);
}else{
switch_c.setChecked(false);//当APP没有连接到单片机时,默认此按钮点击无效
}
}
}
});
//抽湿开关按钮
final Switch switch_t=findViewById(R.id.switch_t);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
switch_t.setShowText(true);//按钮上默认显示文字
}
switch_t.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@RequiresApi(api = Build.VERSION_CODES.LOLLIPOP)
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
if (isChecked)
{
switch_t.setSwitchTextAppearance(MainActivity.this,R.style.s_true);//开关样式
switch_t.setShowText(true);//显示文字on
if (send(send_order[2],-1)){
showDialog(“开启抽湿”);
}else{
switch_t.setChecked(false);//当APP没有连接到单片机时,默认此按钮点击无效
}
}else{
switch_t.setSwitchTextAppearance(MainActivity.this,R.style.s_false);//开关样式
switch_t.setShowText(true);
if (send(send_order[3],-1)){
// flag=false;
showDialog(“关闭抽湿”);
}else{
switch_t.setChecked(false);//当APP没有连接到单片机时,默认此按钮点击无效
}
}
}
});
}
//开启子线程
private Runnable mRunnable = new Runnable() {
@Override
public void run() {
String msgText = IPText.getText().toString();
if(msgText.length()<=0)//IP和端口号不能为空
{
Message msg = new Message();
msg.what = 5;
mHandler.sendMessage(msg);
return;
}
int start = msgText.indexOf(“:”);//IP和端口号格式不正确
if((start==-1)||(start+1>=msgText.length()))
{
Message msg = new Message();
msg.what = 6;
mHandler.sendMessage(msg);
return;
}
String sIP= msgText.substring(0,start);
String sPort = msgText.substring(start+1);
int port = Integer.parseInt(sPort);
BufferedReader mBufferedReaderClient;//从字符输入流中读取文本并缓冲字符,以便有效地读取字符,数组和行
try
{
//连接服务器
mSocketClient = new Socket();//创建Socket
SocketAddress socAddress = new InetSocketAddress(sIP, port);//设置ip地址和端口号
mSocketClient.connect(socAddress, 2000);//设置超时时间为2秒
//取得输入、输出流
mBufferedReaderClient =new BufferedReader(

这篇博客介绍了如何使用Java开发一个安卓智能家居APP,包括连接设备、添加文字和按钮控件的步骤。通过示例代码展示了如何处理开关按钮的点击事件,并强调了在Android中进行网络连接和线程通信的重要性。适合4G内存设备用户,无需USB即可将APP安装到手机。
最低0.47元/天 解锁文章
1417

被折叠的 条评论
为什么被折叠?



