2014-04-20 2 views
0

자기 나침반을 만들려고 다음 코드가 있습니다. 나는 다음과 같은 질문이안드로이드에서 자기 센서와 이미지 회전

public void onSensorChanged(SensorEvent event) { 
    imageCompass = (ImageView) findViewById(R.id.imageMapDrawView); 
    Bitmap myImg = BitmapFactory.decodeResource(getResources(), R.drawable.compass); 
    Matrix matrix = new Matrix(); 
    matrix.postRotate(event.values[0]); 
    Bitmap rotated = Bitmap.createBitmap(myImg, 0, 0, myImg.getWidth(), myImg.getHeight(), 
      matrix, true); 
    imageCompass.setImageBitmap(rotated); 
} 

는 A. I [0] 정도 event.values을 추측? 라디안이 아니야? B. 이미지보기에서 이미지를 가져 와서 이미지 중심에서 회전시키고 싶습니다. C. 다른 이미지 (해당 이미지 위에 표시기)를 그려보고 싶습니다.이 작업을 수행 할 수 있습니까? 이미 이미지보기에 나침반 이미지가 있고 위에 다른 이미지를 그려야합니다. 전체보기를 다시 그릴 수는 없습니다. 그것을 어떻게 성취 할 수 있습니까?

+0

a) 자신이 직접 확인하십시오. b) setImageMatrix를 사용하고 scaleType이 "matrix"인지 확인하십시오. c) LayerDrawable – pskink

+0

사용 setImageMatrix는 이미지를 전혀 회전시키지 않고 setImageBitmap 이미지를 회전 시키지만 잘못된 중심 주위로 옮길 수 있습니다. ? – RotatingWheel

+0

setImageMatrix는 예상대로 작동하지만 매트릭스에 설정된 축척 유형이 필요합니다. – pskink

답변

0

A. http://developer.android.com/reference/android/hardware/SensorEvent.html을 확인하십시오.

값 배열의 길이와 내용은 모니터링 할 센서 유형에 따라 다릅니다.

Sensor.TYPE_ACCELEROMETER is in m/s² 
Sensor.TYPE_MAGNETIC_FIELD is in uT (micro Tesla) 
Sensor.TYPE_GYROSCOPE is in rad/s 

모든 센서의 경우 (링크를 확인하십시오) 계속하십시오.

또한 인터페이스 SensorListener는 API 레벨 3부터 사용되지 않습니다. 대신 SensorEventListener를 사용해야합니다.

B 및 C. 이미지를 그릴 때 OpenGL ES를 사용해야합니다. 특히 OpenGL ES 2.0은 많은 세부 사항과 방법으로 이미지를 조작하여 필요한 모든 작업을 손쉽게 수행 할 수 있습니다.

관련 문제