Skip to content

Commit eb9a5bd

Browse files
authored
Merge pull request #3 from MuleTools/staging
0.91
2 parents f9d7a59 + 111d9b1 commit eb9a5bd

File tree

6 files changed

+244
-149
lines changed

6 files changed

+244
-149
lines changed

app/build.gradle

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -7,9 +7,9 @@ android {
77
applicationId "com.samourai.txtenna"
88
minSdkVersion 18
99
targetSdkVersion 26
10-
versionCode 4
11-
versionName "0.90.03"
12-
resValue "string", "version_name", "0.90.03"
10+
versionCode 5
11+
versionName "0.91"
12+
resValue "string", "version_name", "0.91"
1313
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
1414
multiDexEnabled true
1515
vectorDrawables.useSupportLibrary = true
@@ -31,20 +31,20 @@ android {
3131
applicationId 'com.samourai.txtenna'
3232
minSdkVersion 18
3333
targetSdkVersion 26
34-
versionCode 4
35-
versionName "0.90.03"
34+
versionCode 5
35+
versionName "0.91"
3636
resValue "string", "app_name", "txTenna"
37-
resValue "string", "version_name", "0.90.03"
37+
resValue "string", "version_name", "0.91"
3838
matchingFallbacks = ['debug', 'release']
3939
}
4040
staging {
4141
applicationId 'com.samourai.txtenna.staging'
4242
minSdkVersion 18
4343
targetSdkVersion 26
44-
versionCode 4
45-
versionName "0.90.03"
44+
versionCode 5
45+
versionName "0.91"
4646
resValue "string", "app_name", "txTenna Staging"
47-
resValue "string", "version_name", "0.90.03"
47+
resValue "string", "version_name", "0.91"
4848
matchingFallbacks = ['debug', 'release']
4949
}
5050
}

app/src/main/java/com/samourai/txtenna/MainActivity.java

Lines changed: 41 additions & 76 deletions
Original file line numberDiff line numberDiff line change
@@ -40,13 +40,10 @@
4040
import com.dm.zbar.android.scanner.ZBarScannerActivity;
4141
import com.gotenna.sdk.GoTenna;
4242
import com.gotenna.sdk.bluetooth.GTConnectionManager;
43-
import com.gotenna.sdk.commands.GTCommand;
4443
import com.gotenna.sdk.commands.GTCommandCenter;
4544
import com.gotenna.sdk.commands.GTError;
46-
import com.gotenna.sdk.commands.Place;
45+
import com.gotenna.sdk.exceptions.GTInvalidAppTokenException;
4746
import com.gotenna.sdk.interfaces.GTErrorListener;
48-
import com.gotenna.sdk.responses.GTResponse;
49-
import com.gotenna.sdk.types.GTDataTypes;
5047
import com.samourai.sms.SMSReceiver;
5148
import com.samourai.txtenna.adapters.BroadcastLogsAdapter;
5249
import com.samourai.txtenna.payload.PayloadFactory;
@@ -168,87 +165,55 @@ public void onClick(View view) {
168165
e.printStackTrace();
169166
}
170167

