Loading core/java/android/app/ConnectionSettings.java 0 → 100755 +207 −0 Original line number Diff line number Diff line package android.app; import android.bluetooth.BluetoothAdapter; import android.content.Context; import android.location.LocationManager; import android.net.wifi.WifiManager; import android.os.Parcel; import android.os.Parcelable; import android.provider.Settings; import org.xmlpull.v1.XmlPullParser; import org.xmlpull.v1.XmlPullParserException; import java.io.IOException; /** @hide */ public class ConnectionSettings implements Parcelable { private int mConnectionId; private int mValue; private boolean mOverride; private boolean mDirty; public static final int PROFILE_CONNECTION_WIFI = 1; public static final int PROFILE_CONNECTION_WIFIAP = 2; public static final int PROFILE_CONNECTION_WIMAX = 3; public static final int PROFILE_CONNECTION_GPS = 4; public static final int PROFILE_CONNECTION_BLUETOOTH = 7; /** @hide */ public static final Parcelable.Creator<ConnectionSettings> CREATOR = new Parcelable.Creator<ConnectionSettings>() { public ConnectionSettings createFromParcel(Parcel in) { return new ConnectionSettings(in); } @Override public ConnectionSettings[] newArray(int size) { return new ConnectionSettings[size]; } }; public ConnectionSettings(Parcel parcel) { readFromParcel(parcel); } public ConnectionSettings(int connectionId) { this(connectionId, 0, false); } public ConnectionSettings(int connectionId, int value, boolean override) { mConnectionId = connectionId; mValue = value; mOverride = override; mDirty = false; } public int getConnectionId() { return mConnectionId; } public int getValue() { return mValue; } public void setValue(int value) { mValue = value; mDirty = true; } public void setOverride(boolean override) { mOverride = override; mDirty = true; } public boolean isOverride() { return mOverride; } /** @hide */ public boolean isDirty() { return mDirty; } public void processOverride(Context context) { BluetoothAdapter bta = BluetoothAdapter.getDefaultAdapter(); LocationManager lm = (LocationManager) context.getSystemService(Context.LOCATION_SERVICE); WifiManager wm = (WifiManager) context.getSystemService(Context.WIFI_SERVICE); Boolean state; switch (getConnectionId()) { case PROFILE_CONNECTION_BLUETOOTH: state = bta.isEnabled(); if (getValue() == 1) { if (!state) { bta.enable(); } } else { if (state) { bta.disable(); } } break; case PROFILE_CONNECTION_GPS: state = lm.isProviderEnabled(LocationManager.GPS_PROVIDER); if (getValue() == 1) { if (!state) { Settings.Secure.setLocationProviderEnabled(context.getContentResolver(), LocationManager.GPS_PROVIDER, true); } } else { if (state) { Settings.Secure.setLocationProviderEnabled(context.getContentResolver(), LocationManager.GPS_PROVIDER, false); } } break; case PROFILE_CONNECTION_WIFI: int wifiApState = wm.getWifiApState(); state = wm.isWifiEnabled(); if (getValue() == 1) { if ((wifiApState == WifiManager.WIFI_AP_STATE_ENABLING) || (wifiApState == WifiManager.WIFI_AP_STATE_ENABLED)) { wm.setWifiApEnabled(null, false); } if (!state) { wm.setWifiEnabled(true); } } else { if (state) { wm.setWifiEnabled(false); } } break; case PROFILE_CONNECTION_WIFIAP: int wifiState = wm.getWifiState(); state = wm.isWifiApEnabled(); if (getValue() == 1) { if ((wifiState == WifiManager.WIFI_STATE_ENABLING) || (wifiState == WifiManager.WIFI_STATE_ENABLED)) { wm.setWifiEnabled(false); } if (!state) { wm.setWifiApEnabled(null, true); } } else { if (state) { wm.setWifiApEnabled(null, false); } } break; default: break; } } /** @hide */ public static ConnectionSettings fromXml(XmlPullParser xpp, Context context) throws XmlPullParserException, IOException { int event = xpp.next(); ConnectionSettings connectionDescriptor = new ConnectionSettings(0); while (event != XmlPullParser.END_TAG || !xpp.getName().equals("connectionDescriptor")) { if (event == XmlPullParser.START_TAG) { String name = xpp.getName(); if (name.equals("connectionId")) { connectionDescriptor.mConnectionId = Integer.parseInt(xpp.nextText()); } else if (name.equals("value")) { connectionDescriptor.mValue = Integer.parseInt(xpp.nextText()); } else if (name.equals("override")) { connectionDescriptor.mOverride = Boolean.parseBoolean(xpp.nextText()); } } event = xpp.next(); } return connectionDescriptor; } /** @hide */ public void getXmlString(StringBuilder builder, Context context) { builder.append("<connectionDescriptor>\n<connectionId>"); builder.append(mConnectionId); builder.append("</connectionId>\n<value>"); builder.append(mValue); builder.append("</value>\n<override>"); builder.append(mOverride); builder.append("</override>\n</connectionDescriptor>\n"); } @Override public int describeContents() { return 0; } /** @hide */ @Override public void writeToParcel(Parcel dest, int flags) { dest.writeInt(mConnectionId); dest.writeInt(mOverride ? 1 : 0); dest.writeInt(mValue); dest.writeInt(mDirty ? 1 : 0); } /** @hide */ public void readFromParcel(Parcel in) { mConnectionId = in.readInt(); mOverride = in.readInt() != 0; mValue = in.readInt(); mDirty = in.readInt() != 0; } } core/java/android/app/Profile.java +45 −5 Original line number Diff line number Diff line Loading @@ -16,17 +16,17 @@ package android.app; import org.xmlpull.v1.XmlPullParser; import org.xmlpull.v1.XmlPullParserException; import android.content.Context; import android.media.AudioManager; import android.os.Parcel; import android.os.Parcelable; import android.os.ParcelUuid; import android.os.Parcelable; import android.text.TextUtils; import android.util.Log; import org.xmlpull.v1.XmlPullParser; import org.xmlpull.v1.XmlPullParserException; import java.io.IOException; import java.util.Collection; import java.util.HashMap; Loading @@ -51,6 +51,8 @@ public class Profile implements Parcelable { private Map<Integer, StreamSettings> streams = new HashMap<Integer, StreamSettings>(); private Map<Integer, ConnectionSettings> connections = new HashMap<Integer, ConnectionSettings>(); /** @hide */ public static final Parcelable.Creator<Profile> CREATOR = new Parcelable.Creator<Profile>() { public Profile createFromParcel(Parcel in) { Loading Loading @@ -127,6 +129,8 @@ public class Profile implements Parcelable { profileGroups.values().toArray(new Parcelable[profileGroups.size()]), flags); dest.writeParcelableArray( streams.values().toArray(new Parcelable[streams.size()]), flags); dest.writeParcelableArray( connections.values().toArray(new Parcelable[connections.size()]), flags); } /** @hide */ Loading @@ -147,6 +151,10 @@ public class Profile implements Parcelable { StreamSettings stream = (StreamSettings) parcel; streams.put(stream.getStreamId(), stream); } for (Parcelable parcel : in.readParcelableArray(null)) { ConnectionSettings connection = (ConnectionSettings) parcel; connections.put(connection.getConnectionId(), connection); } } public String getName() { Loading Loading @@ -189,6 +197,11 @@ public class Profile implements Parcelable { return true; } } for (ConnectionSettings conn : connections.values()) { if (conn.isDirty()) { return true; } } return false; } Loading Loading @@ -217,6 +230,9 @@ public class Profile implements Parcelable { for (StreamSettings sd : streams.values()) { sd.getXmlString(builder, context); } for (ConnectionSettings cs : connections.values()) { cs.getXmlString(builder, context); } builder.append("</profile>\n"); mDirty = false; } Loading Loading @@ -274,6 +290,10 @@ public class Profile implements Parcelable { StreamSettings sd = StreamSettings.fromXml(xpp, context); profile.setStreamSettings(sd); } if (name.equals("connectionDescriptor")) { ConnectionSettings cs = ConnectionSettings.fromXml(xpp, context); profile.connections.put(cs.getConnectionId(), cs); } } event = xpp.next(); } Loading @@ -293,6 +313,12 @@ public class Profile implements Parcelable { am.setStreamVolume(sd.getStreamId(), sd.getValue(), 0); } } // Set connections for (ConnectionSettings cs : connections.values()) { if (cs.isOverride()) { cs.processOverride(context); } } } /** @hide */ Loading @@ -311,5 +337,19 @@ public class Profile implements Parcelable { return streams.values(); } /** @hide */ public ConnectionSettings getSettingsForConnection(int connectionId){ return connections.get(connectionId); } /** @hide */ public void setConnectionSettings(ConnectionSettings descriptor){ connections.put(descriptor.getConnectionId(), descriptor); } /** @hide */ public Collection<ConnectionSettings> getConnectionSettings(){ return connections.values(); } } No newline at end of file Loading
core/java/android/app/ConnectionSettings.java 0 → 100755 +207 −0 Original line number Diff line number Diff line package android.app; import android.bluetooth.BluetoothAdapter; import android.content.Context; import android.location.LocationManager; import android.net.wifi.WifiManager; import android.os.Parcel; import android.os.Parcelable; import android.provider.Settings; import org.xmlpull.v1.XmlPullParser; import org.xmlpull.v1.XmlPullParserException; import java.io.IOException; /** @hide */ public class ConnectionSettings implements Parcelable { private int mConnectionId; private int mValue; private boolean mOverride; private boolean mDirty; public static final int PROFILE_CONNECTION_WIFI = 1; public static final int PROFILE_CONNECTION_WIFIAP = 2; public static final int PROFILE_CONNECTION_WIMAX = 3; public static final int PROFILE_CONNECTION_GPS = 4; public static final int PROFILE_CONNECTION_BLUETOOTH = 7; /** @hide */ public static final Parcelable.Creator<ConnectionSettings> CREATOR = new Parcelable.Creator<ConnectionSettings>() { public ConnectionSettings createFromParcel(Parcel in) { return new ConnectionSettings(in); } @Override public ConnectionSettings[] newArray(int size) { return new ConnectionSettings[size]; } }; public ConnectionSettings(Parcel parcel) { readFromParcel(parcel); } public ConnectionSettings(int connectionId) { this(connectionId, 0, false); } public ConnectionSettings(int connectionId, int value, boolean override) { mConnectionId = connectionId; mValue = value; mOverride = override; mDirty = false; } public int getConnectionId() { return mConnectionId; } public int getValue() { return mValue; } public void setValue(int value) { mValue = value; mDirty = true; } public void setOverride(boolean override) { mOverride = override; mDirty = true; } public boolean isOverride() { return mOverride; } /** @hide */ public boolean isDirty() { return mDirty; } public void processOverride(Context context) { BluetoothAdapter bta = BluetoothAdapter.getDefaultAdapter(); LocationManager lm = (LocationManager) context.getSystemService(Context.LOCATION_SERVICE); WifiManager wm = (WifiManager) context.getSystemService(Context.WIFI_SERVICE); Boolean state; switch (getConnectionId()) { case PROFILE_CONNECTION_BLUETOOTH: state = bta.isEnabled(); if (getValue() == 1) { if (!state) { bta.enable(); } } else { if (state) { bta.disable(); } } break; case PROFILE_CONNECTION_GPS: state = lm.isProviderEnabled(LocationManager.GPS_PROVIDER); if (getValue() == 1) { if (!state) { Settings.Secure.setLocationProviderEnabled(context.getContentResolver(), LocationManager.GPS_PROVIDER, true); } } else { if (state) { Settings.Secure.setLocationProviderEnabled(context.getContentResolver(), LocationManager.GPS_PROVIDER, false); } } break; case PROFILE_CONNECTION_WIFI: int wifiApState = wm.getWifiApState(); state = wm.isWifiEnabled(); if (getValue() == 1) { if ((wifiApState == WifiManager.WIFI_AP_STATE_ENABLING) || (wifiApState == WifiManager.WIFI_AP_STATE_ENABLED)) { wm.setWifiApEnabled(null, false); } if (!state) { wm.setWifiEnabled(true); } } else { if (state) { wm.setWifiEnabled(false); } } break; case PROFILE_CONNECTION_WIFIAP: int wifiState = wm.getWifiState(); state = wm.isWifiApEnabled(); if (getValue() == 1) { if ((wifiState == WifiManager.WIFI_STATE_ENABLING) || (wifiState == WifiManager.WIFI_STATE_ENABLED)) { wm.setWifiEnabled(false); } if (!state) { wm.setWifiApEnabled(null, true); } } else { if (state) { wm.setWifiApEnabled(null, false); } } break; default: break; } } /** @hide */ public static ConnectionSettings fromXml(XmlPullParser xpp, Context context) throws XmlPullParserException, IOException { int event = xpp.next(); ConnectionSettings connectionDescriptor = new ConnectionSettings(0); while (event != XmlPullParser.END_TAG || !xpp.getName().equals("connectionDescriptor")) { if (event == XmlPullParser.START_TAG) { String name = xpp.getName(); if (name.equals("connectionId")) { connectionDescriptor.mConnectionId = Integer.parseInt(xpp.nextText()); } else if (name.equals("value")) { connectionDescriptor.mValue = Integer.parseInt(xpp.nextText()); } else if (name.equals("override")) { connectionDescriptor.mOverride = Boolean.parseBoolean(xpp.nextText()); } } event = xpp.next(); } return connectionDescriptor; } /** @hide */ public void getXmlString(StringBuilder builder, Context context) { builder.append("<connectionDescriptor>\n<connectionId>"); builder.append(mConnectionId); builder.append("</connectionId>\n<value>"); builder.append(mValue); builder.append("</value>\n<override>"); builder.append(mOverride); builder.append("</override>\n</connectionDescriptor>\n"); } @Override public int describeContents() { return 0; } /** @hide */ @Override public void writeToParcel(Parcel dest, int flags) { dest.writeInt(mConnectionId); dest.writeInt(mOverride ? 1 : 0); dest.writeInt(mValue); dest.writeInt(mDirty ? 1 : 0); } /** @hide */ public void readFromParcel(Parcel in) { mConnectionId = in.readInt(); mOverride = in.readInt() != 0; mValue = in.readInt(); mDirty = in.readInt() != 0; } }
core/java/android/app/Profile.java +45 −5 Original line number Diff line number Diff line Loading @@ -16,17 +16,17 @@ package android.app; import org.xmlpull.v1.XmlPullParser; import org.xmlpull.v1.XmlPullParserException; import android.content.Context; import android.media.AudioManager; import android.os.Parcel; import android.os.Parcelable; import android.os.ParcelUuid; import android.os.Parcelable; import android.text.TextUtils; import android.util.Log; import org.xmlpull.v1.XmlPullParser; import org.xmlpull.v1.XmlPullParserException; import java.io.IOException; import java.util.Collection; import java.util.HashMap; Loading @@ -51,6 +51,8 @@ public class Profile implements Parcelable { private Map<Integer, StreamSettings> streams = new HashMap<Integer, StreamSettings>(); private Map<Integer, ConnectionSettings> connections = new HashMap<Integer, ConnectionSettings>(); /** @hide */ public static final Parcelable.Creator<Profile> CREATOR = new Parcelable.Creator<Profile>() { public Profile createFromParcel(Parcel in) { Loading Loading @@ -127,6 +129,8 @@ public class Profile implements Parcelable { profileGroups.values().toArray(new Parcelable[profileGroups.size()]), flags); dest.writeParcelableArray( streams.values().toArray(new Parcelable[streams.size()]), flags); dest.writeParcelableArray( connections.values().toArray(new Parcelable[connections.size()]), flags); } /** @hide */ Loading @@ -147,6 +151,10 @@ public class Profile implements Parcelable { StreamSettings stream = (StreamSettings) parcel; streams.put(stream.getStreamId(), stream); } for (Parcelable parcel : in.readParcelableArray(null)) { ConnectionSettings connection = (ConnectionSettings) parcel; connections.put(connection.getConnectionId(), connection); } } public String getName() { Loading Loading @@ -189,6 +197,11 @@ public class Profile implements Parcelable { return true; } } for (ConnectionSettings conn : connections.values()) { if (conn.isDirty()) { return true; } } return false; } Loading Loading @@ -217,6 +230,9 @@ public class Profile implements Parcelable { for (StreamSettings sd : streams.values()) { sd.getXmlString(builder, context); } for (ConnectionSettings cs : connections.values()) { cs.getXmlString(builder, context); } builder.append("</profile>\n"); mDirty = false; } Loading Loading @@ -274,6 +290,10 @@ public class Profile implements Parcelable { StreamSettings sd = StreamSettings.fromXml(xpp, context); profile.setStreamSettings(sd); } if (name.equals("connectionDescriptor")) { ConnectionSettings cs = ConnectionSettings.fromXml(xpp, context); profile.connections.put(cs.getConnectionId(), cs); } } event = xpp.next(); } Loading @@ -293,6 +313,12 @@ public class Profile implements Parcelable { am.setStreamVolume(sd.getStreamId(), sd.getValue(), 0); } } // Set connections for (ConnectionSettings cs : connections.values()) { if (cs.isOverride()) { cs.processOverride(context); } } } /** @hide */ Loading @@ -311,5 +337,19 @@ public class Profile implements Parcelable { return streams.values(); } /** @hide */ public ConnectionSettings getSettingsForConnection(int connectionId){ return connections.get(connectionId); } /** @hide */ public void setConnectionSettings(ConnectionSettings descriptor){ connections.put(descriptor.getConnectionId(), descriptor); } /** @hide */ public Collection<ConnectionSettings> getConnectionSettings(){ return connections.values(); } } No newline at end of file