通过增强现实找到餐馆和旅游景点

时间:2012-01-17 13:06:37

标签: android camera augmented-reality direction

在我的应用程序中,我想使用增强现实来寻找家庭餐馆等场所。 我想要做的是,当我启动我的应用程序相机打开,然后我想找到相机方向的位置。例如,我启动应用程序,我面向东方,电话键盘面向我,即西,然后是东方向的地方。 我已经写了一些启动相机的代码,请建议任何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();

            }

        }
}

2 个答案:

答案 0 :(得分:3)

有三个步骤。

1)使用传感器确定您的位置和方向。

2)通过使用例如大圆距离和方位确定已知GPS坐标的相对位置和方位,从GPS坐标空间转换到平面坐标空间。 http://www.yourhomenow.com/house/haversine.html(您的设备使用此方案保留在坐标空间的原点)

3)进行透视投影http://en.wikipedia.org/wiki/3D_projection#Perspective_projection以确定物体应显示在您的显示器(确定,您的相机传感器)的平面上的哪个位置,以便您可以增强它们。

首先,您可以简化情况,以便手机只保持一个方向,并且您不会更新显示屏以考虑从屏幕到相机定义的轴的方向,因为对于基本的“查找器“app,大多数人不会在那个轴上旋转。请注意万向节锁定http://en.wikipedia.org/wiki/Gimbal_lock - 我不确定Android传感器API是否会为您解决此问题。

答案 1 :(得分:2)

这是重要的链接。

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

现在我需要做的就是解析xml文件并获取地点..