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() { } }