1

我正在为 Android 开发一个应用程序,以使用 API 的指南针、gps 和相机在大学内提供位置。

也可以根据上面提到的API获取一些重要的数据。这不是 Android 或 Java 的内置功能,需要一些算法。我需要进行计算,得出当移动用户面向的方向时,气球应出现在屏幕上的位置 (x)。

要执行计算,我已经有以下数据:

  • 度数:用户正在引导手机的方向(度数)(通过使用指南针获得);
  • grausParaDestino:方向(度),因为气球应该在屏幕的中心(从 GPS 点获得计算);
  • width:屏幕的宽度;

我们知道用户在其轴上总共旋转 360 度。

我尝试了下面的微积分,但不正确。

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 回答