Adds activity and framework for displaying RangingResults for each AP.

Bug: 111830148
Test: Manually tested.
Change-Id: I50d10b41c947d3bf1be05ef0585c46d63a5daad5
diff --git a/connectivity/wifirtt/WifiRttScan/Application/src/main/AndroidManifest.xml b/connectivity/wifirtt/WifiRttScan/Application/src/main/AndroidManifest.xml
index 0315270..5f6b749 100644
--- a/connectivity/wifirtt/WifiRttScan/Application/src/main/AndroidManifest.xml
+++ b/connectivity/wifirtt/WifiRttScan/Application/src/main/AndroidManifest.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="UTF-8"?>
+<?xml version="1.0" encoding="utf-8"?>
 <!--
  Copyright 2013 The Android Open Source Project
 
@@ -48,7 +48,14 @@
         <activity
             android:name=".LocationPermissionRequestActivity"
             android:label="@string/title_activity_location_permission_request"
-            android:theme="@style/CustomAppTheme" >
+            android:parentActivityName=".MainActivity"
+            android:theme="@style/CustomAppTheme">
+        </activity>
+
+        <activity android:name=".AccessPointRangingResultsActivity"
+            android:label="@string/title_activity_access_point_ranging_results"
+            android:parentActivityName=".MainActivity"
+            android:theme="@style/CustomAppTheme">
         </activity>
     </application>
 </manifest>
