我正在通过Android应用程序使用Nest Camera API,但遇到了我最初认为与隐私有关的问题,但我不正确。 具体来说,我在这里的API中的Camera类存在问题:https://github.com/nestlabs/android-sdk/blob/master/sdk/src/main/java/com/nestlabs/sdk/models/Camera.java
我的问题出现在以下代码片段中:
private void startWithListeners(NestToken token) {
// Listen for and handle updates from camera(s) and structure.
wwnClient.addListener(new NestListener.GlobalListener() {
@Override
public void onUpdate(@NonNull GlobalUpdate update) {
mCamera = update.getCameras().get(0);
Log.d(TAG, mCamera.getLastEvent() + " \n\n");
if (mCamera.getLastEvent().getHasPerson()) {
Log.d(TAG, "Camera has person ");
}
else { Log.d(TAG, "Camera does not have person");
}
mStructure = update.getStructures().get(0);
updateViews();
}
});
}
我能够成功访问mCamera中的LastEvent对象而不会出错,并且可以打印它以查看我要访问的所有属性(包括has_person),但是调用LastEvent类的getHasPerson()方法会导致以下错误:
error: getHasPerson() in LastEvent is defined in an inaccessible class or interface
LastEvent的getHasPerson方法是公共的,但LastEvent在Camera对象中是私有的,因此我怀疑这是问题所在,并制作了以下简化示例进行复制:
TestCamera.java:
import com.fasterxml.jackson.annotation.JsonGetter;
import com.fasterxml.jackson.annotation.JsonProperty;
public class TestCamera {
@JsonProperty("last_event")
private TestLastEvent mA = new TestLastEvent();
public TestCamera() {
}
@JsonGetter("last_event")
public TestLastEvent getTestLastEvent() {
return this.mA;
}
}
TestLastEvent.java:
import com.fasterxml.jackson.annotation.JsonGetter;
import com.fasterxml.jackson.annotation.JsonProperty;
public class TestLastEvent {
@JsonProperty("has_person")
private Boolean has_person = true;
public TestLastEvent() {
}
@JsonGetter("has_person")
public Boolean getHasPerson() {
return this.has_person;
}
}
Test.java:
public class Test {
public TestCamera mCamera = new TestCamera();
public Test() {
mCamera.getTestLastEvent();
mCamera.getTestLastEvent().getHasPerson();
}
}
没有抛出任何错误,所以我的猜想是错误的。
因此,我怀疑Camera类及其对LastEvent类的使用缺少一些东西,但我无法弄清楚。