package com.rockchip.alexa.jacky.activity; import android.app.Activity; import android.app.AlertDialog; import android.content.Intent; import android.os.Bundle; import android.os.SystemClock; import android.util.Log; import android.view.View; import android.widget.AdapterView; import android.widget.ListView; import android.widget.TextView; import android.widget.Toast; import com.rockchip.alexa.jacky.R; import com.rockchip.alexa.jacky.adapter.WifiListAdapter; import com.rockchip.alexa.jacky.app.Context; import com.rockchip.alexa.jacky.control.WifiControl; import com.rockchip.alexa.jacky.info.ProvisioningClient; import com.rockchip.alexa.jacky.info.WifiInfo; import com.rockchip.alexa.jacky.listener.OnSingleClickListener; import com.rockchip.alexa.jacky.listener.OnSingleDialogListener; import com.rockchip.alexa.jacky.listener.OnSingleItemClickListener; import com.rockchip.alexa.jacky.utils.Env; import com.rockchip.alexa.jacky.views.LoadingView; import org.json.JSONException; import java.io.IOException; import java.util.List; public class WifiListActivity extends Activity { public static final String TAG = "WifiListActivity"; private ListView mlistView; private TextView mBtnBack; private LoadingView mLoadingView; protected WifiControl mWifiControl; private List mWifiList; protected String ssid; private WifiListAdapter mWifiListAdapter; private long mInitialTime; private boolean mCompleted; private boolean mActivityStoped; protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_wifi_list); initViews(); initGlobals(); initViewListeners(); } private void initViews() { mlistView = (ListView) findViewById(R.id.wifi_list); mBtnBack = (TextView) findViewById(R.id.toolbar_back); mLoadingView = new LoadingView(this, getResources().getString(R.string.dialog_loading)); } private void initGlobals() { mWifiControl = new WifiControl(WifiListActivity.this); } private void initViewListeners() { mlistView.setOnItemClickListener(new OnSingleItemClickListener() { @Override protected void onSingleItemClick(AdapterView adapterView, View view, int position, long id) { Intent intent = new Intent(WifiListActivity.this, WifiInputActivity.class); intent.putExtra("ssid", mWifiList.get(position).getSsid()); startActivity(intent); WifiListActivity.this.finish(); } }); mBtnBack.setOnClickListener(new OnSingleClickListener() { @Override protected void onSingleClick(View v) { WifiListActivity.this.finish(); } }); } @Override protected void onStart() { super.onStart(); mActivityStoped = false; if (!Env.isWifiEnable(this) || !Env.isWifiConnected(this) || !Env.getConnectingSSID(this).startsWith(Context.HOTSPOT_PREFIX)) { AlertDialog.Builder alert=new AlertDialog.Builder(WifiListActivity.this); alert.setTitle(getResources().getString(R.string.title_prompt)); alert.setMessage(getResources().getString(R.string.device_not_connected)); alert.setPositiveButton(getResources().getString(R.string.confirm), new OnSingleDialogListener() { @Override protected void onSingleClick(View v) { WifiListActivity.this.finish(); } }); alert.create(); alert.show(); } else { new Thread(new Runnable() { @Override public void run() { mLoadingView.show(); mInitialTime = SystemClock.uptimeMillis(); scanWifi(); while (!mActivityStoped){ if (mCompleted) { return; } else if (!mCompleted && (SystemClock.uptimeMillis() - mInitialTime > 3000)) { } try { Thread.sleep(100); } catch (InterruptedException e) { e.printStackTrace(); } } } }).start(); } } @Override protected void onResume() { super.onResume(); } @Override protected void onPause() { super.onPause(); } @Override protected void onStop() { super.onStop(); mActivityStoped = true; } @Override protected void onDestroy() { super.onDestroy(); } public void scanWifi() { // mWifiControl.startScan(WifiListActivity.this); while (!mActivityStoped){ try { Log.d(TAG, "========getWifiListInfo start========"); mWifiList = ProvisioningClient.getProvisioningClient(this).getWifiListInfo(); Log.d(TAG, "========getWifiListInfo end " + mWifiList.size() + "========"); } catch (JSONException e) { Log.d(TAG, "GetWifiListInfo JSONException. ", e); runOnUiThread(new Runnable() { @Override public void run() { Toast.makeText(WifiListActivity.this, "GetWifiListInfo JSONException.", Toast.LENGTH_SHORT).show(); } }); } catch (IOException e) { Log.d(TAG, "GetWifiListInfo IOException. ", e); runOnUiThread(new Runnable() { @Override public void run() { Toast.makeText(WifiListActivity.this, "GetWifiListInfo IOException.", Toast.LENGTH_SHORT).show(); } }); } if (mWifiList != null) { if (mWifiList.size() > 1) { mWifiListAdapter = new WifiListAdapter(this, mWifiList); runOnUiThread(new Runnable() { @Override public void run() { mCompleted = true; mlistView.setAdapter(mWifiListAdapter); if (mLoadingView != null && mLoadingView.isShowing()) { mLoadingView.dismiss(); } } }); return; } } try { Thread.sleep(500); } catch (InterruptedException e) { } } } }