簡體   English   中英

Android imageView定位算法

[英]Algorithm for positioning with Android imageView

我正在開發Android應用程序,以便使用API​​的指南針,GPS和攝像頭在大學中提供位置信息。

還可以基於上述API獲取一些重要數據。 這不是Android或Java的內置功能,需要某種算法。 我需要進行計算,得出的位置(x)是當移動用戶面對的方向時,氣球應該出現在屏幕上。

為了進行計算,我已經有了以下數據:

  • 度:用戶指示手機的方向(度)(使用指南針獲得);
  • grausParaDestino:方向(度),氣球應該在屏幕的中心(通過GPS點獲得的計算結果);
  • width:屏幕的寬度;

我們知道,用戶在其軸上總共旋轉了360度。

我嘗試了下面的演算,但不正確。

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

昨天下午我花了很多時間嘗試解決這種計算問題,但是沒有成功。 如果他們能給我一些幫助,我將不勝感激。

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);

通過此代碼,我將球桿定位在了幕布上。 感謝您的所有回復。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM