Style-related changes

git-svn-id: https://zxing.googlecode.com/svn/trunk@1428 59b500cc-1b3d-0410-9834-0bbf25fbcc57
This commit is contained in:
srowen 2010-06-15 16:25:24 +00:00
parent 6f0f67682b
commit b7d6fcef1d
6 changed files with 142 additions and 151 deletions

View file

@ -1,14 +1,12 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="fill_parent"
android:layout_height="fill_parent">
<!-- <ImageView android:id="@+id/imageStatus"-->
<!-- android:layout_width="wrap_content" android:layout_height="wrap_content"-->
<!-- android:layout_gravity="center_horizontal" android:padding="10dip"-->
<!-- android:src="@drawable/up" />-->
<TextView android:layout_width="wrap_content"
android:layout_height="wrap_content" android:id="@+id/networkStatus"
android:text="Status" android:textSize="20dip" android:padding="8dip"
android:layout_gravity="center_horizontal|bottom" />
android:orientation="vertical" android:layout_width="fill_parent"
android:layout_height="fill_parent">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/networkStatus"
android:text="Status" android:textSize="20dip"
android:padding="8dip"
android:layout_gravity="center_horizontal|bottom" />
</LinearLayout>

View file

@ -0,0 +1,41 @@
package com.google.zxing.client.android.wifi;
import android.app.Activity;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
import android.widget.TextView;
/**
* Get a broadcast when the network is connected, and kill the activity.
*/
final class ConnectedReceiver extends BroadcastReceiver {
private final Activity parent;
private final TextView statusView;
ConnectedReceiver(Activity wifiActivity, TextView statusView) {
parent = wifiActivity;
this.statusView = statusView;
}
@Override
public void onReceive(Context context, Intent intent) {
if (intent.getAction().equals(android.net.ConnectivityManager.CONNECTIVITY_ACTION)) {
ConnectivityManager con = (ConnectivityManager) parent.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo[] s = con.getAllNetworkInfo();
for (NetworkInfo i : s){
if (i.getTypeName().contentEquals("WIFI")){
NetworkInfo.State state = i.getState();
if (state == NetworkInfo.State.CONNECTED){
statusView.setText("Connected!");
Runnable delayKill = new Killer(parent);
delayKill.run();
}
}
}
}
}
}

View file

@ -25,16 +25,18 @@ import android.os.Handler;
/**
* Close the parent after a delay.
* @author Vikram Aggarwal
*
*/
class Killer implements Runnable {
final class Killer implements Runnable {
// Three full seconds
final int delay_millis = 3 * 1000;
Activity parent = null;
public Killer(Activity parent) {
private static final long DELAY_MS = 3 * 1000L;
private final Activity parent;
Killer(Activity parent) {
this.parent = parent;
}
@Override
public void run() {
final Handler handler = new Handler();
Timer t = new Timer();
@ -47,6 +49,6 @@ class Killer implements Runnable {
}
});
}
}, delay_millis);
}, DELAY_MS);
}
}

View file

