5

(iOSからの)didUpdateHeadingに相当するAndroidはありますか?それを使用してマップビューを回転させるためのサンプルコードはありますか?

たくさん検索しましたが、役立つヒントを得ることができませんでした。

前もって感謝します。

編集:私の質問を説明させてください:IOSでは、デバイスがその見出しを変更すると、デリゲートオブジェクトはそのメソッド「didUpdateHeading」を呼び出します。Androidでは、座標を取得するために「onLocationChanged」を見つけることができましたが、見出し情報はありませんでした。Androidで見出し情報を取得するにはどうすればよいですか?

4

2 に答える 2

3
package com.exercise.AndroidCompass;

import java.util.List;

import android.app.Activity;
import android.content.Context;
import android.hardware.Sensor;
import android.hardware.SensorEvent;
import android.hardware.SensorEventListener;
import android.hardware.SensorManager;
import android.os.Bundle;
import android.widget.Toast;

public class AndroidCompass extends Activity {

private static SensorManager mySensorManager;
private boolean sersorrunning;
private MyCompassView myCompassView;

 /** Called when the activity is first created. */
 @Override
 public void onCreate(Bundle savedInstanceState) {
     super.onCreate(savedInstanceState);
     setContentView(R.layout.main);

     myCompassView = (MyCompassView)findViewById(R.id.mycompassview);

     mySensorManager = (SensorManager)getSystemService(Context.SENSOR_SERVICE);
     List<Sensor> mySensors = mySensorManager.getSensorList(Sensor.TYPE_ORIENTATION);

     if(mySensors.size() > 0){
      mySensorManager.registerListener(mySensorEventListener, mySensors.get(0), SensorManager.SENSOR_DELAY_NORMAL);
      sersorrunning = true;
      Toast.makeText(this, "Start ORIENTATION Sensor", Toast.LENGTH_LONG).show();

     }
     else{
      Toast.makeText(this, "No ORIENTATION Sensor", Toast.LENGTH_LONG).show();
      sersorrunning = false;
      finish();
     }
 }

 private SensorEventListener mySensorEventListener = new SensorEventListener(){

@Override
public void onAccuracyChanged(Sensor sensor, int accuracy) {
 // TODO Auto-generated method stub

}

@Override
public void onSensorChanged(SensorEvent event) {
 // TODO Auto-generated method stub
 myCompassView.updateDirection((float)event.values[0]);
}
 };

出典:http ://android-er.blogspot.com/2010/08/simple-compass-sensormanager-and.html

http://developer.android.com/reference/android/hardware/SensorManager.html

あなたが探しているものでなければなりません。OnSensorChangedメソッドは同じ機能を提供する必要があります。(float)event.values[0]あなたの見出しです。

賞金のテキストを読んでください。これは、私が研究したすべてのことから、そして一般的な私の経験から、それを行う唯一の方法です。ただし、私が提供した例では、コピー&ペーストを使用して、必要なものをかなり迅速に提供します。

于 2012-06-29T13:49:31.723 に答える
2

リアルタイムで見出しが必要な場合は、@ jack57の回答を使用して、デバイスのGセンサーを使用する必要があります。

新しい場所を取得するときに見出しのみが必要な場合は、で取得できますがLocation.getBearing()、これはGPS座標でのみ機能することに注意してください。から座標を取得した場合LocationManager.NETWORK_PROVIDER、方位は0になります。

于 2012-07-04T12:19:09.187 に答える