2012-01-17 4 views
0

в моем приложении Я хочу использовать дополненную реальность, чтобы найти места, такие как семейные рестораны и т. Д. Что я хочу сделать, так это то, что когда я запускаю свою камеру приложения, включен, а затем я хочу найдите места в направлении камеры. Например, я запускаю приложение, а im обращен к востоку, а клавиатура телефона обращена к мне, т.е. к западу, а затем к местам, расположенным в восточном направлении. Я написал код, который запускает камеру, пожалуйста, предложите любую api, доступную для этой задачи, и пример и учебник, чтобы сделать это заранее. вот мой код.найти Restaurents и туристические места по дополненной реальности

@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(); 

      } 

     } 
} 
+1

Пробовали ли вы Google? – Egor

+0

да, я пробовал google.but, а не получить именно то, что моя проблема .... – picaso

ответ

3

Существует три этапа.

1) Определите свое положение и ориентацию с помощью датчиков.

2) Преобразование из координатного пространства GPS в плоское координатное пространство путем определения относительного положения и опоры известных GPS-координат с использованием, например, большого расстояния и опоры. http://www.yourhomenow.com/house/haversine.html (ваши устройства остаются на нуле координатного пространства с этой схемой)

3) Есть ли в перспективе проекцию http://en.wikipedia.org/wiki/3D_projection#Perspective_projection, чтобы выяснить, где на плоскости, на дисплее (нормально, ваш сенсор камеры) объекты должны появиться, так что вы можете увеличить их.

Для начала вы можете упростить ситуацию, чтобы телефон удерживался только в одной ориентации, и вы не обновляете дисплей для учета ориентации вокруг оси, определенной на экране, на камеру, поскольку для базового приложение «finder», большинство людей не будут вращаться по этой оси. Помните о кардановом замке http://en.wikipedia.org/wiki/Gimbal_lock - Я не уверен, что API-интерфейсы Android будут заботиться об этом.