안드로이드 나침반 구현
4
private Sensor sensor;
private SensorManager sensorManager;
private ImageView ivCompass;//
private float fromDegrees = 0f, toDegrees;// 、
@Override
protected void onResume() {
super.onResume();
sensorManager = (SensorManager) getSystemService(SENSOR_SERVICE);
// getDefaultSensor
sensor = sensorManager.getDefaultSensor(Sensor.TYPE_ORIENTATION);
// ,
sensorManager.registerListener(this, sensor, SensorManager.SENSOR_DELAY_NORMAL);
}
app 실행 효율을 높이기 위해 이 코드를 onResume () 방법에 놓고 인터페이스를 보여줄 때만 실행합니다
2.Activity가 Sensor Event Listener를 실현하고 onSensor Changed와 onAccuracy Changed 방법을 복사하도록 한다. 우리는 onSensor Changed 방법에서 논리를 보완하기만 하면 된다.
@Override
public void onSensorChanged(SensorEvent sensorEvent) {
switch (sensorEvent.sensor.getType()){
case Sensor.TYPE_ORIENTATION:
// , ,
toDegrees = -sensorEvent.values[0];
// , 0;
RotateAnimation ra = new RotateAnimation(fromDegrees, toDegrees, Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF, 0.5f);
// 200
ra.setDuration(200);
ra.setFillAfter(true);
ivCompass.startAnimation(ra);
fromDegrees = toDegrees;
break;
}
}
setFillAfter 매개 변수는true: 애니메이션이 끝날 때마다 끝날 때의false: 애니메이션이 끝날 때마다 애니메이션이 시작할 때의 모습으로 돌아갑니다
3. App이 현재 인터페이스를 종료할 때 센서 사용을 멈추도록 onPause() 방법에 추가
@Override
protected void onPause() {
super.onPause();
sensorManager.unregisterListener(this);
}
파라미터는this, 즉 모든 감청기를 취소하기 위해 다른 파라미터는 어떤 감청기를 선택할 수 있습니다
이 모든 것을 다 한 후에도 앱이 실행되지 않는다면
너의 낡은 기회를 버려라.나침반 센서도 없다!!!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.