Rodar o MapView no Android

Estou escrevendo um aplicativo para Android em que um dos recursos é que o mapa girará de acordo com a bússola (ou seja, se o telefone estiver apontando para o leste, o mapa será orientado de modo que o lado leste do mapa fique no topo). Respostas anteriores que eu encontrei sugeridas sobre a escrita do método onDraw () no mapView, no entanto, a API mudou o método para final assim não pode ser substituído. Como resultado, tentei substituir odispatchDraw() método assim:

Nota:

-compass é um booleano que, se verdadeiro, gira a visão

-bearing é uma variável flutuante que possui os graus que a vista deve girar

protected void dispatchDraw(Canvas canvas) {
    canvas.save();
         if (compass) {
             final float w = this.getWidth();
             final float h = this.getHeight();

             final float scaleFactor = (float)(Math.sqrt(h * h + w * w) / Math.min(w, h));

             final float centerX = w / 2.0f;
             final float centerY = h / 2.0f;

             canvas.rotate(bearing, centerX, centerY);
             canvas.scale(scaleFactor, scaleFactor, centerX, centerY);

         }
         super.dispatchDraw(canvas);
         canvas.restore();
}

questionAnswers(5)

yourAnswerToTheQuestion