1

私のアプリでは、拡張現実を使用してファミリーレストランなどの場所を見つけたいと思っています。私がやりたいことは、アプリを起動するときにカメラをオンにしてから、カメラの方向に場所を見つけたいということです。たとえば私はアプリを起動し、私は東を向いており、電話のキーパッドは私、つまり西、次に東方向にある場所を向いています。カメラを起動するコードをいくつか書きました。このタスクで使用できる API と、それを行うための例とチュートリアルを提案してください。事前に感謝します。これが私のコードです。

@Override
    public void onCreate(Bundle savedInstanceState) {
        // try{

        super.onCreate(savedInstanceState);


sensorMan = (SensorManager) getSystemService(Context.SENSOR_SERVICE);

        sensorMan.registerListener(this,sensorMan.getDefaultSensor(SensorManager.SENSOR_ORIENTATION),
    SensorManager.SENSOR_DELAY_FASTEST);
        //lastUpdate = System.currentTimeMillis();

sensorMan.registerListener(this, sensorMan.getDefaultSensor(Sensor.TYPE_ACCELEROMETER), 
                SensorManager.SENSOR_DELAY_NORMAL);
    }//end of oncreate

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

    }

    @Override
    public void onSensorChanged(SensorEvent event) {
        // TODO Auto-generated method stub



        if (event.sensor.getType() == Sensor.TYPE_ACCELEROMETER) {

Toast.makeText(this, "X-rawDirection->"+event.values[0], Toast.LENGTH_SHORT).show();
Toast.makeText(this, "Y-rawDirection->"+event.values[1], Toast.LENGTH_SHORT).show();
Toast.makeText(this, "Z-rawDirection->"+event.values[2], Toast.LENGTH_SHORT).show();

            }

            if (event.sensor.getType() == Sensor.TYPE_ORIENTATION) {

    Toast.makeText(this, "X-rawDirection TYPE_ORIENTATION->"+event.values[0], Toast.LENGTH_SHORT).show();
    Toast.makeText(this, "Y-rawDirection TYPE_ORIENTATION->"+event.values[1], Toast.LENGTH_SHORT).show();
    Toast.makeText(this, "Z-rawDirection TYPE_ORIENTATION->"+event.values[2], Toast.LENGTH_SHORT).show();

            }

        }
}
4

2 に答える 2

3

3 つのステップがあります。

1) センサーを使用して位置と向きを決定します。

2) 大圏距離と方位などを使用して、既知の GPS 座標の相対位置と方位を決定することにより、GPS 座標空間から平面座標空間に変換します。http://www.yourhomenow.com/house/haversine.html (このスキームでは、デバイスは座標空間の原点に留まります)

3) 透視投影http://en.wikipedia.org/wiki/3D_projection#Perspective_projectionを実行して、ディスプレイ (カメラ センサー) である平面上のどこにオブジェクトが表示されるべきかを把握し、オブジェクトを拡張できるようにします。

まず、基本的な「ファインダー」アプリの場合、電話が 1 つの方向でのみ保持され、画面からカメラまで定義された軸に関する方向を考慮してディスプレイを更新しないように、状況を単純化できます。 、ほとんどの人はその軸で回転しません。ジンバル ロックhttp://en.wikipedia.org/wiki/Gimbal_lockに注意してください- Android センサー API がそれを処理するかどうかはわかりません。

于 2012-01-17T16:38:22.787 に答える
2

ここに重要なリンクがあります。

http://code.google.com/apis/maps/documentation/places/

あとは、xml ファイルを解析して場所を取得するだけです。

于 2012-02-07T08:59:17.277 に答える