package com.example.drone_proj;
import java.util.ArrayList;
import java.util.List;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.net.wifi.ScanResult;
import android.net.wifi.WifiConfiguration;
import android.net.wifi.WifiManager;
import android.os.Bundle;
import android.support.v7.app.ActionBarActivity;
import android.util.Log;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemSelectedListener;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.Spinner;
import android.widget.Toast;
public class MainActivity extends ActionBarActivity {
// for TAG
private static final String TAG = "DRONE_PROJ";
private static int num = 0;
// UI variables
private Button connectToDrone;
private Button ctrl;
private Spinner spin;
// WifiManager variable
private WifiManager wifiManager;
// ScanResult List
private List<ScanResult> scanResultList;
// SSID List of ScanResult List
private List<String> ssidList = new ArrayList<String>();
// Spinner Adapter
private ArrayAdapter<String> spinnerAdpt;
// exception of initiating Spinner
private boolean initSpinner;
// BroadcastReceiver
private BroadcastReceiver mReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
final String action = intent.getAction();
if (action.equals(WifiManager.SCAN_RESULTS_AVAILABLE_ACTION)) {
Log.d(TAG, "available");
getWifiScanResult(); // get WIFISCanResult
wifiManager.startScan(); // for refresh
} else if (action.equals(WifiManager.NETWORK_STATE_CHANGED_ACTION)) {
Log.d(TAG, "changed");
sendBroadcast(new Intent("wifi.ON_NETWORK_STATE_CHANGED"));
}
}
};
public void initWifiScan() {
// Setup WIFI
Log.d(TAG, "Call initWifiScan()");
wifiManager = (WifiManager) getSystemService(WIFI_SERVICE);
Log.d(TAG, "WifiManager get SystemService");
// if WIFIEnabled
if (wifiManager.isWifiEnabled() == false) {
wifiManager.setWifiEnabled(true);
}
IntentFilter filter = new IntentFilter(
WifiManager.SCAN_RESULTS_AVAILABLE_ACTION);
filter.addAction(WifiManager.NETWORK_STATE_CHANGED_ACTION);
registerReceiver(mReceiver, filter);
wifiManager.startScan();
}
public void getWifiScanResult() {
Log.d(TAG, "Call getWifiScanResult()");
// Get ScanResult
scanResultList = wifiManager.getScanResults();
for (int i = 0; i < scanResultList.size(); i++) {
ScanResult result = scanResultList.get(i);
ssidList.add(result.SSID);
}
unregisterReceiver(mReceiver);
this.connectAdptToSpinner();
}
// Connect Adapter
public void connectAdptToSpinner() {
Log.d(TAG, "Call ConnectAdptToSpinner()");
// Setup spinAdpt & connect spinner to adapter
spinnerAdpt = new ArrayAdapter<String>(this,
android.R.layout.simple_list_item_1, ssidList);
spinnerAdpt
.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spin.setAdapter(spinnerAdpt);
}
/** Called when the activity is first created */
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// Setup UI
connectToDrone = (Button) findViewById(R.id.connectToDrone);
ctrl = (Button) findViewById(R.id.ctrl);
spin = (Spinner) findViewById(R.id.wifiSpinner);
spin.setOnItemSelectedListener(sOnItemSelectedListener);
Log.d(TAG, "Complete Setup UI");
// Initiate Wifi Scan
this.initWifiScan();
// Button
connectToDrone.setOnClickListener(new Button.OnClickListener() {
public void onClick(View v) {
Log.d(TAG, "Call connectToDrone onClick()");
spin.performClick();
Log.d(TAG, "spin.performClick");
}
});
ctrl.setOnClickListener(new Button.OnClickListener() {
public void onClick(View v) {
Intent intentControlActivity = new Intent(MainActivity.this,
ControlActivity.class);
startActivity(intentControlActivity);
}
});
Log.d(TAG, "Complete Setup Button");
}
private OnItemSelectedListener sOnItemSelectedListener = new OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view,
int position, long id) {
Log.d(TAG, "enter");
if (!initSpinner) {
Log.d(TAG, Boolean.toString(initSpinner));
initSpinner = true;
return;
}
Log.d(TAG, "???????????????");
String selectedWifi = spinnerAdpt.getItem(position);
Log.d(TAG, selectedWifi);
printToast(selectedWifi + "가 선택되었습니다");
return;
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
Log.d(TAG, "enter");
}
};
public void connectToWifi() {
}
public void printToast(String messageToast) {
Toast.makeText(this, messageToast, Toast.LENGTH_LONG).show();
}
/** Don't use */
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
int id = item.getItemId();
if (id == R.id.action_settings) {
return true;
}
return super.onOptionsItemSelected(item);
}
}
와이파이 ssid를 spinner에 띄워서
특정 ssid 선택시 toast를 띄우려고 하는데요
현재까지 되는건 와이파이 ssid가 spinner에 띄워지는 거까지구요
select하면 화면상으로는 select되고 원래 activity로 돌아갑니다
그런데 toast가 안 떠요
onNothingSelect에도 toast해놨는데 아예 셀렉트가 안 되는지
그 toast도 안뜨구요
뭐가 문제인지 잘 모르겠어요 부탁드립니다
(참고로 manifest에 와이파이 엑세스 같은건 다 해놨어요)