171-
goTennaUtil.getInstance(MainActivity.this).init();
172-
Log.d("MainActivity", "checking connected address:" + goTennaUtil.getInstance(MainActivity.this).getGtConnectionManager().getConnectedGotennaAddress());
173-
174-
if(GoTenna.tokenIsVerified() && goTennaUtil.getInstance(MainActivity.this).isPaired()) {
175-
176-
int region = PrefsUtil.getInstance(MainActivity.this).getValue(PrefsUtil.REGION, 0);
177-
178-
Place place = null;
179-
switch(region) {
180-
case 1:
181-
place = Place.EUROPE;
182-
break;
183-
case 2:
184-
place = Place.AUSTRALIA;
185-
break;
186-
case 3:
187-
place = Place.NEW_ZEALAND;
188-
break;
189-
case 4:
190-
place = Place.SINGAPORE;
191-
break;
192-
default:
193-
place = Place.NORTH_AMERICA;
194-
break;
195-
}
168+
try {
169+
goTennaUtil.getInstance(MainActivity.this).init();
170+
Log.d("MainActivity", "checking connected address:" + goTennaUtil.getInstance(MainActivity.this).getGtConnectionManager().getConnectedGotennaAddress());
196171

197-
GTCommandCenter.getInstance().sendSetGeoRegion(place, new GTCommand.GTCommandResponseListener()
198-
{
199-
@Override
200-
public void onResponse(GTResponse response)
201-
{
202-
if (response.getResponseCode() == GTDataTypes.GTCommandResponseCode.POSITIVE)
203-
{
204-
Log.d("MainActivity", "Region set OK");
205-
}
206-
else
207-
{
208-
Log.d("MainActivity", "Region set:" + response.toString());
172+
if(GoTenna.tokenIsVerified()) {
173+
174+
// set new random GID every time we recreate the main activity
175+
GTCommandCenter.getInstance().setGoTennaGID(new SecureRandom().nextLong(), UUID.randomUUID().toString(), new GTErrorListener() {
176+
@Override
177+
public void onError(GTError error) {
178+
Log.d("MainActivity", error.toString() + "," + error.getCode());
209179
}
180+
});
181+
182+
// set the geoloc region
183+
int region = PrefsUtil.getInstance(MainActivity.this).getValue(PrefsUtil.REGION, 0);
184+
goTennaUtil.getInstance(MainActivity.this).setGeoloc(region);
185+
186+
// if NOT already paired, try to connect to a goTenna
187+
if (!goTennaUtil.getInstance(MainActivity.this).isPaired()) {
188+
IncomingMessagesManager.getInstance(MainActivity.this.getApplicationContext()).startListening();
189+
goTennaUtil.getInstance(MainActivity.this).connect(null);
210190
}
211-
}, new GTErrorListener()
212-
{
213-
@Override
214-
public void onError(GTError error)
215-
{
216-
Log.d("MainActivity", error.toString() + "," + error.getCode());
217-
}
218-
});
191+
}
219192

220-
GTCommandCenter.getInstance().setGoTennaGID(new SecureRandom().nextLong(), UUID.randomUUID().toString(), new GTErrorListener()
221-
{
222-
@Override
223-
public void onError(GTError error)
224-
{
225-
Log.d("MainActivity", error.toString() + "," + error.getCode());
193+
String action = getIntent().getAction();
194+
String scheme = getIntent().getScheme();
195+
if(action != null && action.equals("com.samourai.txtenna.HEX")) {
196+
String hex = getIntent().getStringExtra(Intent.EXTRA_TEXT);
197+
String[] s = hex.split("-");
198+
Log.d("MainActivity", "hex:" + hex);
199+
NetworkParameters params = null;
200+
if(s.length > 1) {
201+
params = (s[1].equalsIgnoreCase("t") ? TestNet3Params.get() : MainNetParams.get());
226202
}
227-
});
228-
goTennaUtil.getInstance(MainActivity.this).getGtConnectionManager().scanAndConnect(GTConnectionManager.GTDeviceType.MESH);
203+
if(s[0] != null && s[0].length() > 0 && s[0].matches("^[0-9A-Fa-f]+$")) {
204+
relayViaGoTenna = null;
205+
doSendHex(s[0], params);
206+
}
207+
}
229208

230-
IncomingMessagesManager.getInstance(MainActivity.this.getApplicationContext()).startListening();
209+
refreshData();
231210

232211
}
233-
234-
String action = getIntent().getAction();
235-
String scheme = getIntent().getScheme();
236-
if(action != null && action.equals("com.samourai.txtenna.HEX")) {
237-
String hex = getIntent().getStringExtra(Intent.EXTRA_TEXT);
238-
String[] s = hex.split("-");
239-
Log.d("MainActivity", "hex:" + hex);
240-
NetworkParameters params = null;
241-
if(s.length > 1) {
242-
params = (s[1].equalsIgnoreCase("t") ? TestNet3Params.get() : MainNetParams.get());
243-
}
244-
if(s[0] != null && s[0].length() > 0 && s[0].matches("^[0-9A-Fa-f]+$")) {
245-
relayViaGoTenna = null;
246-
doSendHex(s[0], params);
247-
}
212+
catch(StringIndexOutOfBoundsException | GTInvalidAppTokenException e) {
213+
Toast.makeText(MainActivity.this, R.string.invalid_token, Toast.LENGTH_LONG).show();
214+
finish();
248215
}
249216

250-
refreshData();
251-
252217
}
253218

254219
@Override
@@ -355,6 +320,7 @@ public boolean onOptionsItemSelected(MenuItem item) {
355320
startActivity(new Intent(this, NetworkingActivity.class));
356321
return true;
357322
}
323+
358324
if (id == R.id.qr_scan) {
359325
relayViaGoTenna = null;
360326
doScanHexTx();
@@ -454,7 +420,6 @@ public void run() {
454420

455421
}
456422

457-
458423
@Override
459424
public void onActivityResult(int requestCode, int resultCode, Intent data) {
460425

app/src/main/java/com/samourai/txtenna/NetworkingActivity.java

Lines changed: 62 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -19,9 +19,9 @@
1919
import android.widget.ImageView;
2020
import android.widget.TextView;
2121

22+
import com.gotenna.sdk.GoTenna;
2223
import com.samourai.txtenna.prefs.PrefsUtil;
2324

24-
import com.gotenna.sdk.bluetooth.GTConnectionManager.GTDeviceType;
2525
import com.samourai.txtenna.utils.goTennaUtil;
2626

2727
public class NetworkingActivity extends AppCompatActivity {
@@ -66,16 +66,6 @@ public void onClick(View view) {
6666
}
6767
});
6868

69-
if(goTennaUtil.getInstance(NetworkingActivity.this).isPaired()) {
70-
String device = getText(R.string.mesh_device_detected2) + ": " + goTennaUtil.getInstance(NetworkingActivity.this).getGtConnectionManager().getConnectedGotennaAddress();
71-
mesh_card_detail.setText(device);
72-
mesh_card_detail_title.setText(R.string.mesh_device_detected);
73-
}
74-
else {
75-
mesh_card_detail.setText(R.string.rescan_or_buy);
76-
mesh_card_detail_title.setText(R.string.mesh_device_detected);
77-
}
78-
7969
btRescan = findViewById(R.id.btn_rescan);
8070
if(goTennaUtil.getInstance(NetworkingActivity.this).isPaired()) {
8171
btRescan.setText(R.string.unpair_device);
@@ -86,14 +76,10 @@ public void onClick(View view) {
8676
btRescan.setOnClickListener(new View.OnClickListener() {
8777
@Override
8878
public void onClick(View view) {
89-
9079
if(goTennaUtil.getInstance(NetworkingActivity.this).isPaired()) {
91-
goTennaUtil.getInstance(NetworkingActivity.this).getGtConnectionManager().disconnect();
92-
goTennaUtil.getInstance(NetworkingActivity.this).getGtConnectionManager().clearConnectedGotennaAddress();
93-
goTennaUtil.getInstance(NetworkingActivity.this).getGtConnectionManager().scanAndConnect(GTDeviceType.MESH);
94-
btRescan.setText(R.string.pair_device);
95-
mesh_card_detail.setText(R.string.rescan_or_buy);
96-
mesh_card_detail_title.setText(R.string.mesh_device_detected);
80+
goTennaUtil.getInstance(NetworkingActivity.this).disconnect(NetworkingActivity.this);
81+
btRescan.setText(R.string.mesh_device_disconnecting);
82+
btRescan.setEnabled(false);
9783
}
9884
else {
9985

@@ -105,43 +91,60 @@ public void onClick(View view) {
10591
}
10692

10793
if(hasLocationpermission() && hasBluetoothPermisson()) {
108-
// GTCommandCenter.getInstance().setGoTennaGID(1111111111L, "txTenna", null);
109-
if(goTennaUtil.getInstance(NetworkingActivity.this).isPaired()) {
110-
Log.d("NetworkingActivity", "existing connected address:" + goTennaUtil.getInstance(NetworkingActivity.this).getGtConnectionManager().getConnectedGotennaAddress());
111-
String device = getText(R.string.mesh_device_detected2) + ": " + goTennaUtil.getInstance(NetworkingActivity.this).getGtConnectionManager().getConnectedGotennaAddress();
112-
btRescan.setText(R.string.pair_device);
113-
mesh_card_detail.setText(device);
114-
mesh_card_detail_title.setText(R.string.mesh_device_detected);
115-
}
116-
else {
117-
goTennaUtil.getInstance(NetworkingActivity.this).getGtConnectionManager().scanAndConnect(GTDeviceType.MESH);
118-
Log.d("NetworkingActivity", "connected address:" + goTennaUtil.getInstance(NetworkingActivity.this).getGtConnectionManager().getConnectedGotennaAddress());
119-
btRescan.setText(R.string.unpair_device);
120-
mesh_card_detail.setText(R.string.rescan_or_buy);
121-
mesh_card_detail_title.setText(R.string.mesh_device_detected);
122-
}
94+
goTennaUtil.getInstance(NetworkingActivity.this).connect(NetworkingActivity.this);
95+
btRescan.setText(R.string.mesh_device_scanning);
96+
btRescan.setEnabled(false);
12397
}
12498

12599
}
126-
127100
}
128101
});
129102

103+
Log.d("NetworkActivity", "gtConnectionState:" + goTennaUtil.getInstance(NetworkingActivity.this).getGtConnectionManager().getGtConnectionState());
104+
Log.d("NetworkActivity", "connected address:" + goTennaUtil.getInstance(NetworkingActivity.this).getGtConnectionManager().getConnectedGotennaAddress());
105+
if(goTennaUtil.getInstance(NetworkingActivity.this).isPaired()) {
106+
String device = getText(R.string.mesh_device_detected2) + ": " + goTennaUtil.getInstance(NetworkingActivity.this).getGtConnectionManager().getConnectedGotennaAddress();
107+
mesh_card_detail.setText(device);
108+
mesh_card_detail_title.setText(R.string.mesh_device_detected);
109+
status_img_mesh.setImageDrawable(getResources().getDrawable(R.drawable.circle_green));
110+
}
111+
else {
112+
mesh_card_detail.setText(R.string.rescan_or_buy);
113+
mesh_card_detail_title.setText(R.string.no_mesh_device_detected);
114+
status_img_mesh.setImageDrawable(getResources().getDrawable(R.drawable.circle_red));
115+
}
116+
117+
if(GoTenna.tokenIsVerified()) {
118+
scan();
119+
}
120+
121+
}
122+
123+
public void setStatusText(String deviceName) {
124+
if (!deviceName.isEmpty()) {
125+
Log.d("NetworkingActivity", "connected address:" + deviceName);
126+
btRescan.setText(R.string.unpair_device);
127+
String detail = getText(R.string.mesh_device_detected2) + ": " + deviceName;
128+
mesh_card_detail.setText(detail);
129+
mesh_card_detail_title.setText(R.string.mesh_device_detected);
130+
status_img_mesh.setImageDrawable(getResources().getDrawable(R.drawable.circle_green));
131+
}
132+
else {
133+
btRescan.setText(R.string.pair_device);
134+
mesh_card_detail.setText(R.string.rescan_or_buy);
135+
mesh_card_detail_title.setText(R.string.no_mesh_device_detected);
136+
status_img_mesh.setImageDrawable(getResources().getDrawable(R.drawable.circle_red));
137+
}
138+
139+
btRescan.setEnabled(true);
140+
130141
}
131142

132143
private void changeState(){
133144
TransitionManager.beginDelayedTransition((ViewGroup) ConstraintGroup.getParent(), new ChangeBounds());
134145

135146
int visibility = ConstraintGroup.getVisibility() == View.VISIBLE ? View.GONE : View.VISIBLE;
136147
ConstraintGroup.setVisibility(visibility);
137-
138-
if (visibility == View.GONE) {
139-
status_img_mesh.setImageDrawable(getResources().getDrawable(R.drawable.circle_green));
140-
mesh_card_detail_title.setText(R.string.mesh_device_detected2);
141-
}else{
142-
status_img_mesh.setImageDrawable(getResources().getDrawable(R.drawable.circle_red));
143-
mesh_card_detail_title.setText(R.string.no_mesh_device_detected);
144-
}
145148
}
146149

147150
private boolean hasBluetoothPermisson() {
@@ -174,4 +177,21 @@ private void requestLocationPermission() {
174177

175178
}
176179

180+
private void scan() {
181+
182+
if(!hasBluetoothPermisson()) {
183+
requestBluetoothPermission();
184+
}
185+
if(!hasLocationpermission()) {
186+
requestLocationPermission();
187+
}
188+
189+
if(hasLocationpermission() && hasBluetoothPermisson()) {
190+
goTennaUtil.getInstance(NetworkingActivity.this).connect(NetworkingActivity.this);
191+
btRescan.setText(R.string.mesh_device_scanning);
192+
btRescan.setEnabled(false);
193+
}
194+
195+
}
196+
177197
}

app/src/main/java/com/samourai/txtenna/payload/PayloadFactory.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -542,8 +542,8 @@ public void writeBroadcastLog() throws IOException, JSONException {
542542

543543
public void readBroadcastLog() throws IOException, JSONException {
544544
JSONObject obj = deserialize();
545-
Log.d("PayloadFactory", "reading:" + obj.toString());
546545
if(obj != null && obj.has("logs")) {
546+
Log.d("PayloadFactory", "reading:" + obj.toString());
547547
BroadcastLogUtil.getInstance().fromJSON(obj.getJSONArray("logs"));
548548
}
549549
}

0 commit comments

Comments
 (0)