1

私は、APIのコンパス、GPS、カメラを使用して大学内の場所を提供するAndroid用のアプリケーションを開発しています。

上記のAPIに基づいていくつかの重要なデータを取得することもできます。これはAndroidまたはJavaに組み込まれている機能ではなく、何らかのアルゴリズムが必要です。モバイルユーザーの方向が向いているときにバルーンが画面に表示される位置(x)を計算する必要があります。

計算を実行するために、私はすでに次のデータを持っています:

  • 度:携帯電話がユーザーによって向けられている方向(度)(コンパスを使用して取得)。
  • grausParaDestino:バルーンが画面の中央にある方向(度)(GPSポイントから取得した計算を使用)。
  • width:画面の幅。

ユーザーがその軸上で合計360度完全に1回転することを私たちは知っています。

以下の微積分を試しましたが、正しくありません。

int position = Math.round (((width * grausParaDestino) / 360) + degrees);

私は昨日の午後、この計算を解決するためのさまざまな方法を試しましたが、成功しませんでした。彼らが私に助けを与えることができれば、私はそれを感謝します。

4

1 に答える 1

0
if( grausParaDestino < 0 ){
    grausParaDestino = grausParaDestino + 360;
}else if( grausParaDestino > 360 ){
    grausParaDestino = grausParaDestino - 360;
}

Display display = getWindowManager().getDefaultDisplay();
int width = display.getWidth();
int height = display.getHeight();

if( anlgeOfView < 1 ){
    anlgeOfView = mPreview.getCameraAngleOfView();
}

int larguraDaTela;
if( width > height ){
    larguraDaTela = width;
}else{
    larguraDaTela = height;
}

double linhaImaginaria = ( larguraDaTela * 360 ) / anlgeOfView;

double posicaoDestinoLinhaImaginaria = ( grausParaDestino * linhaImaginaria ) / 360;
double posicaoPontoAtualLinhaImaginaria = ( graus * linhaImaginaria ) / 360;

double posicaoBalao = posicaoPontoAtualLinhaImaginaria - posicaoDestinoLinhaImaginaria;

double position = Math.round( ( width / 2 ) - posicaoBalao );

layoutParams layoutParams=new LayoutParams(width, height);
layoutParams.height = 50;
layoutParams.width = 50;
layoutParams.setMargins( (int)position, 50, 0, 0);

ImageView balao = (ImageView)findViewById(R.id.balao);
balao.setLayoutParams(layoutParams);

このコードを使用して、バルーンを画面に配置しました。すべての回答をありがとう。

于 2012-11-25T18:57:51.260 に答える