Bluetoothベースのマルチセンサー(SensorDrone)に接続するアプリを開発しています。合計約 15 個のセンサーが含まれており、そのすべてが、チップのメーカーが作成したサードパーティのクローズド ソース ライブラリを使用して Android デバイスと通信できます。
サードパーティ ライブラリでは、データが使用可能になったときに起動される各センサーの関数を含むカスタム Java EventListener を実装する必要があります。
DroneEventListener droneEventListener = new DroneEventListener() {
@Override
public void temperatureMeasured(EventObject arg0) {
readTemperatureFromDrone();
}
@Override
public void pressureMeasured(EventObject arg0) { /*...*/ }
// Etc...
@Override
public void disconnectEvent(EventObject arg0) {
// Let the user know the bluetooth connection was lost
}
@Override
public void connectEvent(EventObject arg0) {
// Let the user know the device was connected
}
};
ただし、funfという別のライブラリを使用して、Android の組み込みセンサーからも情報を取得したいと考えています。このライブラリは、組み込みの Android センサーと外部センサーの両方のデータを収集するのに最適です。これは、カスタムの " Probe " 実装を作成できるようにすることで実現します。ただし、プローブは (ライブラリと規則からの提案により) 一度に 1 つのセンサーにのみ使用することを意図しています。
元の質問:
それで、私の質問はこれです。DroneEventListener() クラスを特定のセンサーに分割することは可能ですか? その後、マルチセンサーの各センサーのカスタム プローブを簡単に作成できました。
概念的には開発者の契約であるため、抽象クラスを細分化しようとするのは悪い習慣である可能性があることを認識しています。ただし、このコードを既存の信頼性の高い適切に管理されたライブラリ ( funf ) で動作させるための軽度のハックは、それだけの価値があると思います。
あるいは、製造元のライブラリを funf で使用できるようにする他の創造的なソリューションはありますか?
編集 (2013 年 6 月 24 日):
「細分化」という表現の使用は、私だけが理解できるものであると判断しました。私は基本的に、使用していたのが 1 つしかないときに 20 代の空のメソッドを実装したくないということを意味していました。選択した答えは、それを行う方法を正確に説明しています。
洗練された質問:
乱雑な空のメソッドを実装することなく、EventListener (複数の関数を持つ) から 1 つの関数だけを実装することは可能ですか?