diff --git a/connectivity/wifirtt/WifiRttScan/Application/src/main/java/com/example/android/wifirttscan/AccessPointRangingResultsActivity.java b/connectivity/wifirtt/WifiRttScan/Application/src/main/java/com/example/android/wifirttscan/AccessPointRangingResultsActivity.java
new file mode 100644
index 0000000..ca14774
--- /dev/null
+++ b/connectivity/wifirtt/WifiRttScan/Application/src/main/java/com/example/android/wifirttscan/AccessPointRangingResultsActivity.java
@@ -0,0 +1,86 @@
+/*
+ * Copyright (C) 2018 Google Inc. All Rights Reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.example.android.wifirttscan;
+
+import android.content.Intent;
+import android.net.wifi.ScanResult;
+import android.os.Bundle;
+import android.support.v7.app.AppCompatActivity;
+import android.widget.EditText;
+import android.widget.TextView;
+
+/** Displays ranging information about a particular access point chosen by the user. */
+public class AccessPointRangingResultsActivity extends AppCompatActivity {
+    private static final String TAG = "APRRActivity";
+
+    public static final String SCAN_RESULT_EXTRA =
+            "com.example.android.wifirttscan.extra.SCAN_RESULT";
+
+    private static final int STATISTIC_WINDOW_SIZE_DEFAULT = 50;
+    private static final int RANGING_PERIOD_MILLISECONDS_DEFAULT = 1000;
+
+    private ScanResult mScanResult;
+
+    private TextView mSsidTextView;
+    private TextView mBssidTextView;
+
+    private TextView mRange;
+    private TextView mRangeMean;
+    private TextView mRangeSD;
+    private TextView mRangeSDMean;
+    private TextView mRssi;
+    private TextView mSuccessesInBurst;
+    private TextView mSuccessRatio;
+
+    private EditText mStatsWindowSize;
+    private EditText mRangingPeriod;
+
+    private int mStatisticWindowSize;
+    private int mRangingPeriodMilliseconds;
+
+    @Override
+    protected void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        setContentView(R.layout.activity_access_point_ranging_results);
+
+        mSsidTextView = findViewById(R.id.ssid);
+        mBssidTextView = findViewById(R.id.bssid);
+
+        mRange = findViewById(R.id.range_value);
+        mRangeMean = findViewById(R.id.range_mean_value);
+        mRangeSD = findViewById(R.id.range_sd_value);
+        mRangeSDMean = findViewById(R.id.range_sd_mean_value);
+        mRssi = findViewById(R.id.rssi_value);
+        mSuccessesInBurst = findViewById(R.id.successes_in_burst_value);
+        mSuccessRatio = findViewById(R.id.success_ratio_value);
+
+        mStatsWindowSize = findViewById(R.id.stats_window_size_edit_value);
+        mStatisticWindowSize = STATISTIC_WINDOW_SIZE_DEFAULT;
+        mStatsWindowSize.setText(mStatisticWindowSize + "");
+
+        mRangingPeriod = findViewById(R.id.ranging_period_edit_value);
+        mRangingPeriodMilliseconds = RANGING_PERIOD_MILLISECONDS_DEFAULT;
+        mRangingPeriod.setText(mRangingPeriodMilliseconds + "");
+
+        Intent intent = getIntent();
+        mScanResult = intent.getParcelableExtra(SCAN_RESULT_EXTRA);
+
+        mSsidTextView.setText(mScanResult.SSID);
+        mBssidTextView.setText(mScanResult.BSSID);
+
+        // TODO (jewalker): Implement Ranging Request.
+    }
+}
diff --git a/connectivity/wifirtt/WifiRttScan/Application/src/main/java/com/example/android/wifirttscan/LocationPermissionRequestActivity.java b/connectivity/wifirtt/WifiRttScan/Application/src/main/java/com/example/android/wifirttscan/LocationPermissionRequestActivity.java
index 691109b..79e3071 100644
--- a/connectivity/wifirtt/WifiRttScan/Application/src/main/java/com/example/android/wifirttscan/LocationPermissionRequestActivity.java
+++ b/connectivity/wifirtt/WifiRttScan/Application/src/main/java/com/example/android/wifirttscan/LocationPermissionRequestActivity.java
@@ -27,14 +27,14 @@
 
 /**
  * This is a simple splash screen (activity) for giving more details on why the user should approve
- * fine location permissions. If they choose to move forward, the permission screen is
- * brought up. Either way (approve or disapprove), this will exit to the MainActivity after they are
- * finished with their final decision.
+ * fine location permissions. If they choose to move forward, the permission screen is brought up.
+ * Either way (approve or disapprove), this will exit to the MainActivity after they are finished
+ * with their final decision.
  */
 public class LocationPermissionRequestActivity extends AppCompatActivity
         implements ActivityCompat.OnRequestPermissionsResultCallback {
 
-    private static final String TAG = "LocationRationale";
+    private static final String TAG = "LocationPermission";
 
     /* Id to identify Location permission request. */
     private static final int PERMISSION_REQUEST_FINE_LOCATION = 1;
diff --git a/connectivity/wifirtt/WifiRttScan/Application/src/main/java/com/example/android/wifirttscan/MainActivity.java b/connectivity/wifirtt/WifiRttScan/Application/src/main/java/com/example/android/wifirttscan/MainActivity.java
index 7acf225..44be36d 100644
--- a/connectivity/wifirtt/WifiRttScan/Application/src/main/java/com/example/android/wifirttscan/MainActivity.java
+++ b/connectivity/wifirtt/WifiRttScan/Application/src/main/java/com/example/android/wifirttscan/MainActivity.java
@@ -15,6 +15,8 @@
  */
 package com.example.android.wifirttscan;
 
+import static com.example.android.wifirttscan.AccessPointRangingResultsActivity.SCAN_RESULT_EXTRA;
+
 import android.Manifest.permission;
 import android.annotation.SuppressLint;
 import android.content.BroadcastReceiver;
@@ -36,6 +38,8 @@
 import android.view.View;
 import android.widget.TextView;
 
+import com.example.android.wifirttscan.MyAdapter.ScanResultClickListener;
+
 import java.util.ArrayList;
 import java.util.List;
 
@@ -43,7 +47,7 @@
  * Displays list of Access Points enabled with WifiRTT (to check distance). Requests location
  * permissions if they are not approved via secondary splash screen explaining why they are needed.
  */
-public class MainActivity extends AppCompatActivity {
+public class MainActivity extends AppCompatActivity implements ScanResultClickListener {
 
     private static final String TAG = "MainActivity";
 
@@ -59,14 +63,12 @@
 
     private MyAdapter mAdapter;
 
-
     @Override
     protected void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
         setContentView(R.layout.activity_main);
 
         mOutputTextView = findViewById(R.id.access_point_summary_text_view);
-
         mRecyclerView = findViewById(R.id.recycler_view);
 
         // Improve performance if you know that changes in content do not change the layout size
@@ -79,25 +81,13 @@
 
         mAccessPointsSupporting80211mc = new ArrayList<>();
 
-        mAdapter = new MyAdapter(mAccessPointsSupporting80211mc);
+        mAdapter = new MyAdapter(mAccessPointsSupporting80211mc, this);
         mRecyclerView.setAdapter(mAdapter);
 
         mWifiManager = (WifiManager) getSystemService(Context.WIFI_SERVICE);
         mWifiScanReceiver = new WifiScanReceiver();
     }
 
-    public void onClickFindDistancesToAccessPoints(View view) {
-        if (mLocationPermissionApproved) {
-            logToUi(getString(R.string.retrieving_access_points));
-            mWifiManager.startScan();
-
-        } else {
-            // On 23+ (M+) devices, fine location permission not granted. Request permission.
-            Intent startIntent = new Intent(this, LocationPermissionRequestActivity.class);
-            startActivity(startIntent);
-        }
-    }
-
     @Override
     protected void onResume() {
         Log.d(TAG, "onResume()");
@@ -125,6 +115,27 @@
         }
     }
 
+    @Override
+    public void onScanResultItemClick(ScanResult scanResult) {
+        Log.d(TAG, "onScanResultItemClick(): ssid: " + scanResult.SSID);
+
+        Intent intent = new Intent(this, AccessPointRangingResultsActivity.class);
+        intent.putExtra(SCAN_RESULT_EXTRA, scanResult);
+        startActivity(intent);
+    }
+
+    public void onClickFindDistancesToAccessPoints(View view) {
+        if (mLocationPermissionApproved) {
+            logToUi(getString(R.string.retrieving_access_points));
+            mWifiManager.startScan();
+
+        } else {
+            // On 23+ (M+) devices, fine location permission not granted. Request permission.
+            Intent startIntent = new Intent(this, LocationPermissionRequestActivity.class);
+            startActivity(startIntent);
+        }
+    }
+
     private class WifiScanReceiver extends BroadcastReceiver {
 
         private List<ScanResult> find80211mcSupportedAccessPoints(
diff --git a/connectivity/wifirtt/WifiRttScan/Application/src/main/java/com/example/android/wifirttscan/MyAdapter.java b/connectivity/wifirtt/WifiRttScan/Application/src/main/java/com/example/android/wifirttscan/MyAdapter.java
index 29f84e8..2427f90 100644
--- a/connectivity/wifirtt/WifiRttScan/Application/src/main/java/com/example/android/wifirttscan/MyAdapter.java
+++ b/connectivity/wifirtt/WifiRttScan/Application/src/main/java/com/example/android/wifirttscan/MyAdapter.java
@@ -30,33 +30,44 @@
  * the {@link RecyclerView} to label the data.
  */
 public class MyAdapter extends RecyclerView.Adapter<ViewHolder> {
-
     private static final int HEADER_POSITION = 0;
 
     private static final int TYPE_HEADER = 0;
     private static final int TYPE_ITEM = 1;
 
+    private static ScanResultClickListener sScanResultClickListener;
+
     private List<ScanResult> mWifiAccessPointsWithRtt;
 
+    public MyAdapter(
+            List<ScanResult> list,
+            ScanResultClickListener scanResultClickListener) {
+        mWifiAccessPointsWithRtt = list;
+        sScanResultClickListener = scanResultClickListener;
+    }
+
     public static class ViewHolderHeader extends RecyclerView.ViewHolder {
         public ViewHolderHeader(View view) {
-            super(view);;
+            super(view);
         }
     }
 
-    public static class ViewHolderItem extends RecyclerView.ViewHolder {
+    public class ViewHolderItem extends RecyclerView.ViewHolder implements View.OnClickListener {
         public TextView mSsidTextView;
         public TextView mBssidTextView;
 
         public ViewHolderItem(View view) {
             super(view);
+            view.setOnClickListener(this);
             mSsidTextView = view.findViewById(R.id.ssid_text_view);
             mBssidTextView = view.findViewById(R.id.bssid_text_view);
         }
-    }
 
-    public MyAdapter(List<ScanResult> list) {
-        mWifiAccessPointsWithRtt = list;
+        @Override
+        public void onClick(View view) {
+            sScanResultClickListener.onScanResultItemClick(
+                    getItem(getAdapterPosition()));
+        }
     }
 
     public void swapData(List<ScanResult> list) {
@@ -77,12 +88,16 @@
         ViewHolder viewHolder;
 
         if (viewType == TYPE_HEADER) {
-            viewHolder = new ViewHolderHeader(LayoutInflater.from(parent.getContext())
-                    .inflate(R.layout.recycler_row_header, parent, false));
+            viewHolder =
+                    new ViewHolderHeader(
+                            LayoutInflater.from(parent.getContext())
+                                    .inflate(R.layout.recycler_row_header, parent, false));
 
         } else if (viewType == TYPE_ITEM) {
-            viewHolder = new ViewHolderItem(LayoutInflater.from(parent.getContext())
-                    .inflate(R.layout.recycler_row_item, parent, false));
+            viewHolder =
+                    new ViewHolderItem(
+                            LayoutInflater.from(parent.getContext())
+                                    .inflate(R.layout.recycler_row_item, parent, false));
         } else {
             throw new RuntimeException(viewType + " isn't a valid view type.");
         }
@@ -130,4 +145,10 @@
             return TYPE_ITEM;
         }
     }
+
+    // Used to inform the class containing the RecyclerView that one of the ScanResult items in the
+    // list was clicked.
+    public interface ScanResultClickListener {
+        void onScanResultItemClick(ScanResult scanResult);
+    }
 }
diff --git a/connectivity/wifirtt/WifiRttScan/Application/src/main/res/layout/activity_access_point_ranging_results.xml b/connectivity/wifirtt/WifiRttScan/Application/src/main/res/layout/activity_access_point_ranging_results.xml
new file mode 100644
index 0000000..70abd39
--- /dev/null
+++ b/connectivity/wifirtt/WifiRttScan/Application/src/main/res/layout/activity_access_point_ranging_results.xml
@@ -0,0 +1,321 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+  Copyright 2018 Google Inc. All rights reserved.
+  Licensed under the Apache License, Version 2.0 (the "License");
+  you may not use this file except in compliance with the License.
+  You may obtain a copy of the License at
+       http://www.apache.org/licenses/LICENSE-2.0
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+  -->
+<android.support.constraint.ConstraintLayout
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:app="http://schemas.android.com/apk/res-auto"
+    xmlns:tools="http://schemas.android.com/tools"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
+    tools:context=".AccessPointRangingResultsActivity">
+
+    <TextView
+        android:id="@+id/ssid"
+        android:layout_width="0dp"
+        android:layout_height="wrap_content"
+        android:layout_marginStart="@dimen/activity_access_point_ranging_request_margin_start"
+        android:layout_marginTop="@dimen/activity_access_point_ranging_request_margin_top_title"
+        android:gravity="center_vertical"
+        tools:text="SSID"
+        android:textAlignment="center"
+        android:textSize="@dimen/activity_access_point_ranging_request_header_text_size"
+        app:layout_constraintStart_toStartOf="parent"
+        app:layout_constraintTop_toTopOf="parent" />
+
+    <TextView
+        android:id="@+id/bssid"
+        android:layout_width="0dp"
+        android:layout_height="wrap_content"
+        android:layout_marginEnd="@dimen/activity_access_point_ranging_request_margin_end"
+        android:layout_marginTop="@dimen/activity_access_point_ranging_request_margin_top_title"
+        android:gravity="center_vertical"
+        android:textAlignment="center"
+        android:textSize="@dimen/activity_access_point_ranging_request_header_text_size"
+        app:layout_constraintEnd_toEndOf="parent"
+        app:layout_constraintTop_toTopOf="parent"
+        tools:text="BSSID" />
+
+    <View
+        android:id="@+id/divider1"
+        android:layout_width="0dp"
+        android:layout_height="@dimen/activity_access_point_ranging_request_divider_height"
+        android:layout_marginEnd="@dimen/activity_access_point_ranging_request_margin_end"
+        android:layout_marginStart="@dimen/activity_access_point_ranging_request_margin_start"
+        android:layout_marginTop="@dimen/activity_access_point_ranging_request_margin_top_divider"
+        android:background="?android:attr/listDivider"
+        android:visibility="visible"
+        app:layout_constraintEnd_toEndOf="parent"
+        app:layout_constraintStart_toStartOf="parent"
+        app:layout_constraintTop_toBottomOf="@+id/bssid" />
+
+    <TextView
+        android:id="@+id/range_label"
+        android:layout_width="0dp"
+        android:layout_height="wrap_content"
+        android:layout_marginStart="@dimen/activity_access_point_ranging_request_margin_start"
+        android:layout_marginTop="@dimen/activity_access_point_ranging_request_margin_top_divider"
+        android:gravity="start"
+        android:text="@string/range_label_activity_access_point_ranging_results"
+        android:textAlignment="textStart"
+        android:textSize="@dimen/activity_access_point_ranging_request_item_text_size"
+        app:layout_constraintStart_toStartOf="parent"
+        app:layout_constraintTop_toTopOf="@+id/divider1" />
+
+    <TextView
+        android:id="@+id/range_value"
+        android:layout_width="0dp"
+        android:layout_height="wrap_content"
+        android:layout_marginEnd="@dimen/activity_access_point_ranging_request_margin_end"
+        android:layout_marginTop="@dimen/activity_access_point_ranging_request_margin_top_divider"
+        android:gravity="end"
+        android:text="@string/activity_access_point_ranging_results_requesting_default"
+        android:textAlignment="textEnd"
+        android:textSize="@dimen/activity_access_point_ranging_request_item_text_size"
+        app:layout_constraintEnd_toEndOf="parent"
+        app:layout_constraintTop_toBottomOf="@+id/divider1" />
+
+    <TextView
+        android:id="@+id/range_mean_label"
+        android:layout_width="0dp"
+        android:layout_height="wrap_content"
+        android:layout_marginStart="@dimen/activity_access_point_ranging_request_margin_start"
+        android:layout_marginTop="@dimen/activity_access_point_ranging_request_margin_top"
+        android:gravity="start"
+        android:text="@string/range_mean_label_activity_access_point_ranging_results"
+        android:textAlignment="textStart"
+        android:textSize="@dimen/activity_access_point_ranging_request_item_text_size"
+        app:layout_constraintStart_toStartOf="parent"
+        app:layout_constraintTop_toBottomOf="@+id/range_label" />
+
+    <TextView
+        android:id="@+id/range_mean_value"
+        android:layout_width="0dp"
+        android:layout_height="wrap_content"
+        android:layout_marginEnd="@dimen/activity_access_point_ranging_request_margin_end"
+        android:layout_marginTop="@dimen/activity_access_point_ranging_request_margin_top"
+        android:gravity="end"
+        android:text="@string/activity_access_point_ranging_results_requesting_default"
+        android:textAlignment="textEnd"
+        android:textSize="@dimen/activity_access_point_ranging_request_item_text_size"
+        app:layout_constraintEnd_toEndOf="parent"
+        app:layout_constraintTop_toBottomOf="@+id/range_value" />
+
+    <TextView
+        android:id="@+id/range_sd_label"
+        android:layout_width="0dp"
+        android:layout_height="wrap_content"
+        android:layout_marginStart="@dimen/activity_access_point_ranging_request_margin_start"
+        android:layout_marginTop="@dimen/activity_access_point_ranging_request_margin_top"
+        android:gravity="start"
+        android:text="@string/range_sd_label_activity_access_point_ranging_results"
+        android:textAlignment="textStart"
+        android:textSize="@dimen/activity_access_point_ranging_request_item_text_size"
+        app:layout_constraintStart_toStartOf="parent"
+        app:layout_constraintTop_toBottomOf="@+id/range_mean_label" />
+
+    <TextView
+        android:id="@+id/range_sd_value"
+        android:layout_width="176dp"
+        android:layout_height="wrap_content"
+        android:layout_marginEnd="@dimen/activity_access_point_ranging_request_margin_end"
+        android:layout_marginTop="@dimen/activity_access_point_ranging_request_margin_top"
+        android:gravity="end"
+        android:text="@string/activity_access_point_ranging_results_requesting_default"
+        android:textAlignment="textEnd"
+        android:textSize="@dimen/activity_access_point_ranging_request_item_text_size"
+        app:layout_constraintEnd_toEndOf="parent"
+        app:layout_constraintTop_toBottomOf="@+id/range_mean_value" />
+
+    <TextView
+        android:id="@+id/range_sd_mean_label"
+        android:layout_width="0dp"
+        android:layout_height="wrap_content"
+        android:layout_marginStart="@dimen/activity_access_point_ranging_request_margin_start"
+        android:layout_marginTop="@dimen/activity_access_point_ranging_request_margin_top"
+        android:gravity="start"
+        android:text="@string/range_sd_mean_activity_access_point_ranging_results"
+        android:textAlignment="textStart"
+        android:textSize="@dimen/activity_access_point_ranging_request_item_text_size"
+        app:layout_constraintStart_toStartOf="parent"
+        app:layout_constraintTop_toBottomOf="@+id/range_sd_label" />
+
+    <TextView
+        android:id="@+id/range_sd_mean_value"
+        android:layout_width="0dp"
+        android:layout_height="wrap_content"
+        android:layout_marginEnd="@dimen/activity_access_point_ranging_request_margin_end"
+        android:layout_marginTop="@dimen/activity_access_point_ranging_request_margin_top"
+        android:gravity="end"
+        android:text="@string/activity_access_point_ranging_results_requesting_default"
+        android:textAlignment="textEnd"
+        android:textSize="@dimen/activity_access_point_ranging_request_item_text_size"
+        app:layout_constraintEnd_toEndOf="parent"
+        app:layout_constraintTop_toBottomOf="@+id/range_sd_value" />
+
+    <TextView
+        android:id="@+id/rssi_label"
+        android:layout_width="0dp"
+        android:layout_height="wrap_content"
+        android:layout_marginStart="@dimen/activity_access_point_ranging_request_margin_start"
+        android:layout_marginTop="@dimen/activity_access_point_ranging_request_margin_top"
+        android:gravity="start"
+        android:text="@string/rssi_label_activity_access_point_ranging_results"
+        android:textAlignment="textStart"
+        android:textSize="@dimen/activity_access_point_ranging_request_item_text_size"
+        app:layout_constraintStart_toStartOf="parent"
+        app:layout_constraintTop_toBottomOf="@+id/range_sd_mean_label" />
+
+    <TextView
+        android:id="@+id/rssi_value"
+        android:layout_width="0dp"
+        android:layout_height="wrap_content"
+        android:layout_marginEnd="@dimen/activity_access_point_ranging_request_margin_end"
+        android:layout_marginTop="@dimen/activity_access_point_ranging_request_margin_top"
+        android:gravity="end"
+        android:text="@string/activity_access_point_ranging_results_requesting_default"
+        android:textAlignment="textEnd"
+        android:textSize="@dimen/activity_access_point_ranging_request_item_text_size"
+        app:layout_constraintEnd_toEndOf="parent"
+        app:layout_constraintTop_toBottomOf="@+id/range_sd_mean_value" />
+
+    <TextView
+        android:id="@+id/successes_in_burst_label"
+        android:layout_width="0dp"
+        android:layout_height="wrap_content"
+        android:layout_marginStart="@dimen/activity_access_point_ranging_request_margin_start"
+        android:layout_marginTop="@dimen/activity_access_point_ranging_request_margin_top"
+        android:gravity="start"
+        android:text="@string/successes_in_burst_label_activity_access_point_ranging_results"
+        android:textAlignment="textStart"
+        android:textSize="@dimen/activity_access_point_ranging_request_item_text_size"
+        app:layout_constraintStart_toStartOf="parent"
+        app:layout_constraintTop_toBottomOf="@+id/rssi_label" />
+
+    <TextView
+        android:id="@+id/successes_in_burst_value"
+        android:layout_width="0dp"
+        android:layout_height="wrap_content"
+        android:layout_marginEnd="@dimen/activity_access_point_ranging_request_margin_end"
+        android:layout_marginTop="@dimen/activity_access_point_ranging_request_margin_top"
+        android:gravity="end"
+        android:text="@string/activity_access_point_ranging_results_requesting_default"
+        android:textAlignment="textEnd"
+        android:textSize="@dimen/activity_access_point_ranging_request_item_text_size"
+        app:layout_constraintEnd_toEndOf="parent"
+        app:layout_constraintTop_toBottomOf="@+id/rssi_value" />
+
+    <TextView
+        android:id="@+id/success_ratio_label"
+        android:layout_width="0dp"
+        android:layout_height="wrap_content"
+        android:layout_marginStart="@dimen/activity_access_point_ranging_request_margin_start"
+        android:layout_marginTop="@dimen/activity_access_point_ranging_request_margin_top"
+        android:gravity="start"
+        android:text="@string/success_ratio_label_activity_access_point_ranging_results"
+        android:textAlignment="textStart"
+        android:textSize="@dimen/activity_access_point_ranging_request_item_text_size"
+        app:layout_constraintStart_toStartOf="parent"
+        app:layout_constraintTop_toBottomOf="@+id/successes_in_burst_label" />
+
+    <TextView
+        android:id="@+id/success_ratio_value"
+        android:layout_width="0dp"
+        android:layout_height="wrap_content"
+        android:layout_marginEnd="@dimen/activity_access_point_ranging_request_margin_end"
+        android:layout_marginTop="@dimen/activity_access_point_ranging_request_margin_top"
+        android:gravity="end"
+        android:text="@string/activity_access_point_ranging_results_requesting_default"
+        android:textAlignment="textEnd"
+        android:textSize="@dimen/activity_access_point_ranging_request_item_text_size"
+        app:layout_constraintEnd_toEndOf="parent"
+        app:layout_constraintTop_toBottomOf="@+id/successes_in_burst_value" />
+
+    <View
+        android:id="@+id/divider2"
+        android:layout_width="0dp"
+        android:layout_height="@dimen/activity_access_point_ranging_request_divider_height"
+        android:layout_marginEnd="@dimen/activity_access_point_ranging_request_margin_end"
+        android:layout_marginStart="@dimen/activity_access_point_ranging_request_margin_start"
+        android:layout_marginTop="@dimen/activity_access_point_ranging_request_margin_top_divider"
+        android:background="?android:attr/listDivider"
+        android:visibility="visible"
+        app:layout_constraintEnd_toEndOf="parent"
+        app:layout_constraintStart_toStartOf="parent"
+        app:layout_constraintTop_toBottomOf="@+id/success_ratio_value" />
+
+    <TextView
+        android:id="@+id/stats_window_size_label"
+        android:layout_width="0dp"
+        android:layout_height="@dimen/activity_access_point_ranging_request_edit_view_height"
+        android:layout_marginStart="@dimen/activity_access_point_ranging_request_margin_start"
+        android:layout_marginTop="@dimen/activity_access_point_ranging_request_margin_top_divider"
+        android:gravity="start"
+        android:text="@string/stats_window_size_label_activity_access_point_ranging_results"
+        android:textAlignment="textStart"
+        android:textSize="@dimen/activity_access_point_ranging_request_item_text_size"
+        app:layout_constraintStart_toStartOf="parent"
+        app:layout_constraintTop_toTopOf="@+id/divider2" />
+
+    <EditText
+        android:id="@+id/stats_window_size_edit_value"
+        android:layout_width="@dimen/activity_access_point_ranging_request_edit_view_width"
+        android:layout_height="@dimen/activity_access_point_ranging_request_edit_view_height"
+        android:layout_marginEnd="@dimen/activity_access_point_ranging_request_margin_end"
+        android:layout_marginTop="@dimen/activity_access_point_ranging_request_margin_top_divider"
+        android:ems="10"
+        android:inputType="number"
+        android:textAlignment="textEnd"
+        android:textSize="@dimen/activity_access_point_ranging_request_item_text_size"
+        app:layout_constraintEnd_toEndOf="parent"
+        app:layout_constraintTop_toTopOf="@+id/divider2"
+        tools:text="50" />
+
+    <TextView
+        android:id="@+id/ranging_period_label"
+        android:layout_width="0dp"
+        android:layout_height="@dimen/activity_access_point_ranging_request_edit_view_height"
+        android:layout_marginStart="@dimen/activity_access_point_ranging_request_margin_start"
+        android:layout_marginTop="@dimen/activity_access_point_ranging_request_margin_top"
+        android:gravity="start"
+        android:text="@string/ranging_period_label_activity_access_point_ranging_results"
+        android:textAlignment="textStart"
+        android:textSize="@dimen/activity_access_point_ranging_request_item_text_size"
+        app:layout_constraintStart_toStartOf="parent"
+        app:layout_constraintTop_toBottomOf="@+id/stats_window_size_label" />
+
+    <EditText
+        android:id="@+id/ranging_period_edit_value"
+        android:layout_width="@dimen/activity_access_point_ranging_request_edit_view_width"
+        android:layout_height="@dimen/activity_access_point_ranging_request_edit_view_height"
+        android:layout_marginEnd="@dimen/activity_access_point_ranging_request_margin_end"
+        android:layout_marginTop="@dimen/activity_access_point_ranging_request_margin_top"
+        android:ems="10"
+        android:inputType="number"
+        android:textAlignment="textEnd"
+        android:textSize="@dimen/activity_access_point_ranging_request_item_text_size"
+        app:layout_constraintEnd_toEndOf="parent"
+        app:layout_constraintTop_toBottomOf="@+id/stats_window_size_edit_value"
+        tools:text="1000" />
+
+    <Button
+        android:id="@+id/reset_button"
+        android:layout_width="91dp"
+        android:layout_height="wrap_content"
+        android:layout_marginBottom="8dp"
+        android:layout_marginEnd="@dimen/activity_access_point_ranging_request_margin_end"
+        android:layout_marginStart="@dimen/activity_access_point_ranging_request_margin_start"
+        android:text="@string/reset_label_activity_access_point_ranging_results"
+        app:layout_constraintBottom_toBottomOf="parent"
+        app:layout_constraintEnd_toEndOf="parent"
+        app:layout_constraintStart_toStartOf="parent" />
+</android.support.constraint.ConstraintLayout>
diff --git a/connectivity/wifirtt/WifiRttScan/Application/src/main/res/layout/recycler_row_item.xml b/connectivity/wifirtt/WifiRttScan/Application/src/main/res/layout/recycler_row_item.xml
index 268852a..fcf9176 100644
--- a/connectivity/wifirtt/WifiRttScan/Application/src/main/res/layout/recycler_row_item.xml
+++ b/connectivity/wifirtt/WifiRttScan/Application/src/main/res/layout/recycler_row_item.xml
@@ -21,7 +21,8 @@
     android:layout_gravity="center"
     android:paddingTop="@dimen/recycler_row_padding"
     android:paddingBottom="@dimen/recycler_row_padding"
-    android:orientation="horizontal">
+    android:orientation="horizontal"
+    android:clickable="true">
 
     <TextView
         android:layout_width="0dp"
diff --git a/connectivity/wifirtt/WifiRttScan/Application/src/main/res/values/dimens.xml b/connectivity/wifirtt/WifiRttScan/Application/src/main/res/values/dimens.xml
index 5103147..990b85d 100644
--- a/connectivity/wifirtt/WifiRttScan/Application/src/main/res/values/dimens.xml
+++ b/connectivity/wifirtt/WifiRttScan/Application/src/main/res/values/dimens.xml
@@ -15,4 +15,16 @@
     <dimen name="recycler_row_padding">5dp</dimen>
     <dimen name="recycler_row_header_text_size">30sp</dimen>
     <dimen name="recycler_row_item_text_size">20sp</dimen>
+
+    <dimen name="activity_access_point_ranging_request_header_text_size">24sp</dimen>
+    <dimen name="activity_access_point_ranging_request_item_text_size">20sp</dimen>
+    <dimen name="activity_access_point_ranging_request_margin_end">16dp</dimen>
+    <dimen name="activity_access_point_ranging_request_margin_start">16dp</dimen>
+    <dimen name="activity_access_point_ranging_request_margin_top">8dp</dimen>
+    <dimen name="activity_access_point_ranging_request_margin_top_title">16dp</dimen>
+    <dimen name="activity_access_point_ranging_request_margin_top_divider">16dp</dimen>
+    <dimen name="activity_access_point_ranging_request_divider_height">1dp</dimen>
+    <dimen name="activity_access_point_ranging_request_edit_view_height">44dp</dimen>
+    <dimen name="activity_access_point_ranging_request_edit_view_width">116dp</dimen>
+
 </resources>
diff --git a/connectivity/wifirtt/WifiRttScan/Application/src/main/res/values/strings.xml b/connectivity/wifirtt/WifiRttScan/Application/src/main/res/values/strings.xml
index 860f3dc..1bfda3e 100644
--- a/connectivity/wifirtt/WifiRttScan/Application/src/main/res/values/strings.xml
+++ b/connectivity/wifirtt/WifiRttScan/Application/src/main/res/values/strings.xml
@@ -15,15 +15,31 @@
     <string name="action_settings">Settings</string>
 
     <string name="title_activity_location_permission_request">Location Permission Required</string>
-
     <string name="main_message_activity_location_permission_request">See distances to access points with Wifi RTT (permission required).</string>
     <string name="details_message_activity_location_permission_request">This app needs access to your phone\'s location to show the distances between this device and Wifi RTT enabled access points.</string>
     <string name="no_thanks_activity_location_permission_request">No Thanks</string>
     <string name="continue_activity_location_permission_request">Continue</string>
+
     <string name="recycler_row_header_label_ssid">SSID</string>
     <string name="recycler_row_header_label_bssid">BSSID</string>
-    <string name="retrieving_access_points">Retrieving Access Points...</string>
+    <string name="retrieving_access_points">Retrieving Access Points&#8230;</string>
     <string name="scan_wifi_button_label">Scan WiFi</string>
     <string name="introduction_text">Click the button below to scan access points.</string>
 
+    <!-- Strings for AccessPointRangingResultsActivity. -->
+    <string name="title_activity_access_point_ranging_results">Access Point Ranging Results</string>
+    <string name="activity_access_point_ranging_results_requesting_default">Requesting&#8230;</string>
+    <string name="range_label_activity_access_point_ranging_results">Range (m):</string>
+    <string name="range_mean_label_activity_access_point_ranging_results">Range-mean (m):</string>
+    <string name="range_sd_label_activity_access_point_ranging_results">RangeSD (m):</string>
+    <string name="range_sd_mean_activity_access_point_ranging_results">RangeSD-mean (m):</string>
+    <string name="rssi_label_activity_access_point_ranging_results">RSSI (dBm):</string>
+    <string name="successes_in_burst_label_activity_access_point_ranging_results">Successes in burst:</string>
+    <string name="success_ratio_label_activity_access_point_ranging_results">Success Ratio:</string>
+
+    <string name="stats_window_size_label_activity_access_point_ranging_results">Stats window size:</string>
+    <string name="ranging_period_label_activity_access_point_ranging_results">Ranging period (ms):</string>
+
+    <string name="reset_label_activity_access_point_ranging_results">Reset</string>
+
 </resources>