Skip to content

Commit b599fea

Browse files
committed
Merge branch 'feature/avs-ble-ssdp-sec1' into 'versions/avs-ble'
Change Security to Sec1 for local device features. See merge request idf/esp-idf-provisioning-android!21
2 parents 7ccfc2e + 5b2d212 commit b599fea

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

45 files changed

+392
-169
lines changed

app/build.gradle

+17-8
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
apply plugin: 'com.android.application'
22
apply plugin: 'com.google.protobuf'
3+
apply plugin: 'io.fabric'
34

45
android {
56
signingConfigs {
@@ -16,9 +17,9 @@ android {
1617
applicationId "com.espressif.provbleavs"
1718
minSdkVersion 21
1819
targetSdkVersion 28
19-
versionCode 12
20-
versionName "2.0"
21-
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
20+
versionCode 13
21+
versionName "2.1"
22+
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
2223
signingConfig signingConfigs.config
2324
}
2425
buildTypes {
@@ -92,15 +93,23 @@ protobuf {
9293

9394
dependencies {
9495
implementation fileTree(include: ['*.jar'], dir: 'libs')
95-
implementation 'com.android.support:appcompat-v7:28.0.0'
96-
implementation 'com.android.support.constraint:constraint-layout:1.1.0'
97-
implementation 'com.android.support:design:28.0.0'
96+
implementation 'androidx.appcompat:appcompat:1.0.0'
97+
implementation 'androidx.constraintlayout:constraintlayout:1.1.3'
98+
implementation 'com.google.android.material:material:1.0.0'
9899
testImplementation 'junit:junit:4.12'
99-
androidTestImplementation 'com.android.support.test:runner:1.0.2'
100-
androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
100+
androidTestImplementation 'androidx.test:runner:1.1.0'
101+
androidTestImplementation 'androidx.test.espresso:espresso-core:3.1.0'
101102
implementation 'com.google.protobuf:protobuf-lite:3.0.1'
102103
implementation files('../login-with-amazon-sdk.jar')
103104
implementation 'com.google.crypto.tink:tink-android:1.1.0'
104105
implementation 'com.github.custanator:upnpdiscovery:1.0.1'
105106
implementation 'com.github.f0ris.sweetalert:library:1.5.1'
107+
108+
// (Recommended) Add the Google Analytics dependency.
109+
implementation 'com.google.firebase:firebase-analytics:17.2.2'
110+
111+
// Add the Firebase Crashlytics dependency.
112+
implementation 'com.crashlytics.sdk.android:crashlytics:2.10.1'
106113
}
114+
115+
apply plugin: 'com.google.gms.google-services'

app/google-services.json

+40
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
{
2+
"project_info": {
3+
"project_number": "253563662563",
4+
"firebase_url": "https://esp-alexa.firebaseio.com",
5+
"project_id": "esp-alexa",
6+
"storage_bucket": "esp-alexa.appspot.com"
7+
},
8+
"client": [
9+
{
10+
"client_info": {
11+
"mobilesdk_app_id": "1:253563662563:android:b2f036c9dabbe2f5cd55d6",
12+
"android_client_info": {
13+
"package_name": "com.espressif.provbleavs"
14+
}
15+
},
16+
"oauth_client": [
17+
{
18+
"client_id": "253563662563-02jclpohuqv7u95upghldhhgmhu7r4l6.apps.googleusercontent.com",
19+
"client_type": 3
20+
}
21+
],
22+
"api_key": [
23+
{
24+
"current_key": "AIzaSyD9lh-CLTqd318ds_Tw9q3w_eTteU3l-08"
25+
}
26+
],
27+
"services": {
28+
"appinvite_service": {
29+
"other_platform_oauth_client": [
30+
{
31+
"client_id": "253563662563-02jclpohuqv7u95upghldhhgmhu7r4l6.apps.googleusercontent.com",
32+
"client_type": 3
33+
}
34+
]
35+
}
36+
}
37+
}
38+
],
39+
"configuration_version": "1"
40+
}

app/src/androidTest/java/com/espressif/espressif/ExampleInstrumentedTest.java

+2-2
Original file line numberDiff line numberDiff line change
@@ -14,8 +14,8 @@
1414
package com.espressif.espressif;
1515

1616
import android.content.Context;
17-
import android.support.test.InstrumentationRegistry;
18-
import android.support.test.runner.AndroidJUnit4;
17+
import androidx.test.InstrumentationRegistry;
18+
import androidx.test.runner.AndroidJUnit4;
1919

2020
import org.junit.Test;
2121
import org.junit.runner.RunWith;

app/src/main/java/com/espressif/AppConstants.java

+2-1
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ public class AppConstants {
2626
public static final String KEY_STATUS_MSG = "status_msg";
2727
public static final String KEY_DEVICE_INFO = "device_info";
2828
public static final String KEY_DEVICE_LANGUAGE = "device_language";
29-
29+
public static final String KEY_IS_NEW_FIRMWARE = "is_new_fw";
30+
3031
public static final String ESP_PREFERENCES = "Esp_Preferences";
3132
}

app/src/main/java/com/espressif/ui/activities/AlexaActivity.java

+15-5
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,10 @@
44
import android.net.Uri;
55
import android.os.Bundle;
66
import android.os.Vibrator;
7-
import android.support.v7.app.AppCompatActivity;
8-
import android.support.v7.widget.Toolbar;
7+
8+
import androidx.appcompat.app.AppCompatActivity;
9+
import androidx.appcompat.widget.Toolbar;
10+
911
import android.text.SpannableString;
1012
import android.text.Spanned;
1113
import android.text.TextPaint;
@@ -19,9 +21,11 @@
1921
import android.view.View;
2022
import android.widget.TextView;
2123

24+
import com.espressif.AppConstants;
2225
import com.espressif.provision.R;
2326
import com.espressif.provision.security.Security;
2427
import com.espressif.provision.security.Security0;
28+
import com.espressif.provision.security.Security1;
2529
import com.espressif.provision.session.Session;
2630
import com.espressif.provision.transport.ResponseListener;
2731
import com.espressif.provision.transport.SoftAPTransport;
@@ -47,7 +51,7 @@ public class AlexaActivity extends AppCompatActivity {
4751
private String deviceName;
4852

4953
private TextView txtDeviceName;
50-
private boolean isProv = false;
54+
private boolean isProv = false, isNewFw = false;
5155

5256
@Override
5357
public void onCreate(Bundle savedInstanceState) {
@@ -61,6 +65,7 @@ public void onCreate(Bundle savedInstanceState) {
6165
hostAddress = intent.getStringExtra(LoginWithAmazon.KEY_HOST_ADDRESS);
6266
deviceName = intent.getStringExtra(LoginWithAmazon.KEY_DEVICE_NAME);
6367
isProv = intent.getBooleanExtra("is_prov", false);
68+
isNewFw = intent.getBooleanExtra(AppConstants.KEY_IS_NEW_FIRMWARE, false);
6469
initViews();
6570

6671
if (!TextUtils.isEmpty(deviceName)) {
@@ -70,9 +75,13 @@ public void onCreate(Bundle savedInstanceState) {
7075
if (!isProv) {
7176

7277
transport = new SoftAPTransport(hostAddress + ":80");
73-
security = new Security0();
74-
session = new Session(transport, security);
7578

79+
if (isNewFw) {
80+
security = new Security1(getResources().getString(R.string.proof_of_possesion));
81+
} else {
82+
security = new Security0();
83+
}
84+
session = new Session(transport, security);
7685
session.init(null);
7786

7887
session.sessionListener = new Session.SessionListener() {
@@ -249,6 +258,7 @@ private void goToLoginActivity() {
249258
alexaProvisioningIntent.putExtra(LoginWithAmazon.KEY_HOST_ADDRESS, hostAddress);
250259
alexaProvisioningIntent.putExtra(LoginWithAmazon.KEY_DEVICE_NAME, deviceName);
251260
alexaProvisioningIntent.putExtra(LoginWithAmazon.KEY_IS_PROVISIONING, false);
261+
alexaProvisioningIntent.putExtra(AppConstants.KEY_IS_NEW_FIRMWARE, isNewFw);
252262
startActivity(alexaProvisioningIntent);
253263
}
254264
}

app/src/main/java/com/espressif/ui/activities/AppInfoActivity.java

+3-3
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,9 @@
33
import android.content.pm.PackageInfo;
44
import android.content.pm.PackageManager;
55
import android.os.Bundle;
6-
import android.support.annotation.Nullable;
7-
import android.support.v7.app.AppCompatActivity;
8-
import android.support.v7.widget.Toolbar;
6+
import androidx.annotation.Nullable;
7+
import androidx.appcompat.app.AppCompatActivity;
8+
import androidx.appcompat.widget.Toolbar;
99
import android.widget.TextView;
1010

1111
import com.espressif.provision.R;

app/src/main/java/com/espressif/ui/activities/BLEProvisionLanding.java

+3-3
Original file line numberDiff line numberDiff line change
@@ -30,9 +30,9 @@
3030
import android.os.Handler;
3131
import android.os.ParcelUuid;
3232
import android.os.Vibrator;
33-
import android.support.v7.app.AlertDialog;
34-
import android.support.v7.app.AppCompatActivity;
35-
import android.support.v7.widget.Toolbar;
33+
import androidx.appcompat.app.AlertDialog;
34+
import androidx.appcompat.app.AppCompatActivity;
35+
import androidx.appcompat.widget.Toolbar;
3636
import android.util.Log;
3737
import android.view.HapticFeedbackConstants;
3838
import android.view.View;

app/src/main/java/com/espressif/ui/activities/DeviceActivity.java

+33-8
Original file line numberDiff line numberDiff line change
@@ -4,10 +4,12 @@
44
import android.content.Intent;
55
import android.graphics.Color;
66
import android.os.Bundle;
7-
import android.support.annotation.Nullable;
8-
import android.support.v7.app.AlertDialog;
9-
import android.support.v7.app.AppCompatActivity;
10-
import android.support.v7.widget.Toolbar;
7+
8+
import androidx.annotation.Nullable;
9+
import androidx.appcompat.app.AlertDialog;
10+
import androidx.appcompat.app.AppCompatActivity;
11+
import androidx.appcompat.widget.Toolbar;
12+
1113
import android.text.TextUtils;
1214
import android.util.Log;
1315
import android.view.LayoutInflater;
@@ -22,6 +24,7 @@
2224
import com.espressif.provision.R;
2325
import com.espressif.provision.security.Security;
2426
import com.espressif.provision.security.Security0;
27+
import com.espressif.provision.security.Security1;
2528
import com.espressif.provision.session.Session;
2629
import com.espressif.provision.transport.ResponseListener;
2730
import com.espressif.provision.transport.SoftAPTransport;
@@ -54,6 +57,7 @@ public class DeviceActivity extends AppCompatActivity {
5457
private DeviceInfo deviceInfo;
5558
private String deviceHostAddress;
5659
private String deviceName;
60+
private boolean isNewFw;
5761

5862
private Session session;
5963
private Security security;
@@ -70,6 +74,7 @@ protected void onCreate(@Nullable Bundle savedInstanceState) {
7074
deviceHostAddress = intent.getStringExtra(LoginWithAmazon.KEY_HOST_ADDRESS);
7175
deviceName = intent.getStringExtra(LoginWithAmazon.KEY_DEVICE_NAME);
7276
deviceInfo = intent.getParcelableExtra(AppConstants.KEY_DEVICE_INFO);
77+
isNewFw = deviceInfo.isNewFirmware();
7378

7479
toolbar = findViewById(R.id.toolbar);
7580
toolbar.setTitle(deviceName);
@@ -96,7 +101,11 @@ protected void onResume() {
96101
super.onResume();
97102

98103
transport = new SoftAPTransport(deviceHostAddress + ":80");
99-
security = new Security0();
104+
if (deviceInfo.isNewFirmware()) {
105+
security = new Security1(getResources().getString(R.string.proof_of_possesion));
106+
} else {
107+
security = new Security0();
108+
}
100109
session = new Session(transport, security);
101110
session.init(null);
102111

@@ -169,7 +178,11 @@ public void onStopTrackingTouch(final SeekBar seekBar) {
169178

170179
Log.e(TAG, "onStopTrackingTouch : " + seekBar.getProgress());
171180
transport = new SoftAPTransport(deviceHostAddress + ":80");
172-
security = new Security0();
181+
if (deviceInfo.isNewFirmware()) {
182+
security = new Security1(getResources().getString(R.string.proof_of_possesion));
183+
} else {
184+
security = new Security0();
185+
}
173186
session = new Session(transport, security);
174187
session.init(null);
175188

@@ -216,7 +229,7 @@ public void onClick(View v) {
216229

217230
Intent languageIntent = new Intent(DeviceActivity.this, LanguageListActivity.class);
218231
languageIntent.putExtra(LoginWithAmazon.KEY_HOST_ADDRESS, deviceHostAddress);
219-
languageIntent.putExtra(AppConstants.KEY_DEVICE_LANGUAGE, deviceInfo.getLanguage());
232+
languageIntent.putExtra(AppConstants.KEY_DEVICE_INFO, deviceInfo);
220233
startActivityForResult(languageIntent, REQUEST_CODE_LANGUAGE);
221234
}
222235
};
@@ -272,10 +285,18 @@ public void onClick(DialogInterface dialog, int which) {
272285
if (TextUtils.isEmpty(newDeviceName)) {
273286
Toast.makeText(DeviceActivity.this, R.string.error_device_name_empty, Toast.LENGTH_SHORT).show();
274287
return;
288+
} else if (newDeviceName.contains("::")) {
289+
String errMsg = "Please enter a valid name which does not contain ::";
290+
Toast.makeText(DeviceActivity.this, errMsg, Toast.LENGTH_SHORT).show();
291+
return;
275292
}
276293

277294
transport = new SoftAPTransport(deviceHostAddress + ":80");
278-
security = new Security0();
295+
if (deviceInfo.isNewFirmware()) {
296+
security = new Security1(getResources().getString(R.string.proof_of_possesion));
297+
} else {
298+
security = new Security0();
299+
}
279300
session = new Session(transport, security);
280301
session.init(null);
281302

@@ -561,6 +582,7 @@ public void onSuccess(byte[] returnData) {
561582
if (device != null) {
562583

563584
deviceInfo = device;
585+
deviceInfo.setNewFirmware(isNewFw);
564586
runOnUiThread(new Runnable() {
565587

566588
@Override
@@ -612,6 +634,7 @@ private DeviceInfo processDeviceInfoResponse(byte[] responseData) {
612634
deviceInfo.setEndToneEnabled(specificInfo.getEORAudioCue());
613635
deviceInfo.setVolume(specificInfo.getVolume());
614636
deviceInfo.setLanguage(specificInfo.getAssistantLangValue());
637+
deviceInfo.setNewFirmware(isNewFw);
615638
}
616639

617640
} catch (InvalidProtocolBufferException e) {
@@ -650,6 +673,7 @@ private void goToLoginActivity() {
650673
alexaProvisioningIntent.putExtra(LoginWithAmazon.KEY_HOST_ADDRESS, deviceHostAddress);
651674
alexaProvisioningIntent.putExtra(LoginWithAmazon.KEY_DEVICE_NAME, deviceName);
652675
alexaProvisioningIntent.putExtra(LoginWithAmazon.KEY_IS_PROVISIONING, false);
676+
alexaProvisioningIntent.putExtra(AppConstants.KEY_IS_NEW_FIRMWARE, deviceInfo.isNewFirmware());
653677
startActivity(alexaProvisioningIntent);
654678
}
655679

@@ -658,6 +682,7 @@ private void goToAlexaActivity() {
658682
Intent alexaIntent = new Intent(getApplicationContext(), AlexaActivity.class);
659683
alexaIntent.putExtra(LoginWithAmazon.KEY_HOST_ADDRESS, deviceHostAddress);
660684
alexaIntent.putExtra(LoginWithAmazon.KEY_DEVICE_NAME, deviceName);
685+
alexaIntent.putExtra(AppConstants.KEY_IS_NEW_FIRMWARE, deviceInfo.isNewFirmware());
661686
alexaIntent.putExtras(getIntent());
662687
startActivity(alexaIntent);
663688
}

app/src/main/java/com/espressif/ui/activities/DeviceInfoActivity.java

+3-3
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,9 @@
22

33
import android.content.Intent;
44
import android.os.Bundle;
5-
import android.support.annotation.Nullable;
6-
import android.support.v7.app.AppCompatActivity;
7-
import android.support.v7.widget.Toolbar;
5+
import androidx.annotation.Nullable;
6+
import androidx.appcompat.app.AppCompatActivity;
7+
import androidx.appcompat.widget.Toolbar;
88
import android.widget.TextView;
99

1010
import com.espressif.AppConstants;

app/src/main/java/com/espressif/ui/activities/EspMainActivity.java

+3-3
Original file line numberDiff line numberDiff line change
@@ -23,9 +23,9 @@
2323
import android.os.Bundle;
2424
import android.os.Vibrator;
2525
import android.provider.Settings;
26-
import android.support.v7.app.AlertDialog;
27-
import android.support.v7.app.AppCompatActivity;
28-
import android.support.v7.widget.Toolbar;
26+
import androidx.appcompat.app.AlertDialog;
27+
import androidx.appcompat.app.AppCompatActivity;
28+
import androidx.appcompat.widget.Toolbar;
2929
import android.text.TextUtils;
3030
import android.util.Log;
3131
import android.view.HapticFeedbackConstants;

0 commit comments

Comments
 (0)