これは、エミュレータでテストしているときに、アプリケーション用のAndroidデバイスのセンサーをエミュレートするアプリケーションです。
はおそらく、あなたのアプリケーションでは、次のような行ている:あなたはSensorManagerから使用するメソッドを持つインタフェース
SensorManager mSensorManager = (SensorManager)getSystemService(SENSOR_SERVICE);
を作成しない理由:
interface MySensorManager {
List<Sensor> getSensorList(int type);
... // You will need to add all the methods you use from SensorManager here
}
をし、そのSensorManagerのラッパーを作成します実際のSensorManagerオブジェクトのメソッドを呼び出すだけです。
class MySensorManagerWrapper implements MySensorManager {
SensorManager mSensorManager;
MySensorManagerWrapper(SensorManager sensorManager) {
super();
mSensorManager = sensorManager;
}
List<Sensor> getSensorList(int type) {
return mSensorManager.getSensorList(type_;
}
... // All the methods you have in your MySensorManager interface will need to be defined here - just call the mSensorManager object like in getSensorList()
}
次に、別のMySensorManagerを作成してください
class MyFakeSensorManager implements MySensorManager {
Socket mSocket;
MyFakeSensorManager() throws UnknownHostException, IOException {
super();
// Connect to the desktop over a socket
mSocket = = new Socket("(IP address of your local machine - localhost won't work, that points to localhost of the emulator)", SOME_PORT_NUMBER);
}
List<Sensor> getSensorList(int type) {
// Use the socket you created earlier to communicate to a desktop app
}
... // Again, add all the methods from MySensorManager
}
そして最後に、あなたの最初の行に置き換えます:
:新しい行で
SensorManager mSensorManager = (SensorManager)getSystemService(SENSOR_SERVICE);
をあなたはセンサ値か何かを入力する場所作成するデスクトップアプリケーションへのソケット経由nicates
MySensorManager mSensorManager;
if(YOU_WANT_TO_EMULATE_THE_SENSOR_VALUES) {
mSensorManager = new MyFakeSensorManager();
else {
mSensorManager = new MySensorManagerWrapper((SensorManager)getSystemService(SENSOR_SERVICE));
}
これまで使用していたSensorManagerではなく、そのオブジェクトを使用することができます。
こんにちは!ご回答有難うございます。それは私が構築したいと思っているものです。私はそれを試してみて、それがどのようになったのか皆に知らせることにします。 =) – Hugo
こんにちは、これまでにソリューションを実装しましたか?私は最近それを試して問題に遭遇しましたが、新しいSensorEventオブジェクトを作成する必要がありましたが、SensorEventクラスの最後の値を設定することはできません。私がリフレクションで設定することでこれを回避しようとしたとき、SensorEventにClassNotFoundエラーが発生しました、私がcorretlyを覚えていれば... – andreas