2012-11-19 9 views
1

와 위치에 대해 나는 응용 프로그램을 개발하고있다.이 알고리즘은 안드로이드 이미지 뷰

또한 API의 위에서 언급 한에 따라 몇 가지 중요한 데이터를 얻을 수 없습니다. Android 또는 Java의 기본 제공 기능이 아니며 일부 알고리즘이 필요합니다. 나는 모바일 사용자의 방향이 향하고있을 때 풍선이 화면에 나타나야하는 위치 (x)를 산출해야합니다.

이미 다음 데이터가 연산 수행 할 수

  • 도 : 방향 (도) 휴대 전화는 (나침반을 사용하여 얻어진), 사용자에 의해 지시되고있는 단계;
  • grausParaDestino : 방향 (도)는 점에서이 풍선 (GPS 포인트에 의한 계산으로) 화면의 중심에 있어야한다;
  • 너비 : 화면의 너비;

우리는 그 축에 사용자의 하나 개의 완전한 혁명 360도 전체를 알고있다.

나는 아래의 미적분을 시도했지만 올바르지 않습니다.

나는 어제 오후이 계산을 해결하는 다양한 방법을 시도했지만 성공하지 못했습니다. 그들이 저에게 도움을 줄 수 있다면 감사히 여길 것입니다.

+0

영어 로이 게시물을 게시해야 google 번역 및 – nandeesh

+0

확인, nandeesh 넣어. 그것은 번역되었습니다. –

+0

질문을 이해하기가 어렵습니다. 당신의 의미를 더 분명하게하는 그림이나 뭔가를 줄 수 있습니까? –

답변

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

이 코드를 사용하여 볼룸을 스크린에 배치했습니다. 모든 답변 주셔서 감사합니다.

관련 문제