ConnectWifiActivity.java
5.51 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
package com.sunvote.xpadapp;
import android.content.ClipData;
import android.content.ClipboardManager;
import android.content.Context;
import android.content.Intent;
import android.net.wifi.WifiInfo;
import android.net.wifi.WifiManager;
import android.os.Bundle;
import android.provider.Settings;
import android.text.TextUtils;
import android.widget.TextView;
import android.widget.Toast;
import com.sunvote.util.LogUtil;
import com.sunvote.xpadapp.base.BaseActivity;
import com.sunvote.xpadapp.utils.WiFiConnecter;
import com.uuzuche.lib_zxing.activity.CaptureActivity;
import com.uuzuche.lib_zxing.activity.CodeUtils;
/**
* Created by Elvis on 2017/12/13 11:38
* Email:Eluis@psunsky.com
* 版权所有:长沙中天电子设计开发有限公司
* Description: 人大通用版XPadAppRD
*/
public class ConnectWifiActivity extends BaseActivity implements WiFiConnecter.ActionListener {
public static final String TAG = "ConnectWifiActivity" ;
/**
* 扫描跳转Activity RequestCode
*/
public static final int REQUEST_CODE = 111;
private WiFiConnecter mWiFiConnecter;
private WifiManager mWifiManager;
private TextView msg ;
private String ssid;
private String password;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_qrcode_connect_wifi);
msg = findViewById(R.id.msg);
Intent intent = new Intent(getApplication(), CaptureActivity.class);
startActivityForResult(intent, REQUEST_CODE);
}
private void init() {
mWifiManager = (WifiManager)getApplicationContext().getSystemService(Context.WIFI_SERVICE);
mWiFiConnecter = new WiFiConnecter(this);
}
@Override
protected void onStart() {
super.onStart();
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
/**
* 处理二维码扫描结果
*/
if (requestCode == REQUEST_CODE) {
//处理扫描结果(在界面上显示)
if (null != data) {
Bundle bundle = data.getExtras();
if (bundle!= null && bundle.getInt(CodeUtils.RESULT_TYPE) == CodeUtils.RESULT_SUCCESS) {
String result = bundle.getString(CodeUtils.RESULT_STRING);
LogUtil.i(TAG,"Scan Result:" + result);
ssid = getSSIDByQRcode(result) ;
msg.setText("正在连接wifi:" + ssid);
password = getPasswordByQRcode(result) ;
String security = getSecurityByQRcode(result);
if(security.equals("WPA")){
LogUtil.i(TAG,"Change security:" + security);
security = "WPA2" ;
}
if(!TextUtils.isEmpty(ssid)) {
init();
mWiFiConnecter.connect(ssid, password, security, this);
}else {
Toast.makeText(ConnectWifiActivity.this,"二维码错误!",Toast.LENGTH_SHORT).show();
finish();
}
}else{
finish();
}
}else{
finish();
}
}else{
finish();
}
}
@Override
public void onStarted(String ssid) {
msg.setText("正在连接wifi:" + ssid);
}
@Override
public void onSuccess(WifiInfo info) {
Toast.makeText(this,"连接成功",Toast.LENGTH_SHORT).show();
finish();
}
@Override
public void onFailure() {
msg.setText("wifi:" + ssid + "连接失败!");
Toast.makeText(this,"连接失败,请尝试手动连接!",Toast.LENGTH_LONG).show();
ClipboardManager cm = (ClipboardManager) getApplicationContext().getSystemService(Context
.CLIPBOARD_SERVICE);
ClipData clip = ClipData.newPlainText("clip", password);
cm.setPrimaryClip(clip);
Intent intent = new Intent(Settings.ACTION_WIFI_SETTINGS);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent); //直接进入手机中的wifi网络设置界面
if(mWiFiConnecter != null) {
mWiFiConnecter.onResume();
mWiFiConnecter = null;
}
finish();
}
@Override
public void onFinished(boolean isSuccessed) {
if(isSuccessed){
msg.setText("wifi:" + ssid + "连接成功!");
}else{
msg.setText("wifi:" + ssid + "连接失败!");
}
}
public String getSSIDByQRcode(String qrcodeStr){
String[] strs = qrcodeStr.split(";");
for(String str:strs){
if(str.length() > 2 && str.toLowerCase().startsWith("s:")){
return str.substring(2);
}
}
return "";
}
public String getPasswordByQRcode(String qrcodeStr){
String[] strs = qrcodeStr.split(";");
for(String str:strs){
if(str.length() > 2 && str.toLowerCase().startsWith("p:")){
return str.substring(2);
}
}
return "";
}
public String getSecurityByQRcode(String qrcodeStr){
String[] strs = qrcodeStr.split(";");
for(String str:strs){
if(str.length() > 7 && str.toLowerCase().startsWith("wifi:")){
return str.substring(7);
}
}
return "";
}
@Override
public void onBackPressed() {
}
}