저는 LibGDX를 사용하여 데스크탑/안드로이드 응용 프로그램을 만들고 있습니다. 내 응용 프로그램의 일부에서는 그것이 안드로이드 있다면 빛의 센서를 확인입니다. 이것은 내 LibGDX 프로젝트에 구현할 때를 제외하고 안드로이드에서 잘 작동합니다.이 데이터를 어떻게 전달할 수 있는지 혼란 스럽습니다.LibGDX 광 센서 데이터
SensorManager sm;
Sensor s;
float lux = 0;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
AndroidApplicationConfiguration cfg = new AndroidApplicationConfiguration();
sm = (SensorManager) getSystemService(Context.SENSOR_SERVICE);
s = sm.getDefaultSensor(Sensor.TYPE_LIGHT);
initialize(new MyLibGDXMain(), cfg);
}
@Override
public void onSensorChanged(SensorEvent event) {
lux = event.values[0];
}
여기에서 광 센서 데이터를 검색 할 수 있지만 일단 MyLibGDXMain을 초기화하면이 데이터가 손실됩니다. 해당 클래스에 SensorEventListener를 추가하면 데스크톱 버전과의 호환성이 없어집니다. 그래서 MyLibGDXMain이 lux 값을 넘겨 줄 다른 생성자를 만들려고했으나 LibGDX 응용 프로그램이 무엇을 하던지간에 중단됩니다.
이 질문은 안드로이드에서 센서 데이터를 검색하는 방법이 아니라 이 센서 데이터를 데스크톱 프로젝트와의 호환성을 손상시키지 않고 LibGDX 메인으로 가져 오는 방법은 무엇입니까?
당신은 당신의 응용 프로그램 및 플랫폼 별 코드 사이의 인터페이스를 만들어야합니다
고마워요! 확실히 이것을 곧 시도하고 당신에게 돌아갈 것입니다! 몇 가지 간단한 질문을 한 다음, 작동하는지 아닌지에 대해 자세히 알려 드리겠습니다. 내'GetCurrentLux()'메소드에서'@ Override'를 제거하라고 알려줍니다. 그것은 내가 뭘했는지 모르겠지만 그것은 오류를 제공합니다 (내가 재정의를 제거하면 잘 작동하는 것). 두 번째로 Android 및 Desktop 폴더에 동일한 이름의 AndroidLightSensor라는 두 개의 별도 클래스를 만들어야합니까? 아니면 데스크탑이라고 불리는 DummyAndroidLightSensor를 사용해야합니까? 이것에 대한 표준 관행은 무엇입니까? 마침내 인터페이스를 실제로 사용하게 된 것을 기쁘게 생각합니다. – CodeCamper
또한 올바른 방법으로 내 코드를 작성하려고합니다. 내 AndroidLightSensor에서 onResume 및 onPause를 별도로 만들고 MainActivity로 전달해야하나요? 바로 지금 AndroidLightSensor를 작성하여 리스너를 등록한 다음 MainActivity로 전달합니다. 나는 이것이 모든 선호라고 알고 있지만 약간의 조직적 조언을 원했습니다. – CodeCamper
"Remove @Override"가 이상하게 보입니다. "LightSensorInterface를 구현 한 것을 잊었습니까?일반적으로 부모 클래스에서이 클래스가 인터페이스의 클래스에서 상속 받거나 클래스의 클래스에서 상속 될 경우 해당 메소드가 없다고 말하면서 만 ... 그러나 제거하면 괜찮습니다.);) 그리고 오른쪽에있는 'LightSensorInterface'를 주 프로젝트의 어딘가에 넣으십시오. 그리고 안드로이드 프로젝트 내에서 당신은'AndroidLightSensor'를 만들 수 있고 데스크톱 프로젝트에서'DummyDesktopLightSensor' 클래스를 생성 할 수 있습니다. – evident