package org.droidplanner.android.graphic.map; import org.droidplanner.android.R; import org.droidplanner.android.maps.MarkerInfo; import android.content.res.Resources; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import com.o3dr.android.client.Drone; import com.o3dr.services.android.lib.coordinate.LatLong; import com.o3dr.services.android.lib.drone.attribute.AttributeType; import com.o3dr.services.android.lib.drone.property.Attitude; import com.o3dr.services.android.lib.drone.property.Gps; public class GraphicDrone extends MarkerInfo { private Drone drone; public GraphicDrone(Drone drone) { this.drone = drone; } @Override public float getAnchorU() { return 0.5f; } @Override public float getAnchorV() { return 0.5f; } @Override public LatLong getPosition() { Gps droneGps = drone.getAttribute(AttributeType.GPS); return isValid() ? droneGps.getPosition() : null; } @Override public Bitmap getIcon(Resources res) { if (drone.isConnected()) { return BitmapFactory.decodeResource(res, R.drawable.quad); } return BitmapFactory.decodeResource(res, R.drawable.quad_disconnect); } @Override public boolean isVisible() { return true; } @Override public boolean isFlat() { return true; } @Override public float getRotation() { Attitude attitude = drone.getAttribute(AttributeType.ATTITUDE); return attitude == null ? 0 : (float) attitude.getYaw(); } public boolean isValid() { Gps droneGps = drone.getAttribute(AttributeType.GPS); return droneGps != null && droneGps.isValid(); } }