Skip to content

Commit 460adff

Browse files
committed
put SDK update in a thread, seems to solve UI freeze, enable BT
debugging when selecting watch face.
1 parent bb54393 commit 460adff

File tree

3 files changed

+79
-43
lines changed

3 files changed

+79
-43
lines changed

src/processing/mode/android/AndroidBuild.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,11 @@ class AndroidBuild extends JavaBuild {
5252

5353
// static final String basePackage = "changethispackage.beforesubmitting.tothemarket";
5454
static final String basePackage = "processing.test";
55+
static public final int min_sdk_fragment = 14; // Ice Cream Sandwich
56+
static public final int min_sdk_wallpaper = 14;
57+
static public final int min_sdk_watchface = 21; // Lillipop
58+
static public final int min_sdk_cardboard = 19; // Kitkat
59+
5560
static String sdkName = "5.0";
5661
static String sdkVersion = "21"; // Android 5.0 (Lollipop)
5762
static String sdkTarget = "android-" + sdkVersion;

src/processing/mode/android/AndroidEditor.java

Lines changed: 61 additions & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -75,6 +75,10 @@ public UpdateDeviceListTask(JMenu deviceMenu) {
7575
@Override
7676
public void run() {
7777
if (androidMode == null || androidMode.getSDK() == null) return;
78+
79+
if (AndroidBuild.publishOption == AndroidBuild.WATCHFACE) {
80+
Devices.enableBlueToothDebugging();
81+
}
7882

7983
final Devices devices = Devices.getInstance();
8084
java.util.List<Device> deviceList = devices.findMultiple(false);
@@ -144,6 +148,44 @@ public void actionPerformed(ActionEvent e) {
144148
}
145149
}
146150
}
151+
152+
153+
class UpdateSDKListTask extends TimerTask {
154+
155+
private JMenu sdkMenu;
156+
157+
public UpdateSDKListTask(JMenu sdkMenu) {
158+
this.sdkMenu = sdkMenu;
159+
}
160+
161+
@Override
162+
public void run() {
163+
while (androidMode == null || androidMode.getSDK() == null) {
164+
try {
165+
Thread.sleep(3000);
166+
} catch (InterruptedException e) {
167+
e.printStackTrace();
168+
}
169+
updateSdkMenu(sdkMenu);
170+
}
171+
172+
/*
173+
new Thread() {
174+
@Override
175+
public void run() {
176+
while(androidMode == null || androidMode.getSDK() == null) {
177+
try {
178+
Thread.sleep(3000);
179+
} catch (InterruptedException e) {
180+
e.printStackTrace();
181+
}
182+
}
183+
updateSdkMenu(sdkMenu);
184+
}
185+
}.start();
186+
*/
187+
}
188+
}
147189

148190

149191
public EditorToolbar createToolbar() {
@@ -275,59 +317,35 @@ public void actionPerformed(ActionEvent e) {
275317
menu.add(watchfaceItem);
276318

277319
menu.addSeparator();
278-
279-
280-
/*item = new JMenuItem("Signing Key Setup");
281-
item.addActionListener(new ActionListener() {
282-
public void actionPerformed(ActionEvent e) {
283-
new Keys(AndroidEditor.this);
284-
}
285-
});
286-
item.setEnabled(false);
287-
menu.add(item); */
288320

289321
final JMenu mobDeveMenu = new JMenu("Devices");
290322

291323
JMenuItem noMobDevItem = new JMenuItem("No connected devices");
292324
noMobDevItem.setEnabled(false);
293325
mobDeveMenu.add(noMobDevItem);
294326
menu.add(mobDeveMenu);
295-
327+
296328
// start updating device menus
297-
UpdateDeviceListTask task = new UpdateDeviceListTask(mobDeveMenu);
298-
java.util.Timer timer = new java.util.Timer();
299-
timer.schedule(task, 5000, 5000);
300-
301-
// final JMenu wearDevMenu = new JMenu("Select wearable device");
302-
//
303-
// JMenuItem noWearDevicesItem = new JMenuItem("No connected devices");
304-
// noWearDevicesItem.setEnabled(false);
305-
// wearDevMenu.add(noWearDevicesItem);
306-
// menu.add(wearDevMenu);
329+
UpdateDeviceListTask devTask = new UpdateDeviceListTask(mobDeveMenu);
330+
java.util.Timer devTimer = new java.util.Timer();
331+
devTimer.schedule(devTask, 5000, 5000);
307332

308333
menu.addSeparator();
309334

310335
// TODO: The SDK selection menu will be removed once app publishing is fully
311-
// functional (correct SDK level can be inferred from app type (fragment,
312-
// wallpaper, etc).
313-
final JMenu sdkMenu = new JMenu("Select target SDK");
314-
JMenuItem defaultItem = new JCheckBoxMenuItem("No available targets");
315-
defaultItem.setEnabled(false);
316-
sdkMenu.add(defaultItem);
317-
318-
new Thread() {
319-
@Override
320-
public void run() {
321-
while(androidMode == null || androidMode.getSDK() == null) {
322-
try {
323-
Thread.sleep(3000);
324-
} catch (InterruptedException e) {
325-
e.printStackTrace();
326-
}
327-
}
328-
updateSdkMenu(sdkMenu);
329-
}
330-
}.start();
336+
// functional: correct minimum SDK level can be inferred from app type
337+
// (fragment, wallpaper, etc), and target SDK from the highest available in
338+
// the SDK.
339+
final JMenu sdkMenu = new JMenu("Target SDK");
340+
341+
JMenuItem noAvailSDKItem = new JCheckBoxMenuItem("No available targets");
342+
noAvailSDKItem.setEnabled(false);
343+
sdkMenu.add(noAvailSDKItem);
344+
menu.add(sdkMenu);
345+
346+
UpdateSDKListTask sdkTask = new UpdateSDKListTask(sdkMenu);
347+
java.util.Timer sdkTimer = new java.util.Timer();
348+
sdkTimer.schedule(sdkTask, 500, 5000);
331349

332350
menu.add(sdkMenu);
333351

@@ -381,8 +399,8 @@ private void updateSdkMenu(final JMenu sdkMenu) {
381399
boolean savedTargetSet = false;
382400

383401
for (final AndroidSDK.SDKTarget target : targets) {
384-
if (target.version < 11) {
385-
//We do not support API level less than 11
402+
if (target.version < 19) {
403+
//We do not support API level less than 19
386404
continue;
387405
}
388406

src/processing/mode/android/Devices.java

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,8 @@ class Devices {
2626

2727
private static final Devices INSTANCE = new Devices();
2828

29+
private static final String BT_DEBUG_PORT = "4444";
30+
2931
private Device selectedDevice;
3032

3133
public static Devices getInstance() {
@@ -56,6 +58,17 @@ public static void killAdbServer() {
5658
}
5759
}
5860

61+
public static void enableBlueToothDebugging() {
62+
try {
63+
// Enable debugging over bluetooth
64+
// http://developer.android.com/training/wearables/apps/bt-debugging.html
65+
AndroidSDK.runADB("forward", "tcp:" + BT_DEBUG_PORT, "localabstract:/adb-hub");
66+
AndroidSDK.runADB("connect", "127.0.0.1:" + BT_DEBUG_PORT);
67+
} catch (final Exception e) {
68+
e.printStackTrace();
69+
}
70+
}
71+
5972

6073
private Devices() {
6174
if (processing.app.Base.DEBUG) {

0 commit comments

Comments
 (0)