Skip to content

Commit 9cb2fd7

Browse files
committed
Fix Android's lies
1 parent d9202c8 commit 9cb2fd7

File tree

6 files changed

+33
-3
lines changed

6 files changed

+33
-3
lines changed

demo/app/tests/internal/activity-recognition/recognizers/low-res/android/recognizer.android.ts

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -85,6 +85,9 @@ describe("Android low resolution activity recognizer", () => {
8585

8686
it("allows to start the recognition by activating the underlying subsystem", async () => {
8787
spyOn(recognizerManager, "startListening");
88+
spyOn(recognizerState, "isActive")
89+
.withArgs(recognizerType)
90+
.and.returnValue(Promise.resolve(false));
8891
await recognizer.startRecognizing(startOptions);
8992
expect(recognizerManager.startListening).toHaveBeenCalled();
9093
expect(recognizerState.markAsActive).toHaveBeenCalledWith(
@@ -93,6 +96,16 @@ describe("Android low resolution activity recognizer", () => {
9396
);
9497
});
9598

99+
it("allows to restart the recognition without overwriting existing state", async () => {
100+
spyOn(recognizerManager, "startListening");
101+
spyOn(recognizerState, "isActive")
102+
.withArgs(recognizerType)
103+
.and.returnValue(Promise.resolve(true));
104+
await recognizer.startRecognizing(startOptions);
105+
expect(recognizerManager.startListening).toHaveBeenCalled();
106+
expect(recognizerState.markAsActive).not.toHaveBeenCalled();
107+
});
108+
96109
it("does not mark the recognizer as active if the activation fails", async () => {
97110
const listenError = new Error("Could not start listening");
98111
spyOn(recognizerManager, "startListening").and.rejectWith(listenError);

demo/app/tests/internal/activity-recognition/recognizers/medium-res/android/recognizer.android.ts

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -85,6 +85,9 @@ describe("Android medium resolution activity recognizer", () => {
8585

8686
it("allows to start the recognition by activating the underlying subsystem", async () => {
8787
spyOn(recognizerManager, "startListening");
88+
spyOn(recognizerState, "isActive")
89+
.withArgs(recognizerType)
90+
.and.returnValue(Promise.resolve(false));
8891
await recognizer.startRecognizing(startOptions);
8992
expect(recognizerManager.startListening).toHaveBeenCalled();
9093
expect(recognizerState.markAsActive).toHaveBeenCalledWith(
@@ -93,6 +96,16 @@ describe("Android medium resolution activity recognizer", () => {
9396
);
9497
});
9598

99+
it("allows to restart the recognition without overwriting existing state", async () => {
100+
spyOn(recognizerManager, "startListening");
101+
spyOn(recognizerState, "isActive")
102+
.withArgs(recognizerType)
103+
.and.returnValue(Promise.resolve(true));
104+
await recognizer.startRecognizing(startOptions);
105+
expect(recognizerManager.startListening).toHaveBeenCalled();
106+
expect(recognizerState.markAsActive).not.toHaveBeenCalled();
107+
});
108+
96109
it("does not mark the recognizer as active if the activation fails", async () => {
97110
const listenError = new Error("Could not start listening");
98111
spyOn(recognizerManager, "startListening").and.rejectWith(listenError);

src/internal/activity-recognition/recognizers/abstract-manager.android.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ export abstract class AndroidAbstractRecognizerManager
4646

4747
async startListening(options: StartOptions = {}): Promise<void> {
4848
if (this.isUp()) {
49-
return;
49+
await this.stopListening();
5050
}
5151

5252
if (!this.isReady()) {

src/internal/activity-recognition/recognizers/abstract-recognizer.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,10 @@ export abstract class AbstractActivityRecognizer implements ActivityRecognizer {
3333

3434
async startRecognizing(options: StartOptions = {}): Promise<void> {
3535
await this.recognitionManager.startListening(options);
36+
const active = await this.recognizerState.isActive(this.recognizerType);
37+
if (active) {
38+
return;
39+
}
3640
await this.recognizerState.markAsActive(this.recognizerType, options);
3741
}
3842

src/package-lock.json

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "nativescript-context-apis",
3-
"version": "1.0.1",
3+
"version": "1.0.2",
44
"description": "Painless access to contextual information for your NativeScript apps",
55
"main": "context-apis",
66
"typings": "index.d.ts",

0 commit comments

Comments
 (0)