private void refresh() { updateText(); listClients(300); }
@Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { switch (requestCode) { case REQUEST_WRITE_SETTINGS: startControl(); break; } }
public void setReachable(Client client) { int position = getPosition(client); if (position < 0) { return; } reachable[position] = true; notifyDataSetChanged(); }
private void startControl() { adapter = new ClientArrayAdapter(this, new ArrayList<Client>()); ListView listView = (ListView) findViewById(R.id.clientlist); listView.setAdapter(adapter); wifiManager = (WifiManager) getSystemService(Context.WIFI_SERVICE); apControl = WifiApControl.getInstance(this); new Thread() { @Override public void run() { try { while (!isInterrupted()) { Thread.sleep(1000); runOnUiThread(new Runnable() { @Override public void run() { refresh(); } }); } } catch (InterruptedException e) { // ignored } } }.start(); }
public void setClients(List<Client> clients) { clear(); if (clients != null) { compatAddAll(clients); reachable = new boolean[clients.size()]; } notifyDataSetChanged(); }
@Override public View getView(int position, View view, ViewGroup parent) { ViewHolder holder; if (view == null) { LayoutInflater inflater = LayoutInflater.from(getContext()); view = inflater.inflate(R.layout.clientlistitem, parent, false); holder = new ViewHolder(); holder.desc = (TextView) view.findViewById(R.id.client_desc); holder.reach = (TextView) view.findViewById(R.id.client_reach); view.setTag(holder); } else { holder = (ViewHolder) view.getTag(); } Client client = getItem(position); holder.desc.setText(client.ipAddr + " " + client.hwAddr); holder.reach.setText(reachable[position] ? "R" : ""); return view; }
@Override public void run() { try { while (!isInterrupted()) { Thread.sleep(1000); runOnUiThread(new Runnable() { @Override public void run() { refresh(); } }); } } catch (InterruptedException e) { // ignored } } }.start();
public void enable(View view) { Button button = (Button) view; button.setEnabled(false); enable(); enableButtonAfter(button, 1000); }
public void disable(View view) { Button button = (Button) view; button.setEnabled(false); disable(); enableButtonAfter(button, 1000); } }
@Override public void onClick(DialogInterface dialog, int which) { Intent intent = new Intent(Settings.ACTION_MANAGE_WRITE_SETTINGS); intent.setData(Uri.parse("package:" + getPackageName())); intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); startActivityForResult(intent, REQUEST_WRITE_SETTINGS); } }).show();
@Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M && !Settings.System.canWrite(this)) { new AlertDialog.Builder(this) .setMessage("Allow reading/writing the system settings? Necessary to set up access points.") .setPositiveButton("OK", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { Intent intent = new Intent(Settings.ACTION_MANAGE_WRITE_SETTINGS); intent.setData(Uri.parse("package:" + getPackageName())); intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); startActivityForResult(intent, REQUEST_WRITE_SETTINGS); } }).show(); return; } startControl(); }
public void refresh(View view) { refresh(); }
public void onReachableClient(final Client client) { runOnUiThread(new Runnable() { @Override public void run() { adapter.setReachable(client); } }); } public void onComplete() { }
private void enableButtonAfter(final Button button, final long time) { new Thread() { @Override public void run() { try { Thread.sleep(time); runOnUiThread(new Runnable() { @Override public void run() { button.setEnabled(true); } }); } catch (InterruptedException e) { } } }.start(); }
private void listClients(int timeout) { if (apControl == null) { return; } List<Client> clients = apControl.getReachableClients(timeout, new ReachableClientListener() { public void onReachableClient(final Client client) { runOnUiThread(new Runnable() { @Override public void run() { adapter.setReachable(client); } }); } public void onComplete() { } }); adapter.setClients(clients); }
@Override public void onResume() { super.onResume(); refresh(); }
@Override public void run() { try { Thread.sleep(time); runOnUiThread(new Runnable() { @Override public void run() { button.setEnabled(true); } }); } catch (InterruptedException e) { } } }.start();
private void disable() { apControl.disable(); wifiManager.setWifiEnabled(true); refresh(); }
private void enable() { wifiManager.setWifiEnabled(false); apControl.enable(); refresh(); }