Skip to content

Commit dd7e182

Browse files
committed
refactoring to properly isolate default from wear emulators, and other
details
1 parent 4d7bb90 commit dd7e182

File tree

10 files changed

+171
-102
lines changed

10 files changed

+171
-102
lines changed

src/processing/mode/android/AVD.java

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -294,12 +294,18 @@ protected boolean create(final AndroidSDK sdk) throws IOException {
294294
return false;
295295
}
296296

297-
297+
static public String getPort(boolean wear) {
298+
if (wear) {
299+
return EmulatorController.WEAR_PORT;
300+
} else {
301+
return EmulatorController.DEFAULT_PORT;
302+
}
303+
}
298304

299305
static public boolean ensureProperAVD(final Frame window, final AndroidMode mode,
300-
final AndroidSDK sdk) {
306+
final AndroidSDK sdk, boolean wear) {
301307
try {
302-
if (AndroidBuild.appComponent == AndroidBuild.WATCHFACE) {
308+
if (wear) {
303309
if (wearAVD.exists(sdk)) {
304310
return true;
305311
}

src/processing/mode/android/AndroidBuild.java

Lines changed: 34 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -69,8 +69,8 @@ class AndroidBuild extends JavaBuild {
6969
static public final String target_sdk = "23"; // Marshmallow (6.0)
7070
static public final String target_platform = "android-" + target_sdk;
7171

72-
static public int appComponent = FRAGMENT;
73-
static boolean forceNewManifest = false;
72+
private int appComponent = FRAGMENT;
73+
static boolean forceNewManifest = false; // TODO: this is just temporary, need to remove
7474

7575
private String renderer = "";
7676

@@ -88,30 +88,22 @@ class AndroidBuild extends JavaBuild {
8888
private File buildFile;
8989

9090

91-
public AndroidBuild(final Sketch sketch, final AndroidMode mode) {
91+
public AndroidBuild(final Sketch sketch, final AndroidMode mode, final int appComp) {
9292
super(sketch);
9393

94+
appComponent = appComp;
9495
sdk = mode.getSDK();
9596
coreZipFile = mode.getCoreZipLocation();
9697
}
97-
98-
public static void setPublishOption(int opt, Sketch sketch) {
99-
if (appComponent != opt) {
100-
appComponent = opt;
101-
forceNewManifest = true;
102-
} else {
103-
forceNewManifest = false;
104-
}
105-
}
10698

107-
public static void setSdkTarget(AndroidSDK.SDKTarget target, Sketch sketch) {
99+
// public static void setSdkTarget(AndroidSDK.SDKTarget target, Sketch sketch) {
108100
// sdkName = target.name;
109101
// sdkVersion = Integer.toString(target.version);
110102
// sdkTarget = "android-" + sdkVersion;
111103
//
112104
// Preferences.set("android.sdk.version", target_);
113105
// Preferences.set("android.sdk.name", target.name);
114-
}
106+
// }
115107

116108
/**
117109
* Build into temporary folders (needed for the Windows 8.3 bugs in the Android SDK).
@@ -173,7 +165,7 @@ public File createProject() throws IOException, SketchException {
173165
Platform.openFolder(tmpFolder);
174166
}
175167

176-
manifest = new Manifest(sketch);
168+
manifest = new Manifest(sketch, appComponent);
177169
manifest.setSdkTarget(target_sdk);
178170
forceNewManifest = false;
179171

@@ -217,7 +209,7 @@ public File createProject() throws IOException, SketchException {
217209
copyLibraries(libsFolder, assetsFolder);
218210
copyCodeFolder(libsFolder);
219211

220-
if (appComponent == WATCHFACE) {
212+
if (getAppComponent() == WATCHFACE) {
221213
// TODO: temporary hack until I find a better way to include the wearable aar
222214
// package included in the SDK:
223215

@@ -226,7 +218,7 @@ public File createProject() throws IOException, SketchException {
226218
Util.copyFile(wearJarFile, new File(libsFolder, "wearable-1.3.0-classes.jar"));
227219
}
228220

229-
if (appComponent == CARDBOARD) {
221+
if (getAppComponent() == CARDBOARD) {
230222
// TODO: temporary hack until I find a better way to include the cardboard aar
231223
// packages included in the cardboard SDK:
232224

@@ -410,6 +402,23 @@ private File createTempBuildFolder(final Sketch sketch) throws IOException {
410402
return tmp;
411403
}
412404

405+
public boolean isWear() {
406+
return appComponent == WATCHFACE;
407+
}
408+
409+
410+
public int getAppComponent() {
411+
return appComponent;
412+
}
413+
414+
public void setAppComponent(int opt) {
415+
if (appComponent != opt) {
416+
appComponent = opt;
417+
forceNewManifest = true;
418+
} else {
419+
forceNewManifest = false;
420+
}
421+
}
413422

414423
protected boolean usesGPU() {
415424
return renderer != null && (renderer.equals("P2D") || renderer.equals("P3D"));
@@ -965,7 +974,8 @@ private void writeRes(File resFolder,
965974
File mainActivityLayoutFile = new File(layoutFolder, "main.xml");
966975
writeResLayoutMainActivity(mainActivityLayoutFile);
967976

968-
if (appComponent == WALLPAPER) {
977+
int comp = getAppComponent();
978+
if (comp == WALLPAPER) {
969979
File xmlFolder = mkdirs(resFolder, "xml");
970980
File mainServiceWallpaperFile = new File(xmlFolder, "wallpaper.xml");
971981
writeResXMLWallpaper(mainServiceWallpaperFile);
@@ -1078,7 +1088,7 @@ private void writeRes(File resFolder,
10781088
}
10791089

10801090

1081-
if (appComponent == WATCHFACE) {
1091+
if (comp == WATCHFACE) {
10821092
File xmlFolder = mkdirs(resFolder, "xml");
10831093
File mainServiceWatchFaceFile = new File(xmlFolder, "watch_face.xml");
10841094
writeResXMLWatchFace(mainServiceWatchFaceFile);
@@ -1153,17 +1163,18 @@ private File mkdirs(final File parent, final String name) throws SketchException
11531163

11541164

11551165
private void writeMainClass(final File srcDirectory, String renderer) {
1156-
if (appComponent == FRAGMENT) {
1166+
int comp = getAppComponent();
1167+
if (comp == FRAGMENT) {
11571168
writeFragmentActivity(srcDirectory);
1158-
} else if (appComponent == WALLPAPER) {
1169+
} else if (comp == WALLPAPER) {
11591170
writeWallpaperService(srcDirectory);
1160-
} else if (appComponent == WATCHFACE) {
1171+
} else if (comp == WATCHFACE) {
11611172
if (usesGPU()) {
11621173
writeWatchFaceGLESService(srcDirectory);
11631174
} else {
11641175
writeWatchFaceCanvasService(srcDirectory);
11651176
}
1166-
} else if (appComponent == CARDBOARD) {
1177+
} else if (comp == CARDBOARD) {
11671178
writeCardboardActivity(srcDirectory);
11681179
}
11691180
}

src/processing/mode/android/AndroidEditor.java

Lines changed: 19 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,8 @@
4949

5050
@SuppressWarnings("serial")
5151
public class AndroidEditor extends JavaEditor {
52+
private int appComponent = AndroidBuild.FRAGMENT;
53+
5254
private AndroidMode androidMode;
5355

5456
private java.util.Timer updateDevicesTimer;
@@ -78,7 +80,7 @@ public UpdateDeviceListTask(JMenu deviceMenu) {
7880
public void run() {
7981
if (androidMode == null || androidMode.getSDK() == null) return;
8082

81-
if (AndroidBuild.appComponent == AndroidBuild.WATCHFACE) {
83+
if (appComponent == AndroidBuild.WATCHFACE) {
8284
Devices.enableBlueToothDebugging();
8385
}
8486

@@ -213,7 +215,7 @@ public JMenu buildModeMenu() {
213215
item = new JMenuItem("Sketch Permissions");
214216
item.addActionListener(new ActionListener() {
215217
public void actionPerformed(ActionEvent e) {
216-
new Permissions(sketch);
218+
new Permissions(sketch, appComponent);
217219
}
218220
});
219221
menu.add(item);
@@ -228,45 +230,45 @@ public void actionPerformed(ActionEvent e) {
228230
fragmentItem.addActionListener(new ActionListener() {
229231
@Override
230232
public void actionPerformed(ActionEvent e) {
231-
AndroidBuild.setPublishOption(AndroidBuild.FRAGMENT, sketch);
233+
appComponent = AndroidBuild.FRAGMENT;
232234
fragmentItem.setState(true);
233235
wallpaperItem.setState(false);
234236
watchfaceItem.setSelected(false);
235237
cardboardItem.setSelected(false);
236-
androidMode.showSelectComponentMessage();
238+
androidMode.showSelectComponentMessage(AndroidBuild.FRAGMENT);
237239
}
238240
});
239241
wallpaperItem.addActionListener(new ActionListener() {
240242
@Override
241243
public void actionPerformed(ActionEvent e) {
242-
AndroidBuild.setPublishOption(AndroidBuild.WALLPAPER, sketch);
244+
appComponent = AndroidBuild.WALLPAPER;
243245
fragmentItem.setState(false);
244246
wallpaperItem.setState(true);
245247
watchfaceItem.setSelected(false);
246248
cardboardItem.setSelected(false);
247-
androidMode.showSelectComponentMessage();
249+
androidMode.showSelectComponentMessage(AndroidBuild.WALLPAPER);
248250
}
249251
});
250252
watchfaceItem.addActionListener(new ActionListener() {
251253
@Override
252254
public void actionPerformed(ActionEvent e) {
253-
AndroidBuild.setPublishOption(AndroidBuild.WATCHFACE, sketch);
255+
appComponent = AndroidBuild.WATCHFACE;
254256
fragmentItem.setState(false);
255257
wallpaperItem.setState(false);
256258
watchfaceItem.setSelected(true);
257259
cardboardItem.setSelected(false);
258-
androidMode.showSelectComponentMessage();
260+
androidMode.showSelectComponentMessage(AndroidBuild.WATCHFACE);
259261
}
260262
});
261263
cardboardItem.addActionListener(new ActionListener() {
262264
@Override
263265
public void actionPerformed(ActionEvent e) {
264-
AndroidBuild.setPublishOption(AndroidBuild.CARDBOARD, sketch);
266+
appComponent = AndroidBuild.CARDBOARD;
265267
fragmentItem.setState(false);
266268
wallpaperItem.setState(false);
267269
watchfaceItem.setSelected(false);
268270
cardboardItem.setSelected(true);
269-
androidMode.showSelectComponentMessage();
271+
androidMode.showSelectComponentMessage(AndroidBuild.CARDBOARD);
270272
}
271273
});
272274

@@ -614,7 +616,7 @@ public void run() {
614616
startIndeterminate();
615617
prepareRun();
616618
try {
617-
androidMode.handleRunDevice(sketch, AndroidEditor.this);
619+
androidMode.handleRunDevice(sketch, AndroidEditor.this, AndroidEditor.this);
618620
} catch (SketchException e) {
619621
statusError(e);
620622
} catch (IOException e) {
@@ -647,7 +649,7 @@ public void run() {
647649
((AndroidToolbar) toolbar).activateExport();
648650
startIndeterminate();
649651
statusNotice("Exporting a debug version of the sketch...");
650-
AndroidBuild build = new AndroidBuild(sketch, androidMode);
652+
AndroidBuild build = new AndroidBuild(sketch, androidMode, appComponent);
651653
try {
652654
File exportFolder = build.exportProject();
653655
if (exportFolder != null) {
@@ -694,7 +696,7 @@ public void startExportPackage(final String keyStorePassword) {
694696
public void run() {
695697
startIndeterminate();
696698
statusNotice("Exporting signed package...");
697-
AndroidBuild build = new AndroidBuild(sketch, androidMode);
699+
AndroidBuild build = new AndroidBuild(sketch, androidMode, appComponent);
698700
try {
699701
File projectFolder = build.exportPackage(keyStorePassword);
700702
if (projectFolder != null) {
@@ -716,4 +718,8 @@ public void run() {
716718
}
717719
}.start();
718720
}
721+
722+
public int getAppComponent() {
723+
return appComponent;
724+
}
719725
}

src/processing/mode/android/AndroidMode.java

Lines changed: 14 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -260,12 +260,13 @@ public void handleRunEmulator(Sketch sketch, AndroidEditor editor,
260260
RunnerListener listener) throws SketchException, IOException {
261261
listener.startIndeterminate();
262262
listener.statusNotice("Starting build...");
263-
AndroidBuild build = new AndroidBuild(sketch, this);
263+
AndroidBuild build = new AndroidBuild(sketch, this, editor.getAppComponent());
264264

265265
listener.statusNotice("Building Android project...");
266266
build.build("debug");
267+
267268

268-
boolean avd = AVD.ensureProperAVD(editor, this, sdk);
269+
boolean avd = AVD.ensureProperAVD(editor, this, sdk, build.isWear());
269270
if (!avd) {
270271
SketchException se =
271272
new SketchException("Could not create a virtual device for the emulator.");
@@ -275,11 +276,13 @@ public void handleRunEmulator(Sketch sketch, AndroidEditor editor,
275276

276277
listener.statusNotice("Running sketch on emulator...");
277278
runner = new AndroidRunner(build, listener);
278-
runner.launch(Devices.getInstance().getEmulator(build.usesGPU()));
279+
runner.launch(Devices.getInstance().getEmulator(build.isWear(), build.usesGPU()),
280+
build.isWear());
279281
}
280282

281283

282-
public void handleRunDevice(Sketch sketch, RunnerListener listener)
284+
public void handleRunDevice(Sketch sketch, AndroidEditor editor,
285+
RunnerListener listener)
283286
throws SketchException, IOException {
284287

285288
final Devices devices = Devices.getInstance();
@@ -296,20 +299,20 @@ public void handleRunDevice(Sketch sketch, RunnerListener listener)
296299

297300
listener.startIndeterminate();
298301
listener.statusNotice("Starting build...");
299-
AndroidBuild build = new AndroidBuild(sketch, this);
302+
AndroidBuild build = new AndroidBuild(sketch, this, editor.getAppComponent());
300303

301304
listener.statusNotice("Building Android project...");
302305
build.build("debug");
303306

304307
listener.statusNotice("Running sketch on device...");
305308
runner = new AndroidRunner(build, listener);
306-
runner.launch(Devices.getInstance().getHardware());
309+
runner.launch(Devices.getInstance().getHardware(), build.isWear());
307310

308-
showPostBuildMessage();
311+
showPostBuildMessage(build.getAppComponent());
309312
}
310313

311-
public void showSelectComponentMessage() {
312-
if (showBluetoothDebugMessage && AndroidBuild.appComponent == AndroidBuild.WATCHFACE) {
314+
public void showSelectComponentMessage(int appComp) {
315+
if (showBluetoothDebugMessage && appComp == AndroidBuild.WATCHFACE) {
313316
Messages.showMessage("Is Debugging over Bluetooth enabled?",
314317
"Processing will access the wearable through the handheld paired to it.\n" +
315318
"Make sure to enable \"Debugging over Bluetooth\" for this to work:\n" +
@@ -318,8 +321,8 @@ public void showSelectComponentMessage() {
318321
}
319322
}
320323

321-
public void showPostBuildMessage() {
322-
if (showWallpaperSelectMessage && AndroidBuild.appComponent == AndroidBuild.WALLPAPER) {
324+
public void showPostBuildMessage(int appComp) {
325+
if (showWallpaperSelectMessage && appComp == AndroidBuild.WALLPAPER) {
323326
Messages.showMessage("Now select the wallpaper...",
324327
"Processing built and installed your sketch\n" +
325328
"as a live wallpaper on the selected device.\n" +

src/processing/mode/android/AndroidRunner.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,7 @@ public AndroidRunner(AndroidBuild build, RunnerListener listener) {
5959
}
6060

6161

62-
public void launch(Future<Device> deviceFuture) {
62+
public void launch(Future<Device> deviceFuture, boolean wear) {
6363
// try {
6464
// runSketchOnDevice(Devices.getInstance().getEmulator(), "debug", AndroidEditor.this);
6565
// } catch (final MonitorCanceled ok) {
@@ -78,7 +78,7 @@ public void launch(Future<Device> deviceFuture) {
7878
return;
7979
}
8080

81-
if (AndroidBuild.appComponent == AndroidBuild.WATCHFACE && !device.hasFeature("watch")) {
81+
if (wear && !device.hasFeature("watch")) {
8282
Messages.showWarning("Device is not a watch!",
8383
"Processing built your sketch as a watch face, but\n" +
8484
"you selected a non-watch device to install it on.\n" +

0 commit comments

Comments
 (0)