Sto sviluppando l'applicazione della bussola dove voglio che la bussola indichi una particolare posizione di latitudine anziché il solito nord. Ho trovato alcuni questions relativi al mio problema ma non riesco a farli funzionare per me. Ecco il mio codice:La bussola Android punta alla mia posizione anziché a nord
public class MainActivity extends AppCompatActivity implements SensorEventListener {
private ImageView image;
private float currentDegree = 0f;
private SensorManager mSensorManager;
private TextView tvHeading;
private Location location = new Location("A");
private Location target = new Location("B");
private LocationManager locationManager;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
image = (ImageView) findViewById(R.id.imageViewCompass);
tvHeading = (TextView) findViewById(R.id.tvHeading);
mSensorManager = (SensorManager) getSystemService(SENSOR_SERVICE);
location.setLatitude(54.903535);
location.setLongitude(23.979342);
target.setLatitude(54.904618);
target.setLongitude(23.978782);
}
@Override
protected void onResume() {
super.onResume();
mSensorManager.registerListener(this, mSensorManager.getDefaultSensor(Sensor.TYPE_ORIENTATION),
SensorManager.SENSOR_DELAY_GAME);
}
@Override
protected void onPause() {
super.onPause();
mSensorManager.unregisterListener(this); // to stop the listener and save battery
}
@Override
public void onSensorChanged(SensorEvent event) {
float degree = Math.round(event.values[0]);
tvHeading.setText("Heading: " + Float.toString(degree) + " degrees");
RotateAnimation ra = new RotateAnimation(
currentDegree,
-degree,
Animation.RELATIVE_TO_SELF, 0.5f,
Animation.RELATIVE_TO_SELF,
0.5f);
ra.setDuration(210);
ra.setFillAfter(true);
image.startAnimation(ra);
currentDegree = -degree;
}
@Override
public void onAccuracyChanged(Sensor sensor, int accuracy) {
// not in use
}
}
attualmente il mio puntatore mostra solo in nord invece che nella mia posizione di destinazione harcoded.
Credo che questo non è esattamente si sta cercando ma prova la soluzione accettata per ottenere aiuto http://stackoverflow.com/questions/4308262/calculate-compass-bearing-heading-to-location-in-android. – Raghavendra