@ -16,51 +16,44 @@
package com.google.zxing.client.android.wifi;
import java.util.Vector;
import com.google.zxing.client.android.wifi.WifiActivity.NetworkType;
/**
* Everything we could get from the barcode is to be here
* @author Vikram Aggarwal
*
* @author Vikram Aggarwal
*/
class NetworkSetting {
// The ancillary network setting from the barcode
private NetworkType mNetworkType;
// The password this ssid has
private String mPassword;
// The ssid we read from the barcode
private String mSsid;
final class NetworkSetting {
/** The ancillary network setting from the barcode */
private final NetworkType networkType;
/** The password this ssid has */
private final String password;
/** The ssid we read from the barcode */
private final String ssid;
static String[] toStringArray(Vector<String> strings) {
int size = strings.size();
String[] result = new String[size];
for (int j = 0; j < size; j++) {
result[j] = (String) strings.elementAt(j);
}
return result;
}
/**
* Create a new NetworkSetting object.
* @param ssid: The SSID
* @param password: Password for the setting, blank if unsecured network
* @param networkType: WPA for WPA/WPA2, or WEP for WEP or unsecured
*/
public NetworkSetting(String ssid, String password, NetworkType networkType){
mSsid = ssid;
mPassword = password;
mNetworkType = networkType;
NetworkSetting(String ssid, String password, NetworkType networkType){
this.ssid = ssid;
this.password = password;
this.networkType = networkType;
}
public NetworkType getNetworkType() {
return mNetworkType;
}
public String getPassword() {
return mPassword;
NetworkType getNetworkType() {
return networkType;
}
public String getSsid() {
return mSsid;
String getPassword() {
return password;
}
String getSsid() {
return ssid;
}
}

View file

@ -21,36 +21,41 @@ import android.text.TextUtils;
/**
* Try with:
* http://chart.apis.google.com/chart?cht=qr&chs=240x240&chl=WIFI:S:linksys;P:mypass;T:WPA;;
* @author Vikram Aggarwal
*
* TODO(vikrama): Test with binary ssid or password.
*
* @author Vikram Aggarwal
*/
public final class NetworkUtil {
final class NetworkUtil {
private NetworkUtil() {
}
/**
* Encloses the incoming string inside double quotes, if it isn't already quoted.
* @param string: the input string
* @return a quoted string, of the form "input". If the input string is null, it returns null as well.
*/
public static String convertToQuotedString(String string) {
static String convertToQuotedString(String string) {
if (string == null){
return null;
}
if (TextUtils.isEmpty(string)) {
return "";
}
final int lastPos = string.length() - 1;
int lastPos = string.length() - 1;
if (lastPos < 0 || (string.charAt(0) == '"' && string.charAt(lastPos) == '"')) {
return string;
}
return "\"" + string + "\"";
return '\"' + string + '\"';
}
private static boolean isHex(String key) {
private static boolean isHex(CharSequence key) {
if (key == null){
return false;
}
for (int i = key.length() - 1; i >= 0; i--) {
final char c = key.charAt(i);
char c = key.charAt(i);
if (!(c >= '0' && c <= '9' || c >= 'A' && c <= 'F' || c >= 'a' && c <= 'f')) {
return false;
}
@ -63,14 +68,13 @@ public final class NetworkUtil {
* @param wepKey the input to be checked
* @return true if the input string is indeed hex or empty. False if the input string is non-hex or null.
*/
public static boolean isHexWepKey(String wepKey) {
if (wepKey == null)
return false;
final int len = wepKey.length();
// WEP-40, WEP-104, and some vendors using 256-bit WEP (WEP-232?)
if (len != 10 && len != 26 && len != 58) {
static boolean isHexWepKey(CharSequence wepKey) {
if (wepKey == null) {
return false;
}
return isHex(wepKey);
}
int len = wepKey.length();
// WEP-40, WEP-104, and some vendors using 256-bit WEP (WEP-232?)
return (len == 10 || len == 26 || len == 58) && isHex(wepKey);
}
}

View file

@ -19,73 +19,38 @@ package com.google.zxing.client.android.wifi;
import java.util.List;
import android.app.Activity;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
import android.net.wifi.WifiConfiguration;
import android.net.wifi.WifiManager;
import android.os.Bundle;
import android.util.Log;
import android.widget.ImageView;
import android.widget.TextView;
import com.google.zxing.client.android.Intents;
import com.google.zxing.client.android.R;
import com.google.zxing.client.android.wifi.Killer;
import com.google.zxing.client.android.wifi.NetworkUtil;
import com.google.zxing.client.android.wifi.NetworkSetting;
/**
* A new activity showing the progress of Wifi connection
* @author Vikram Aggarwal
*
* @author Vikram Aggarwal
*/
public class WifiActivity extends Activity {
public static enum NetworkType {
private static final String TAG = WifiActivity.class.getSimpleName();
private WifiManager wifiManager;
private TextView statusView;
private ConnectedReceiver connectedReceiver;
public enum NetworkType {
NETWORK_WEP, NETWORK_WPA,
}
/**
* Get a broadcast when the network is connected, and kill the activity.
*/
class ConnectedReceiver extends BroadcastReceiver {
Activity parent = null;
public ConnectedReceiver(WifiActivity wifiActivity) {
parent = wifiActivity;
}
@Override
public void onReceive(Context context, Intent intent) {
if (intent.getAction().equals(android.net.ConnectivityManager.CONNECTIVITY_ACTION)){
ConnectivityManager con = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo[] s = con.getAllNetworkInfo();
for (NetworkInfo i : s){
if (i.getTypeName().contentEquals("WIFI")){
NetworkInfo.State state = i.getState();
if (state == NetworkInfo.State.CONNECTED){
statusT.setText("Connected!");
Killer delay_kill = new Killer(parent);
delay_kill.run();
}
}
}
}
}
}
private static final String tag = "NetworkActivity";
WifiManager mWifiManager = null;
TextView statusT = null;
ImageView statusI = null;
ConnectedReceiver rec = null;
boolean debug = true;
private int changeNetwork(NetworkSetting setting) {
// If the password is empty, this is an unencrypted network
if (setting.getPassword() == null || setting.getPassword() == "") {
if (setting.getPassword() == null || setting.getPassword().length() == 0) {
return changeNetworkUnEncrypted(setting);
}
if (setting.getNetworkType() == NetworkType.NETWORK_WPA) {
@ -96,11 +61,8 @@ public class WifiActivity extends Activity {
}
private WifiConfiguration changeNetworkCommon(NetworkSetting input){
statusT.setText("Creating settings...");
if (debug) {
Log.d(tag, "adding new configuration: \nSSID: " + input.getSsid() + "\nPassword: \""
+ input.getPassword() + "\"\nType: " + input.getNetworkType());
}
statusView.setText("Creating settings...");
Log.d(TAG, "Adding new configuration: \nSSID: " + input.getSsid() + "\nType: " + input.getNetworkType());
WifiConfiguration config = new WifiConfiguration();
config.allowedAuthAlgorithms.clear();
@ -115,10 +77,9 @@ public class WifiActivity extends Activity {
return config;
}
private int requestNetworkChange(WifiConfiguration config){
boolean disableOthers = false;
statusT.setText("Changing Network...");
return updateNetwork(config, disableOthers);
private int requestNetworkChange(WifiConfiguration config){
statusView.setText("Changing Network...");
return updateNetwork(config, false);
}
// Adding a WEP network
@ -155,9 +116,7 @@ public class WifiActivity extends Activity {
// Adding an open, unsecured network
private int changeNetworkUnEncrypted(NetworkSetting input){
WifiConfiguration config = changeNetworkCommon(input);
if (debug){
Log.d(tag, "Empty password prompting a simple account setting");
}
Log.d(TAG, "Empty password prompting a simple account setting");
config.wepKeys[0] = "";
config.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.NONE);
config.wepTxKeyIndex = 0;
@ -169,10 +128,10 @@ public class WifiActivity extends Activity {
* @param ssid
*/
private WifiConfiguration findNetworkInExistingConfig(String ssid){
List <WifiConfiguration> existingConfigs = mWifiManager.getConfiguredNetworks();
for (int i = 0; i < existingConfigs.size(); i++){
if (existingConfigs.get(i).SSID.compareTo(ssid) == 0){
return existingConfigs.get(i);
List <WifiConfiguration> existingConfigs = wifiManager.getConfiguredNetworks();
for (WifiConfiguration existingConfig : existingConfigs) {
if (existingConfig.SSID.equals(ssid)) {
return existingConfig;
}
}
return null;
@ -193,68 +152,62 @@ public class WifiActivity extends Activity {
String networkType = intent.getStringExtra(Intents.WifiConnect.TYPE);
// TODO(vikrama): Error checking here, to ensure ssid exists.
NetworkType networkT = null;
NetworkType networkT;
if (networkType.contains("WPA")) {
networkT = NetworkType.NETWORK_WPA;
}
else if (networkType.contains("WEP")) {
} else if (networkType.contains("WEP")) {
networkT = NetworkType.NETWORK_WEP;
}
else {
} else {
// Got an incorrect network type
finish();
return;
}
setContentView(R.layout.network);
statusT = (TextView) findViewById(R.id.networkStatus);
statusView = (TextView) findViewById(R.id.networkStatus);
// This is not available before onCreate
mWifiManager = (WifiManager) this.getSystemService(Context.WIFI_SERVICE);
wifiManager = (WifiManager) this.getSystemService(WIFI_SERVICE);
// So we know when the network changes
rec = new ConnectedReceiver(this);
registerReceiver(rec, new IntentFilter(ConnectivityManager.CONNECTIVITY_ACTION));
connectedReceiver = new ConnectedReceiver(this, statusView);
registerReceiver(connectedReceiver, new IntentFilter(ConnectivityManager.CONNECTIVITY_ACTION));
if (password == null)
if (password == null) {
password = "";
if (debug) {
Log.d(tag, "adding new configuration: \nSSID: " + ssid + "\nPassword: \"" + password + "\"\nType: " + networkT);
}
Log.d(TAG, "Adding new configuration: \nSSID: " + ssid + "Type: " + networkT);
NetworkSetting setting = new NetworkSetting(ssid, password, networkT);
changeNetwork(setting);
}
@Override
protected void onDestroy() {
if (connectedReceiver != null) {
unregisterReceiver(connectedReceiver);
connectedReceiver = null;
}
super.onDestroy();
if (rec != null)
unregisterReceiver(rec);
rec = null;
}
/**
* Update the network: either create a new network or modify an existing network
* @param config: the new network configuration
* @param disableOthers: true if other networks must be disabled
* @param config the new network configuration
* @param disableOthers true if other networks must be disabled
* @return network ID of the connected network.
*/
private int updateNetwork(WifiConfiguration config, boolean disableOthers){
WifiConfiguration existing = findNetworkInExistingConfig(config.SSID);
int networkId;
if (existing == null){
statusT.setText("Creating network...");
networkId = mWifiManager.addNetwork(config);
if (findNetworkInExistingConfig(config.SSID) == null){
statusView.setText("Creating network...");
networkId = wifiManager.addNetwork(config);
} else {
statusT.setText("Modifying network...");
networkId = mWifiManager.updateNetwork(config);
statusView.setText("Modifying network...");
networkId = wifiManager.updateNetwork(config);
}
if (networkId == -1){
return networkId;
}
if (!mWifiManager.enableNetwork(networkId, disableOthers)) {
if (networkId == -1 || !wifiManager.enableNetwork(networkId, disableOthers)) {
return -1;
}
mWifiManager.saveConfiguration();
wifiManager.saveConfiguration();
return networkId;
}
}