A modern okostelefon nem csupán egy számítástechnikai eszköz, hanem erős érzékelők gyűjteménye. Kamera, gyorsulásmérő, giroszkóp, NFC, arcszenzor — mindez elérhető a fejlesztők számára a platform API-kon keresztül. A hardver funkciók lehetővé teszik olyan alkalmazások létrehozását, amelyek kölcsönhatásba lépnek a fizikai világgal: a fitneszkövetőktől a kiterjesztett valóság játékokig. Ebben a cikkben áttekintjük az összes fő érzékelőt és API-t iOS és Android rendszerekhez. További részletekért lásd a hivatalos Android érzékelők dokumentációját.
Főbb pontok
Az okostelefon hardver funkciói több tucat érzékelőt tartalmaznak, amelyek adatokat gyűjtenek a környezetről és az eszköz helyzetéről. Ezek az adatok a Sensors API (Android) és a Core Motion (iOS) segítségével érhetők el. Az érzékelők három kategóriába sorolhatók: mozgásérzékelők (gyorsulásmérő, giroszkóp), helyzetérzékelők (magnetométer) és környezeti érzékelők (barométer, fény, hőmérséklet).
A gyorsulásmérő az eszköz gyorsulását méri három tengely mentén (x, y, z) m/s²-ben. A következőkre használják: képernyő tájolásának érzékelése (automatikus forgatás), lépésszámlálás (gyalogos navigáció), gesztusfelismerés (rázás a visszavonáshoz), döntéssel vezérelt játékok. Android Sensor.TYPE_ACCELEROMETER és Core Motion CMMotionManager (iOS) nyers adatokat szolgáltat akár 200 Hz-es frekvencián.
A giroszkóp az eszköz forgásának szögsebességét méri három tengely mentén (rad/s). A gyorsulásmérővel ellentétben a giroszkópot nem befolyásolja a gravitáció, így ideális a forgások követésére. Alkalmazások: videó stabilizálás, VR/AR alkalmazások, beltéri navigáció, játékvezérlők. Sensor.TYPE_GYROSCOPE (Android) és CMMotionManager (iOS) a fő API-k.
A magnetométer a Föld mágneses terét méri három tengely mentén (µT), és elektronikus iránytűként működik. Navigációs alkalmazásokban használják az északi irány meghatározására. A magnetométer érzékeny a fémtárgyak és hangszórók interferenciájára; kalibrálás szükséges (a jellegzetes nyolcas alakú mozgás). Sensor.TYPE_MAGNETIC_FIELD — Android API.
A barométer a légköri nyomást (hPa) méri, és a tengerszint feletti magasság meghatározására szolgál akár 1 méteres pontossággal. A közelségérzékelő kikapcsolja a képernyőt, amikor a telefont a fülhöz emelik hívás közben. A környezeti fényérzékelő állítja be a képernyő fényerejét. Mindezek az érzékelők elérhetők az egységes SensorManager (Android) vagy CMMotionManager (iOS) segítségével a legtöbb mozgásérzékelő esetében.
A kamera az egyik legkeresettebb hardverkomponens. Androidon a hozzáférés a CameraX (modern Jetpack API) vagy a Camera2 (alacsony szintű API) segítségével történik. A CameraX automatikusan kezeli az életciklust, támogatja a Preview, ImageCapture, ImageAnalysis (ML képkocka elemzés) és VideoCapture funkciókat. iOS-en a kamera az AVFoundation segítségével érhető el: az AVCaptureSession kezeli a felvételt, az AVCaptureDevice konfigurálja a paramétereket (fókusz, ISO, fehéregyensúly).
A mikrofon hangfelvételre, hangvezérlésre és beszédfelismerésre szolgál. Androidon — MediaRecorder vagy AudioRecord; iOS-en — AVAudioRecorder. A kamera és a mikrofon eléréséhez felhasználói engedély szükséges: Manifest.permission.CAMERA és RECORD_AUDIO (Android), NSCameraUsageDescription és NSMicrophoneUsageDescription (iOS) — karakterláncok az Info.plist-ben, amelyek leírják a használat okát.
Az IT Sectr-nél több mint 20 projektet valósítottunk meg egyedi kamerákkal: a QR-kód olvasóktól az AR szűrős alkalmazásokig. Fő következtetés: Androidon a CameraX heteket takarít meg a fejlesztésben a Camera2-höz képest, míg iOS-en az AVFoundation teljes irányítást biztosít a felvételi paraméterek felett. Példa alapvető kép rögzítésére a CameraX segítségével:
class CameraFragment : Fragment() {
private lateinit var imageCapture: ImageCapture
fun startCamera() {
val processCameraProvider =
ProcessCameraProvider.getInstance(requireContext())
processCameraProvider.addListener({
val cameraProvider = processCameraProvider.get()
val preview = Preview.Builder()
.build()
.also {
it.setSurfaceProvider(viewFinder.surfaceProvider)
}
imageCapture = ImageCapture.Builder()
.setCaptureMode(ImageCapture.CAPTURE_MODE_MINIMIZE_LATENCY)
.build()
val cameraSelector = CameraSelector.DEFAULT_BACK_CAMERA
cameraProvider.bindToLifecycle(
this, cameraSelector, preview, imageCapture
)
}, ContextCompat.getMainExecutor(requireContext()))
}
}
A biometrikus hardver funkciók lehetővé teszik a felhasználók számára, hogy ujjlenyomattal vagy arccal jelentkezzenek be egy alkalmazásba. Az iOS a Face ID-t (TrueDepth kamera, 30.000 láthatatlan pont) és a Touch ID-t (kapacitív ujjlenyomat-olvasó) használja. Az Android a BiometricPrompt-ot használja, amely egyesíti az ujjlenyomat-olvasót (kapacitív vagy ultrahangos) és a Face Unlock-ot (kamera + ML). A Face ID biztonságosabb, mint a Touch ID: az egyezés valószínűsége 1:1.000.000 vs 1:50.000.
Az NFC (Near Field Communication) egy vezeték nélküli kommunikációs technológia, amely akár 10 cm-es hatótávolsággal rendelkezik. A következőkre használják: érintés nélküli fizetések (Google Pay, Apple Pay), NFC címkék olvasása (intelligens poszterek, névjegykártyák), hitelesítés (dokumentumok, jegyek), adatátvitel (Android Beam — elavult). Core NFC (iOS) és NfcAdapter (Android) a fő API-k. iOS-en az NFC csak olvasásra érhető el (kivéve az Apple Pay fizetéseket).
Bluetooth/BLE (Bluetooth Low Energy) — külső eszközök csatlakoztatásához: fejhallgatók, fitnesz karkötők, orvosi érzékelők, intelligens zárak. Core Bluetooth (iOS) és android.bluetooth (Android) — API-k szkenneléshez, csatlakozáshoz és adatcseréhez. A BLE energiahatékony: egy eszköz évekig működhet elemről. iOS-en a háttérben történő BLE működéshez engedélyezni kell a Background Modes → Uses Bluetooth LE accessories funkciót.
Egészségügyi hardver funkciók: HealthKit (iOS) — az Apple keretrendszere az egészségügyi adatok összesítésére. A felhasználó engedélyt ad bizonyos adattípusok olvasására és írására: lépések, pulzus, alvás, kalória, súly, vérnyomás. Minden adat egy védett tárolóban van tárolva és iCloud-on keresztül szinkronizálva. A HealthKit egységes interfészt biztosít a HKQuantitySample írásához és a HKSampleQuery-n vagy HKStatisticsQuery-n keresztüli olvasáshoz.
Google Fit — a Google platformja a fitneszadatokhoz Androidon. Az API két részre oszlik: Sensors API (valós adatok az eszköz érzékelőitől — lépések, kalória) és History API (előzményadatok olvasása/írása). A Google Fit más fitneszalkalmazásokból (Strava, Runkeeper) is gyűjt adatokat engedélyezés útján. iOS-en a Google Fit a REST API-n keresztül érhető el.
Core Motion (iOS) — keretrendszer a mozgásérzékelőkkel való munkához dedikált chip nélkül: gyorsulásmérő, giroszkóp, lépésszámláló (CMPedometer), magasságmérő (CMAltimeter). A CMPedometer számolja a lépéseket, a megtett távolságot, a tempót és a megmászott emeleteket. Androidon hasonló képességeket a Sensor.TYPE_STEP_COUNTER és a Step Detector biztosít. Minden fitneszadat kifejezett felhasználói hozzájárulást igényel.
A kiterjesztett valóság (AR) és az eszközön belüli gépi tanulás az okostelefon hardver képességeinek csúcsát képviseli. ARKit (Apple, iOS 11+) a kamerát, giroszkópot, gyorsulásmérőt és LiDAR-t (Pro modelleken) használja a környező tér követésére. Az ARCore (Google) az Android megfelelője síkkövetéssel, képfelismeréssel és megvilágításbecsléssel. Mindkét keretrendszer a Visual Inertial Odometry (VIO) — a kamera és inerciális érzékelők kombinációját használja.
ML Kit (Google) — SDK a gépi tanuláshoz Androidon és iOS-en. Kész API-kat tartalmaz: szövegfelismerés (OCR), vonalkód olvasás, arcfelismerés, pózészlelés, objektumkövetés, képek szövegfelismerése és természetes nyelv feldolgozás. Az ML Kit teljes mértékben az eszközön működik — az adatok nem kerülnek a szerverre, biztosítva az adatvédelmet és az offline működést.
Core ML (Apple) — keretrendszer ML modellek iOS alkalmazásokba való integrálásához. A modellek (mlmodel) a Core ML Tools segítségével konvertálhatók a TensorFlow, PyTorch vagy Keras formátumokból. Vision — keretrendszer a számítógépes látáshoz: arcfelismerés, szöveg, vonalkódok, vízszintes igazítás. A Vision és a Core ML kombinálása lehetővé teszi valós idejű ML folyamatok létrehozását: képkocka rögzítése → Vision elemzés → Core ML előrejelzés → UI frissítés — mindez az eszközön, 50 ms-nál kisebb késleltetéssel.
Gyakran Ismételt Kérdések
Egy modern okostelefon tartalmaz gyorsulásmérőt, giroszkópot, magnetométert (iránytű), barométert, közelségérzékelőt, környezeti fényérzékelőt, ujjlenyomat-olvasót, kamerát, mikrofont, NFC-t, Bluetooth-t, Wi-Fi-t, GPS-t. A csúcsmodellekben LiDAR, pulzusmérő és hőmérséklet-érzékelő is található.
A Face ID arcfelismerő biometrikus hitelesítés a TrueDepth kamera segítségével (30.000 pont vetítése). A Touch ID ujjlenyomat-hitelesítés kapacitív olvasón keresztül. A Face ID biztonságosabb (1 az 1.000.000-hoz vs 1 az 50.000-hez) és érintés nélkül működik.
A modern megközelítés a CameraX (Jetpack könyvtár). A CameraX leegyszerűsíti a kamerával való munkát: automatikusan kezeli az életciklust, támogatja a Preview, ImageCapture, ImageAnalysis és VideoCapture funkciókat. Örökölt projektekhez a Camera2 API használatos.
Az NFC lehetővé teszi: NFC címkék olvasása és írása (intelligens poszterek, névjegykártyák), érintés nélküli fizetések (Google Pay, Apple Pay), adatátvitel eszközök között, dokumentumok hitelesítése, ajtók nyitása, tömegközlekedési kártyák használata. iOS-en az NFC csak olvasásra érhető el (kivéve az Apple Pay-t).
Az ARKit az Apple keretrendszere a kiterjesztett valósághoz iOS-en. Az ARCore a Google megfelelője Androidhoz. Mindkettő támogatja a síkkövetést, a képfelismerést és a megvilágításbecslést. Az ARKit LiDAR-t használ (iPad Pro/iPhone Pro esetén) a pontosabb pozícionálás érdekében.
Összefoglalás
Kulcsrakész mobilalkalmazást fejlesztünk
Az IT Sectr 2017 óta készít iOS és Android alkalmazásokat induló vállalkozásoknak és vállalkozásoknak. Tanácsot adunk, és a legjobb megoldást javasoljuk.