Packages
mob
0.5.16
0.7.20
0.7.19
0.7.18
0.7.17
0.7.16
0.7.15
0.7.14
0.7.13
0.7.12
0.7.11
0.7.10
0.7.9
0.7.8
0.7.7
0.7.6
0.7.5
0.7.4
0.7.3
0.7.2
0.7.1
0.7.0
0.6.26
0.6.25
0.6.24
0.6.23
0.6.22
0.6.21
0.6.20
0.6.19
0.6.18
0.6.17
0.6.16
0.6.15
0.6.14
0.6.13
0.6.12
0.6.11
0.6.10
0.6.9
0.6.8
0.6.7
0.6.6
0.6.5
0.6.2
0.6.1
0.6.0
0.5.18
0.5.17
0.5.16
0.5.15
0.5.14
0.5.11
0.5.10
0.5.7
0.5.6
0.5.5
0.5.4
0.5.3
0.5.2
0.5.1
0.5.0
0.4.0
0.3.10
0.3.9
0.3.8
0.3.7
0.3.6
0.3.5
0.3.4
0.3.3
0.3.2
0.3.1
0.3.0
0.2.0
0.1.0
BEAM-on-device mobile framework for Elixir
Current section
Files
Jump to
Current section
Files
lib/mob/location.ex
defmodule Mob.Location do
@moduledoc """
Device location (GPS / network).
Requires `:location` permission (request via `Mob.Permissions.request/2`).
Location updates arrive as:
handle_info({:location, %{lat: lat, lon: lon, accuracy: acc, altitude: alt}}, socket)
handle_info({:location, :error, reason}, socket)
iOS: `CLLocationManager`. Android: `FusedLocationProviderClient`.
"""
@type accuracy :: :high | :balanced | :low
@doc """
Request a single location fix, then stop.
"""
@spec get_once(Mob.Socket.t()) :: Mob.Socket.t()
def get_once(socket) do
:mob_nif.location_get_once()
socket
end
@doc """
Start continuous location updates.
Options:
- `accuracy: :high | :balanced | :low` (default `:balanced`)
Call `stop/1` when done to save battery.
"""
@spec start(Mob.Socket.t(), keyword()) :: Mob.Socket.t()
def start(socket, opts \\ []) do
accuracy = Keyword.get(opts, :accuracy, :balanced)
:mob_nif.location_start(accuracy)
socket
end
@doc """
Stop continuous location updates.
"""
@spec stop(Mob.Socket.t()) :: Mob.Socket.t()
def stop(socket) do
:mob_nif.location_stop()
socket
end
end