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

有三个步骤。

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

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

3)做一个透视投影http://en.wikipedia.org/wiki/3D_projection#Perspective_projection来确定物体应该出现在平面上的哪个位置是你的显示器(好的,你的相机传感器),这样你就可以增强它们。

首先,您可以简化情况,使手机仅保持在一个方向,并且您无需更新显示以说明围绕从屏幕到相机定义的轴的方向,因为对于基本的“查找器”应用程序,大多数人不会在那个轴上旋转。请注意万向节锁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 回答