1

デジタルコンパスからデータを読み取るアプリケーションを作成しようとしています。書籍ProfessionalAndroidApplication Developmentのコードを再利用しようとしましたが、IDEにメモが表示されました

タイプSensorListenerは非推奨です

この本のコードは以前のSDKバージョン用に記述されているためだと思います。そのため、代わりにSensorEventListenerを使用しようとしました。

それからリスナーを登録しようとしたら

sensorManager.registerListener(sensorListener, SensorManager.SENSOR_ORIENTATION, SensorManager.SENSOR_DELAY_FASTEST);

エラーが発生しました:

タイプSensorManagerのメソッドregisterListener(SensorListener、int、int)は、引数(SensorEventListener、int、int)には適用できません。

そのため、SensorEventListenerをSensorListenerにキャストしようとしましたが、アプリケーションが機能しません。

新しいSDKバージョンでセンサーを使用する方法を知っている人はいますか?

ありがとうございました。

4

4 に答える 4

8

SensorEventListener使用する必要のある別のクラスがあります。ここを参照してください。

于 2009-12-20T13:56:41.520 に答える
6

実際には、ID だけでなく Senor オブジェクトを渡す必要があります。

Sensor sensor = sensorManager.getDefaultSensor(Sensor.TYPE_ORIENTATION); sensorManager.registerListener(sensorListener, sensor, SensorManager.SENSOR_DELAY_FASTEST)

于 2009-12-21T16:01:16.090 に答える
1

このメソッドは非推奨になりました。使用する必要があります

registerListener(SensorEventListener, Sensor, int) 

代わりは。

于 2011-10-17T23:38:36.250 に答える
1

私は同じ問題を抱えていましたが、最初の 2 つのパラメーターを (SensorEventListener) および (Sensor) としてキャストすると、機能しました。その後、何らかの理由で Sensor を「Sensor」ではなく「Object」型として宣言したため、Eclipse がパラメーターの型を識別できなかったことが問題であることに気付きました。

これは私のために働いた:

mSensorManager.registerListener((SensorManager)this, (Sensor)mAccelerometer, SensorManager.SENSOR_DELAY_NORMAL);

しかし、mAccelerometer を Sensor 型として正しく宣言したので、キャストは不要になりました。

于 2011-12-17T14:15:59.513 に答える