Thuta Learning
ရှာဖွေရန်
AdvancedMobile Developmentintermediate

Working with Device Features (Camera, Location)

စိတ်လျှော့ပါ။ ဒီခန်းကို စာအုပ်လိုမဟုတ်ဘဲ စကားပြောသလိုပဲ၊ နားလည်လွယ်အောင် ရှင်းပါမယ်။

ဒီခန်းပြီးရင် ဘာတတ်သွားမလဲ

  • Working with Device Features (Camera, Location) ကို ကြောက်စရာမလိုအောင် နားလည်မယ်
  • ကိုယ်တိုင် code ရေးပြီး Expo Go ပေါ်မှာ run ကြည့်တတ်မယ်
  • Real app project ထဲမှာ ဒီ concept ကို ချက်ချင်း အသုံးချတတ်မယ်

ခဏလေး ဒီလိုပဲ စဉ်းစားကြည့်

Device feature (camera, location, contacts) ကို access လုပ်ခင် user ဆီက permission တောင်းရပါတယ် (iOS/Android OS-level requirement) — expo-camera, expo-location ကဲ့သို့ package တွေက requestPermissionsAsync() function ပေးပြီး, user 'Allow'/'Deny' ရွေးချက်ကို handle လုပ်ရပါတယ်။ Permission ကို deny လုပ်ခံရရင် feature ကို gracefully disable/explain လုပ်ရပါတယ် — app crash မဖြစ်စေရပါဘူး။

လက်တွေ့ scenario နဲ့ ချိတ်ကြည့်မယ်

expo-location ကို install ပြီး Location.requestForegroundPermissionsAsync() ခေါ်ရင် OS ရဲ့ native permission dialog ပေါ်လာပါလိမ့်မယ် — 'Allow' ရလို့မှ Location.getCurrentPositionAsync() နဲ့ GPS coordinate ကို ရယူနိုင်ပါတယ်။ Permission status ကို always check ပါ (granted/denied), status !== 'granted' ဖြစ်ရင် feature ကို ကန့်သတ်ဖို့ UI message ပြပါ။

Code နမူနာ

javascript
import * as Location from 'expo-location';
import { useState, useEffect } from 'react';
import { Text } from 'react-native';

function LocationScreen() {
  const [location, setLocation] = useState(null);
  const [errorMsg, setErrorMsg] = useState(null);

  useEffect(() => {
    (async () => {
      const { status } = await Location.requestForegroundPermissionsAsync();
      if (status !== 'granted') {
        setErrorMsg('Location permission ကို ငြင်းပယ်ထားပါတယ်');
        return;
      }
      const loc = await Location.getCurrentPositionAsync({});
      setLocation(loc);
    })();
  }, []);

  if (errorMsg) return <Text>{errorMsg}</Text>;
  return <Text>{location ? JSON.stringify(location.coords) : 'Loading...'}</Text>;
}
You should see
Permission dialog ပေါ်လာပြီး 'Allow' လုပ်ရင် device ရဲ့ GPS coordinate ကို screen ပေါ်မှာ ပြသမည်။

၅ မိနစ် စမ်းကြည့်

expo-location ကို install ပြီး permission request + current location fetch flow ကို ကိုယ်တိုင် implement လုပ်ကြည့်ပါ (Expo Go app ပေါ်မှာ)။

သတိလေးတစ်ချက်

Location/camera data က sensitive personal information ဖြစ်ပါတယ် — ဘာအတွက်လိုအပ်တာလဲ user ကို ရှင်းရှင်းလင်းလင်း ပြောပြပြီးမှ permission တောင်းပါ, backend ကို ပို့ရင်လည်း Cybersecurity tutorial ရဲ့ encryption/HTTPS concept ကို လိုက်နာပါ။

ဒီနေရာမှာ လူအများမှားတတ်တယ်

  • Permission status ကို check မလုပ်ဘဲ getCurrentPositionAsync() ကို ချက်ချင်း ခေါ်ပြီး denied ဖြစ်ရင် crash ဖြစ်ခြင်း
  • Camera/location permission ကို app ဖွင့်ချက်ချင်း (context မရှင်းလင်းဘဲ) တောင်းခြင်း — user သံသယဝင်တတ်

အခု ကိုယ်တိုင် စမ်းကြည့်

expo-location ကို install ပြီး permission request + current location fetch flow ကို ကိုယ်တိုင် implement လုပ်ကြည့်ပါ (Expo Go app ပေါ်မှာ)။

You'll know it worked when: Permission dialog ပေါ်လာပြီး 'Allow' လုပ်ရင် device ရဲ့ GPS coordinate ကို screen ပေါ်မှာ ပြသမည်။

Working with Device Features (Camera, Location) | Thuta Learning