найти рестораны и туристические места дополненной реальности - PullRequest
0 голосов
/ 17 января 2012

в моем приложении я хочу использовать дополненную реальность, чтобы найти такие места, как семейные рестораны и т. Д. Что я хочу сделать, так это то, что, когда я запускаю камеру приложения, я включаю ее, а затем хочу найти места в направлении камеры. Например, я запускаю приложение, и я смотрю на восток, а клавиатура телефона смотрит на меня, то есть на запад. Затем места, которые находятся в восточном направлении. Я написал некоторый код, который запускает камеру, пожалуйста, предложите любой 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 ]

3 голосов
/ 17 января 2012

Есть три шага.

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 - я не уверен, что API сенсоров Android позаботятся об этом за вас.

2 голосов
/ 07 февраля 2012

Вот важная ссылка.

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

Теперь все, что мне нужно сделать, - это проанализировать XML-файл и получить места ..

...