CompassAppという名前のアプリケーションを作成しています。 Compass.javaとRose.javaの2つのクラスを作成しました。このアプリケーションは、Webサイトで説明されているチュートリアルから作成されました。これは、廃止予定のバージョンのSensorListenerを使用しています。クラスCompass.javaはこの非推奨バージョンを使用しています。非難されたバージョンを使用したとき、アプリは正常に機能しました。それから私は、私のアプリをSensorEventListenerである現在のバージョンに変換することを考えました。しかし、コンパスの回転が止まった!私は立ち往生して何をすべきかわからない。私を助けてください。SensorListenerを使用するプログラムをSensorEventListenerに変換する方法
非推奨SensorListenerインターフェース新しいSensorEventListener
public class Compass extends Activity{
SensorManager sensorManager;
SensorEventListener listener ;
static final int sensor = SensorManager.SENSOR_ORIENTATION;
Rose rose;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// Set full screen view
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FULLSCREEN);
requestWindowFeature(Window.FEATURE_NO_TITLE);
listener = new SensorEventListener()
{
@Override
public void onSensorChanged(SensorEvent e)
{
int orientation = (int) e.values[0];
rose.setDirection(orientation);
}
@Override
public void onAccuracyChanged(Sensor arg0, int arg1) {
// TODO Auto-generated method stub
}
};
setContentView(rose);
// get sensor manager
sensorManager = (SensorManager) getSystemService(SENSOR_SERVICE);
sensorManager.registerListener(listener, sensorManager.getDefaultSensor(sensor),SensorManager.SENSOR_MAGNETIC_FIELD);
}
// register to listen to sensors
@Override
public void onResume() {
super.onResume();
sensorManager.registerListener(listener, sensorManager.getDefaultSensor(sensor), SensorManager.SENSOR_MAGNETIC_FIELD);
}
// unregister
@Override
public void onPause() {
super.onPause();
sensorManager.unregisterListener(listener);
}
}
'静的最終int型sensor'は、上記で使用されていません。注意するだけで、 'Sensor.TYPE_MAGNETIC_FIELD'の代わりに' Sensor.TYPE_ORIENTATION'を使うこともできます。 – Nux
'Sensor.TYPE_ORIENTATION'はAPIレベル8以降では非推奨です。 –