Как создать компас с iPhone?

def execute_call(model, payload):
    result = model.execute(payload)
    code = result[0]

def test_execute_call(self):
    mock_model = mock.MagicMock()
    mock_model.execute = mock.MagicMock(return_value=(a,b,c)
    self.execute_call(mock_model, payload)
    assert whatever

Вам нужно передать макет объекта в функцию, чтобы его можно было использовать.

6
задан Bill the Lizard 13 May 2011 в 12:15
поделиться

8 ответов

Да, вы правы, это единственный выход. Хотя я думаю, что когда вы знаете направление, вы можете отслеживать небольшие движения телефона от датчиков ускорения и точно рисовать направление, даже если исходное движение останавливается.

Примечание: Это устаревшая информация, она была правильной вплоть до 3Gs вышли. К сожалению, я не могу удалить принятый ответ, поэтому просто посмотрите ниже.

4
ответ дан 8 December 2019 в 04:10
поделиться

С оригинальными iPhone и iPhone 3G, нет.

С iPhone 3GS, выпущенным в июне 2009 года, да. Он включает в себя магнитометр, который позволяет использовать компас.

Базовая структура местоположения предоставляет эту информацию в классе CLHeading . Вы можете проверить, поддерживает ли устройство эту функцию , с помощью клавиши магнитометра .

Как уже говорили другие, с iPhone 3G вы сможете определить направление движения, когда телефон движется, но вы не сможете указать ориентацию телефона, чтобы указать направление для пользователя. Конечно, пользователь может быть проинструктирован о том, чтобы ориентировать телефон определенным образом, что в сочетании с движением может точно указывать направление.

Вы можете проверить, поддерживает ли устройство эту функцию , с помощью клавиши магнитометра .

Как уже говорили другие, с iPhone 3G вы сможете определить направление движения, когда телефон движется, но вы не сможете указать ориентацию телефона, чтобы указать направление для пользователя. Конечно, пользователь может быть проинструктирован о том, чтобы ориентировать телефон определенным образом, что в сочетании с движением может точно указывать направление.

Вы можете проверить, поддерживает ли устройство эту функцию , с помощью клавиши магнитометра .

Как уже говорили другие, с iPhone 3G вы сможете определить направление движения, когда телефон движется, но вы не сможете указать ориентацию телефона, чтобы указать направление для пользователя. Конечно, пользователь может быть проинструктирован о том, чтобы ориентировать телефон определенным образом, что в сочетании с движением может точно указывать направление.

9
ответ дан 8 December 2019 в 04:10
поделиться

Сканируя доступные приложения, я пришел к выводу, что есть два способа сделать компас для текущего iPhone 3G.

  1. Требуется, чтобы телефон перемещался. Используйте разницу в данных GPS, чтобы определить направление.
  2. Требуйте, чтобы пользователь указывал телефон на солнце. Используйте GPS и информацию о времени для определения направления.
2
ответ дан 8 December 2019 в 04:10
поделиться

Компас покажет только направление, в котором вы двигаетесь. Он не скажет вам направление, в котором находится iPhone. Поэтому даже использование акселерометра для отслеживания того, что iPhone повернулся / переместился, не обязательно позволит вам указывать на север на дисплее.

(т.е. вы не будете знать, если он движется вбок или если мы держим iPhone вверх ногами или что-то еще. Вы просто будете знать, куда вы двигаетесь ...)

РЕДАКТИРОВАТЬ декабрь 2010: С тех пор как был написан этот оригинальный пост, iPhone 3GS (выпущенный летом '09) и более новые модели имеют электронный компас. Этот компас может показывать правильное направление, когда не двигается ... (Это означает, что компас теперь может указывать на север независимо от направления, в котором iPhone удерживается или движется.)

2
ответ дан 8 December 2019 в 04:10
поделиться

Я думаю, что вы правы с вашим подозрением, позиция GPS - это одна точка без какой-либо информации о направлении. Чтобы определить направление, вам нужны две точки для создания вектора направления. Автомобильные навигационные системы работают так же. Они могут показывать вектор направления, только если машина движется.

1
ответ дан 8 December 2019 в 04:10
поделиться

Если вы используете аналоговые часы, вы можете использовать приведенные ниже инструкции для наложите циферблат компаса.

Это можно использовать для «калибровки» компаса и использования акселерометра, указывающего направление на север, когда телефон перемещается.

Очевидно, что это не очень точно ... »низкотехнологичное решение для высокого техническая проблема "

(инструкция взята из http://www.qwerty.co.za )

В северном полушарии положите часы на ровный участок земли, наведите часовая стрелка в направлении солнца. Линия север-юг снова является линией, разделяющей угол между часовой стрелкой и линией 12 часов пополам.

В южном полушарии поместите часы на ровный участок земли, Направьте цифру 12 в направлении солнца. Линия Север-Юг - это линия, делящая угол между часовой стрелкой и линией 12 часов пополам.

1
ответ дан 8 December 2019 в 04:10
поделиться

As a side note, the accelerometers in the iphone don't track rotations only translations so you can't do proper 6 axis inertial tracking of position and direction.

1
ответ дан 8 December 2019 в 04:10
поделиться

В качестве обновления iPhone 3GS действительно включает действующий рабочий цифровой компас, доступный для приложений. Это упрощает написание такого приложения.

См. Класс CLHeading и свойство magnetHeading .

http://developer.apple.com/iphone/library/documentation /CoreLocation/Reference/CLHeading_Class/Reference/Reference.html

Вы также можете получить истинное направление на север, если предположить, что телефон успел определить свое географическое местоположение.

4
ответ дан 8 December 2019 в 04:10
поделиться
Другие вопросы по тегам:

Похожие вопросы: