Merge "Wifi: revise P2P API"

This commit is contained in:
Jimmy Chen
2020-02-07 06:54:57 +00:00
committed by Android (Google) Code Review
9 changed files with 57 additions and 32 deletions

View File

@@ -31767,7 +31767,7 @@ package android.net.wifi.p2p {
field public static final int GROUP_OWNER_INTENT_MAX = 15; // 0xf
field public static final int GROUP_OWNER_INTENT_MIN = 0; // 0x0
field public String deviceAddress;
field public int groupOwnerIntent;
field @IntRange(from=0, to=15) public int groupOwnerIntent;
field public android.net.wifi.WpsInfo wps;
}
@@ -31959,14 +31959,14 @@ package android.net.wifi.p2p {
method public int getDeviceType();
method public int getMaxThroughput();
method public boolean isContentProtectionSupported();
method public boolean isEnabled();
method public boolean isSessionAvailable();
method public boolean isWfdEnabled();
method public void setContentProtectionSupported(boolean);
method public void setControlPort(int);
method public void setControlPort(@IntRange(from=0) int);
method public boolean setDeviceType(int);
method public void setMaxThroughput(int);
method public void setEnabled(boolean);
method public void setMaxThroughput(@IntRange(from=0) int);
method public void setSessionAvailable(boolean);
method public void setWfdEnabled(boolean);
method public void writeToParcel(@NonNull android.os.Parcel, int);
field @NonNull public static final android.os.Parcelable.Creator<android.net.wifi.p2p.WifiP2pWfdInfo> CREATOR;
field public static final int DEVICE_TYPE_PRIMARY_SINK = 1; // 0x1

View File

@@ -8111,7 +8111,7 @@ package android.net.wifi.p2p {
public final class WifiP2pGroupList implements android.os.Parcelable {
method public int describeContents();
method @NonNull public java.util.Collection<android.net.wifi.p2p.WifiP2pGroup> getGroupList();
method @NonNull public java.util.List<android.net.wifi.p2p.WifiP2pGroup> getGroupList();
method public void writeToParcel(@NonNull android.os.Parcel, int);
field @NonNull public static final android.os.Parcelable.Creator<android.net.wifi.p2p.WifiP2pGroupList> CREATOR;
}
@@ -8119,12 +8119,13 @@ package android.net.wifi.p2p {
public class WifiP2pManager {
method @RequiresPermission(anyOf={android.Manifest.permission.NETWORK_SETTINGS, android.Manifest.permission.NETWORK_STACK, android.Manifest.permission.OVERRIDE_WIFI_CONFIG}) public void deletePersistentGroup(@NonNull android.net.wifi.p2p.WifiP2pManager.Channel, int, @Nullable android.net.wifi.p2p.WifiP2pManager.ActionListener);
method @RequiresPermission(android.Manifest.permission.NETWORK_SETTINGS) public void factoryReset(@NonNull android.net.wifi.p2p.WifiP2pManager.Channel, @Nullable android.net.wifi.p2p.WifiP2pManager.ActionListener);
method @RequiresPermission(android.Manifest.permission.NETWORK_SETTINGS) public void listen(@NonNull android.net.wifi.p2p.WifiP2pManager.Channel, boolean, @Nullable android.net.wifi.p2p.WifiP2pManager.ActionListener);
method @RequiresPermission(anyOf={android.Manifest.permission.NETWORK_SETTINGS, android.Manifest.permission.NETWORK_STACK, android.Manifest.permission.READ_WIFI_CREDENTIAL}) public void requestPersistentGroupInfo(@NonNull android.net.wifi.p2p.WifiP2pManager.Channel, @Nullable android.net.wifi.p2p.WifiP2pManager.PersistentGroupInfoListener);
method @RequiresPermission(anyOf={android.Manifest.permission.NETWORK_SETTINGS, android.Manifest.permission.NETWORK_STACK, android.Manifest.permission.OVERRIDE_WIFI_CONFIG}) public void setDeviceName(@NonNull android.net.wifi.p2p.WifiP2pManager.Channel, @NonNull String, @Nullable android.net.wifi.p2p.WifiP2pManager.ActionListener);
method @RequiresPermission(allOf={android.Manifest.permission.CONNECTIVITY_INTERNAL, android.Manifest.permission.CONFIGURE_WIFI_DISPLAY}) public void setMiracastMode(int);
method @RequiresPermission(android.Manifest.permission.CONFIGURE_WIFI_DISPLAY) public void setWfdInfo(@NonNull android.net.wifi.p2p.WifiP2pManager.Channel, @NonNull android.net.wifi.p2p.WifiP2pWfdInfo, @Nullable android.net.wifi.p2p.WifiP2pManager.ActionListener);
method @RequiresPermission(anyOf={android.Manifest.permission.NETWORK_SETTINGS, android.Manifest.permission.NETWORK_STACK, android.Manifest.permission.OVERRIDE_WIFI_CONFIG}) public void setWifiP2pChannels(@NonNull android.net.wifi.p2p.WifiP2pManager.Channel, int, int, @Nullable android.net.wifi.p2p.WifiP2pManager.ActionListener);
method @RequiresPermission(android.Manifest.permission.NETWORK_SETTINGS) public void startListening(@NonNull android.net.wifi.p2p.WifiP2pManager.Channel, @Nullable android.net.wifi.p2p.WifiP2pManager.ActionListener);
method @RequiresPermission(android.Manifest.permission.NETWORK_SETTINGS) public void stopListening(@NonNull android.net.wifi.p2p.WifiP2pManager.Channel, @Nullable android.net.wifi.p2p.WifiP2pManager.ActionListener);
field public static final String ACTION_WIFI_P2P_PERSISTENT_GROUPS_CHANGED = "android.net.wifi.p2p.action.WIFI_P2P_PERSISTENT_GROUPS_CHANGED";
field public static final int MIRACAST_DISABLED = 0; // 0x0
field public static final int MIRACAST_SINK = 2; // 0x2

View File

@@ -291,7 +291,7 @@ final class WifiDisplayController implements DumpUtils.Dump {
mWfdEnabling = true;
WifiP2pWfdInfo wfdInfo = new WifiP2pWfdInfo();
wfdInfo.setWfdEnabled(true);
wfdInfo.setEnabled(true);
wfdInfo.setDeviceType(WifiP2pWfdInfo.DEVICE_TYPE_WFD_SOURCE);
wfdInfo.setSessionAvailable(true);
wfdInfo.setControlPort(DEFAULT_CONTROL_PORT);
@@ -323,7 +323,7 @@ final class WifiDisplayController implements DumpUtils.Dump {
// WFD should be disabled.
if (mWfdEnabled || mWfdEnabling) {
WifiP2pWfdInfo wfdInfo = new WifiP2pWfdInfo();
wfdInfo.setWfdEnabled(false);
wfdInfo.setEnabled(false);
mWifiP2pManager.setWfdInfo(mWifiP2pChannel, wfdInfo, new ActionListener() {
@Override
public void onSuccess() {
@@ -1044,7 +1044,7 @@ final class WifiDisplayController implements DumpUtils.Dump {
private static boolean isWifiDisplay(WifiP2pDevice device) {
WifiP2pWfdInfo wfdInfo = device.getWfdInfo();
return wfdInfo != null
&& wfdInfo.isWfdEnabled()
&& wfdInfo.isEnabled()
&& isPrimarySinkDeviceType(wfdInfo.getDeviceType());
}

View File

@@ -17,6 +17,7 @@
package android.net.wifi.p2p;
import android.annotation.IntDef;
import android.annotation.IntRange;
import android.annotation.NonNull;
import android.annotation.Nullable;
import android.compat.annotation.UnsupportedAppUsage;
@@ -133,6 +134,7 @@ public class WifiP2pConfig implements Parcelable {
*
* By default this field is set to {@link #GROUP_OWNER_INTENT_AUTO}.
*/
@IntRange(from = 0, to = 15)
public int groupOwnerIntent = GROUP_OWNER_INTENT_AUTO;
/** @hide */

View File

@@ -22,7 +22,9 @@ import android.os.Parcel;
import android.os.Parcelable;
import android.util.LruCache;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
import java.util.Map;
@@ -78,8 +80,8 @@ public final class WifiP2pGroupList implements Parcelable {
* Get the list of P2P groups.
*/
@NonNull
public Collection<WifiP2pGroup> getGroupList() {
return mGroups.snapshot().values();
public List<WifiP2pGroup> getGroupList() {
return new ArrayList<>(mGroups.snapshot().values());
}
/**

View File

@@ -326,6 +326,12 @@ public class WifiP2pManager {
/**
* Broadcast intent action indicating that remembered persistent groups have changed.
*
* You can <em>not</em> receive this through components declared
* in manifests, only by explicitly registering for it with
* {@link android.content.Context#registerReceiver(android.content.BroadcastReceiver,
* android.content.IntentFilter) Context.registerReceiver()}.
*
* @hide
*/
@SystemApi
@@ -1347,20 +1353,33 @@ public class WifiP2pManager {
}
/**
* Force p2p to enter or exit listen state
* Force p2p to enter listen state
*
* @param c is the channel created at {@link #initialize(Context, Looper, ChannelListener)}
* @param enable enables or disables listening
* @param listener for callbacks on success or failure. Can be null.
*
* @hide
*/
@SystemApi
@RequiresPermission(android.Manifest.permission.NETWORK_SETTINGS)
public void listen(@NonNull Channel c, boolean enable, @Nullable ActionListener listener) {
public void startListening(@NonNull Channel c, @Nullable ActionListener listener) {
checkChannel(c);
c.mAsyncChannel.sendMessage(enable ? START_LISTEN : STOP_LISTEN,
0, c.putListener(listener));
c.mAsyncChannel.sendMessage(START_LISTEN, 0, c.putListener(listener));
}
/**
* Force p2p to exit listen state
*
* @param c is the channel created at {@link #initialize(Context, Looper, ChannelListener)}
* @param listener for callbacks on success or failure. Can be null.
*
* @hide
*/
@SystemApi
@RequiresPermission(android.Manifest.permission.NETWORK_SETTINGS)
public void stopListening(@NonNull Channel c, @Nullable ActionListener listener) {
checkChannel(c);
c.mAsyncChannel.sendMessage(STOP_LISTEN, 0, c.putListener(listener));
}
/**

View File

@@ -17,6 +17,7 @@
package android.net.wifi.p2p;
import android.annotation.IntDef;
import android.annotation.IntRange;
import android.annotation.NonNull;
import android.annotation.Nullable;
import android.compat.annotation.UnsupportedAppUsage;
@@ -34,7 +35,7 @@ import java.util.Locale;
*/
public final class WifiP2pWfdInfo implements Parcelable {
private boolean mWfdEnabled;
private boolean mEnabled;
/** Device information bitmap */
private int mDeviceInfo;
@@ -85,15 +86,15 @@ public final class WifiP2pWfdInfo implements Parcelable {
/** @hide */
@UnsupportedAppUsage
public WifiP2pWfdInfo(int devInfo, int ctrlPort, int maxTput) {
mWfdEnabled = true;
mEnabled = true;
mDeviceInfo = devInfo;
mCtrlPort = ctrlPort;
mMaxThroughput = maxTput;
}
/** Returns true is Wifi Display is enabled, false otherwise. */
public boolean isWfdEnabled() {
return mWfdEnabled;
public boolean isEnabled() {
return mEnabled;
}
/**
@@ -101,8 +102,8 @@ public final class WifiP2pWfdInfo implements Parcelable {
*
* @param enabled true to enable Wifi Display, false to disable
*/
public void setWfdEnabled(boolean enabled) {
mWfdEnabled = enabled;
public void setEnabled(boolean enabled) {
mEnabled = enabled;
}
/**
@@ -177,12 +178,12 @@ public final class WifiP2pWfdInfo implements Parcelable {
}
/** Sets the TCP port at which the WFD Device listens for RTSP messages. */
public void setControlPort(int port) {
public void setControlPort(@IntRange(from = 0) int port) {
mCtrlPort = port;
}
/** Sets the maximum average throughput capability of the WFD Device, in megabits/second. */
public void setMaxThroughput(int maxThroughput) {
public void setMaxThroughput(@IntRange(from = 0) int maxThroughput) {
mMaxThroughput = maxThroughput;
}
@@ -200,7 +201,7 @@ public final class WifiP2pWfdInfo implements Parcelable {
@Override
public String toString() {
StringBuffer sbuf = new StringBuffer();
sbuf.append("WFD enabled: ").append(mWfdEnabled);
sbuf.append("WFD enabled: ").append(mEnabled);
sbuf.append("WFD DeviceInfo: ").append(mDeviceInfo);
sbuf.append("\n WFD CtrlPort: ").append(mCtrlPort);
sbuf.append("\n WFD MaxThroughput: ").append(mMaxThroughput);
@@ -215,7 +216,7 @@ public final class WifiP2pWfdInfo implements Parcelable {
/** Copy constructor. */
public WifiP2pWfdInfo(@Nullable WifiP2pWfdInfo source) {
if (source != null) {
mWfdEnabled = source.mWfdEnabled;
mEnabled = source.mEnabled;
mDeviceInfo = source.mDeviceInfo;
mCtrlPort = source.mCtrlPort;
mMaxThroughput = source.mMaxThroughput;
@@ -225,14 +226,14 @@ public final class WifiP2pWfdInfo implements Parcelable {
/** Implement the Parcelable interface */
@Override
public void writeToParcel(@NonNull Parcel dest, int flags) {
dest.writeInt(mWfdEnabled ? 1 : 0);
dest.writeInt(mEnabled ? 1 : 0);
dest.writeInt(mDeviceInfo);
dest.writeInt(mCtrlPort);
dest.writeInt(mMaxThroughput);
}
private void readFromParcel(Parcel in) {
mWfdEnabled = (in.readInt() == 1);
mEnabled = (in.readInt() == 1);
mDeviceInfo = in.readInt();
mCtrlPort = in.readInt();
mMaxThroughput = in.readInt();

View File

@@ -45,7 +45,7 @@ public class WifiP2pDeviceTest {
assertEquals(devA.groupCapability, devB.groupCapability);
assertEquals(devA.status, devB.status);
if (devA.wfdInfo != null) {
assertEquals(devA.wfdInfo.isWfdEnabled(), devB.wfdInfo.isWfdEnabled());
assertEquals(devA.wfdInfo.isEnabled(), devB.wfdInfo.isEnabled());
assertEquals(devA.wfdInfo.getDeviceInfoHex(), devB.wfdInfo.getDeviceInfoHex());
assertEquals(devA.wfdInfo.getControlPort(), devB.wfdInfo.getControlPort());
assertEquals(devA.wfdInfo.getMaxThroughput(), devB.wfdInfo.getMaxThroughput());

View File

@@ -55,8 +55,8 @@ public class WifiP2pWfdInfoTest {
public void testSettersGetters() throws Exception {
WifiP2pWfdInfo info = new WifiP2pWfdInfo();
info.setWfdEnabled(true);
assertTrue(info.isWfdEnabled());
info.setEnabled(true);
assertTrue(info.isEnabled());
info.setDeviceType(WifiP2pWfdInfo.DEVICE_TYPE_WFD_SOURCE);
assertEquals(WifiP2pWfdInfo.DEVICE_TYPE_WFD_SOURCE, info.getDeviceType());