Java tutorial
/* * Copyright 2013 WhiteByte (Nick Russler, Ahmet Yueksektepe). * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package com.whitebyte.hotspotcontrolexample; import java.util.ArrayList; import android.Manifest; import android.app.Activity; import android.content.Intent; import android.net.Uri; import android.os.Build; import android.os.Bundle; import android.provider.Settings; import android.support.annotation.BoolRes; import android.support.v4.app.ActivityCompat; import android.view.Menu; import android.view.MenuItem; import android.view.View; import android.widget.TextView; import android.widget.Toast; import com.whitebyte.hotspotclients.R; import com.whitebyte.wifihotspotutils.ClientScanResult; import com.whitebyte.wifihotspotutils.FinishScanListener; import com.whitebyte.wifihotspotutils.WifiApManager; public class Main extends Activity { TextView textView1; WifiApManager wifiApManager; /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); int PERMISSION_ALL = 1; String[] PERMISSIONS = { Manifest.permission.INTERNET, Manifest.permission.CHANGE_WIFI_STATE, Manifest.permission.ACCESS_WIFI_STATE, Manifest.permission.ACCESS_NETWORK_STATE, Manifest.permission.CHANGE_NETWORK_STATE, Manifest.permission.WRITE_SETTINGS }; ActivityCompat.requestPermissions(this, PERMISSIONS, PERMISSION_ALL); textView1 = (TextView) findViewById(R.id.textView1); wifiApManager = new WifiApManager(this); // Boolean retVal = false; if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { retVal = Settings.System.canWrite(this); } if (retVal) { Toast.makeText(this, "Write allowed :-)", Toast.LENGTH_LONG).show(); } else { Intent intent = new Intent(Settings.ACTION_MANAGE_WRITE_SETTINGS); intent.setData(Uri.parse("package:" + this.getPackageName())); startActivity(intent); } // scan(); } private void scan() { wifiApManager.getClientList(false, new FinishScanListener() { @Override public void onFinishScan(final ArrayList<ClientScanResult> clients) { textView1.setText("WifiApState: " + wifiApManager.getWifiApState() + "\n\n"); textView1.append("Clients: \n"); for (ClientScanResult clientScanResult : clients) { textView1.append("####################\n"); textView1.append("IpAddr: " + clientScanResult.getIpAddr() + "\n"); textView1.append("Device: " + clientScanResult.getDevice() + "\n"); textView1.append("HWAddr: " + clientScanResult.getHWAddr() + "\n"); textView1.append("isReachable: " + clientScanResult.isReachable() + "\n"); } } }); } public boolean onCreateOptionsMenu(Menu menu) { menu.add(0, 0, 0, "Get Clients"); menu.add(0, 1, 0, "Open AP"); menu.add(0, 2, 0, "Close AP"); menu.add(0, 3, 0, "Search Networks"); return super.onCreateOptionsMenu(menu); } public boolean onMenuItemSelected(int featureId, MenuItem item) { switch (item.getItemId()) { case 0: scan(); break; case 1: wifiApManager.setWifiApEnabled(null, true); break; case 2: wifiApManager.setWifiApEnabled(null, false); break; case 3: startActivity(new Intent(Settings.ACTION_WIFI_SETTINGS)); break; } return super.onMenuItemSelected(featureId, item); } }