Implement Wi-Fi DPP flow
1. Wi-Fi DPP hanshake fail UI 2. Show Wi-Fi DPP QR code information field on WifiDppAddDeviceFragment if it's available. 3. Click 'Choose Different Network' button will show WifiDppChooseSavedWifiNetworkFragment 4. After QR code scanner scans success, WifiDppConfiguratorActivity caches WifiQrCode instead of just a QR code string Bug: 122429170 Test: manual test Change-Id: I1ce1b014ff86903b5a7a8f3575cc98eb1079583c
This commit is contained in:
@@ -21,6 +21,7 @@ import android.app.Activity;
|
||||
import android.content.Context;
|
||||
import android.net.wifi.WifiManager;
|
||||
import android.os.Bundle;
|
||||
import android.text.TextUtils;
|
||||
import android.util.Log;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
@@ -55,6 +56,7 @@ public class WifiDppAddDeviceFragment extends WifiDppQrCodeBaseFragment {
|
||||
// Update success UI.
|
||||
mTitle.setText(R.string.wifi_dpp_wifi_shared_with_device);
|
||||
mSummary.setVisibility(View.INVISIBLE);
|
||||
mChooseDifferentNetwork.setVisibility(View.INVISIBLE);
|
||||
mButtonLeft.setText(R.string.wifi_dpp_add_another_device);
|
||||
mButtonLeft.setOnClickListener(v -> getFragmentManager().popBackStack());
|
||||
mButtonRight.setText(R.string.done);
|
||||
@@ -63,8 +65,13 @@ public class WifiDppAddDeviceFragment extends WifiDppQrCodeBaseFragment {
|
||||
|
||||
@Override
|
||||
public void onFailure(int code) {
|
||||
//TODO(b/122429170): Show DPP configuration error state UI
|
||||
Log.d(TAG, "DppStatusCallback.onFailure " + code);
|
||||
|
||||
// Update fail UI.
|
||||
mTitle.setText(R.string.wifi_dpp_could_not_add_device);
|
||||
mSummary.setVisibility(View.INVISIBLE);
|
||||
mChooseDifferentNetwork.setVisibility(View.INVISIBLE);
|
||||
mButtonRight.setText(R.string.retry);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -99,6 +106,15 @@ public class WifiDppAddDeviceFragment extends WifiDppQrCodeBaseFragment {
|
||||
public void onViewCreated(View view, Bundle savedInstanceState) {
|
||||
super.onViewCreated(view, savedInstanceState);
|
||||
|
||||
final WifiQrCode wifiQrCode = ((WifiDppConfiguratorActivity) getActivity())
|
||||
.getWifiDppQrCode();
|
||||
final String information = wifiQrCode.getInformation();
|
||||
if (TextUtils.isEmpty(information)) {
|
||||
mTitle.setText(R.string.wifi_dpp_device_found);
|
||||
} else {
|
||||
mTitle.setText(information);
|
||||
}
|
||||
|
||||
final WifiNetworkConfig wifiNetworkConfig = ((WifiDppConfiguratorActivity) getActivity())
|
||||
.getWifiNetworkConfig();
|
||||
if (!WifiNetworkConfig.isValidConfig(wifiNetworkConfig)) {
|
||||
@@ -110,7 +126,8 @@ public class WifiDppAddDeviceFragment extends WifiDppQrCodeBaseFragment {
|
||||
mWifiApPictureView = view.findViewById(R.id.wifi_ap_picture_view);
|
||||
|
||||
mChooseDifferentNetwork = view.findViewById(R.id.choose_different_network);
|
||||
mChooseDifferentNetwork.setOnClickListener(v -> getFragmentManager().popBackStack());
|
||||
mChooseDifferentNetwork.setOnClickListener(v ->
|
||||
mClickChooseDifferentNetworkListener.onClickChooseDifferentNetwork());
|
||||
|
||||
mButtonLeft = view.findViewById(R.id.button_left);
|
||||
mButtonLeft.setText(R.string.cancel);
|
||||
@@ -125,11 +142,34 @@ public class WifiDppAddDeviceFragment extends WifiDppQrCodeBaseFragment {
|
||||
}
|
||||
|
||||
private void startWifiDppInitiator() {
|
||||
final String enrolleeUri = ((WifiDppConfiguratorActivity) getActivity()).getDppUri();
|
||||
final WifiQrCode wifiQrCode = ((WifiDppConfiguratorActivity) getActivity())
|
||||
.getWifiDppQrCode();
|
||||
final String qrCode = wifiQrCode.getQrCode();
|
||||
final int networkId =
|
||||
((WifiDppConfiguratorActivity) getActivity()).getWifiNetworkConfig().getNetworkId();
|
||||
final WifiManager wifiManager = getContext().getSystemService(WifiManager.class);
|
||||
wifiManager.startDppAsConfiguratorInitiator(enrolleeUri, networkId,
|
||||
|
||||
wifiManager.startDppAsConfiguratorInitiator(qrCode, networkId,
|
||||
WifiManager.DPP_NETWORK_ROLE_STA, /* handler */ null, new DppStatusCallback());
|
||||
}
|
||||
|
||||
// Container Activity must implement this interface
|
||||
public interface OnClickChooseDifferentNetworkListener {
|
||||
public void onClickChooseDifferentNetwork();
|
||||
}
|
||||
OnClickChooseDifferentNetworkListener mClickChooseDifferentNetworkListener;
|
||||
|
||||
@Override
|
||||
public void onAttach(Context context) {
|
||||
super.onAttach(context);
|
||||
|
||||
mClickChooseDifferentNetworkListener = (OnClickChooseDifferentNetworkListener) context;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onDetach() {
|
||||
mClickChooseDifferentNetworkListener = null;
|
||||
|
||||
super.onDetach();
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user