• Sensorli hodisalarni qayta ishlash algoritmining asosiy elementlari
  • Androidda sensor imkoniyatlari haqida




    Download 63.66 Kb.
    bet2/3
    Sana12.05.2023
    Hajmi63.66 Kb.
    #59093
    1   2   3
    Bog'liq
    android sensor imkonyatlari
    O\'quvchilarni pedagogik tashxis qilishning maqsadi va mazmuni
    Androidda sensor imkoniyatlari haqida

    Androidda sensor imkoniyatlari, qurilma yoritgichlari orqali olingan o'zgaruvchilarni tahlil qilishga yordam beradi. Android qurilmalarida mavjud bo'lgan sensorlarning turli xil turlari mavjud: gyroscope, accelerometer, magnetometer, light sensor, proximity sensor va boshqalar. Har bir sensor, qurilmani yoritgichlari bo'yicha tahlil qiladi va uch xaraktirli ma'lumotlar qaytaradi: turli tizimlar va yulduz navigatsiyasi tahlil qilish, qurilmani yoritgichlarida o'zgarishlar va ko'pgina ishlar, ko'ngil ocharligi, qurilmani ishlatish, kamera o'rnatish va boshqalar.

    • Accelerometer: Bu sensor, qurilmani yoritgichlari orqali ishlatiladi. U qurilmani harakati, tezlik, burulish va boshqa imkoniyatlarni aniqlash uchun ishlatiladi.

    • Gyroscope: Gyroscope sensori, qurilmani yoritgichlari bo'yicha aylanishni aniqlaydi. U yuqori tezlikdagi burulish va o'ngacha burulish kabi ko'plab xarakteristikalar tahlil qiladi.

    • Magnetometer: Magnetometer, qurilmani yoritgichlari orqali magnitnoy maydonni aniqlash uchun ishlatiladi. U qurilmani geografik shimoliy va janubiy qismi, havoga nisbatan o'ziga qarshi aylanishi va boshqa xususiyatlarni aniqlaydi.

    • Light sensor: Ushbu sensor, qurilmani yoritgichlari bo'yicha atrofni tahlil qiladi va qurilmani yoritgichlarida yuzaga kelgan nozik o'zgarishlarni aniqlaydi.

    • Proximity sensor: Bu sensor, qurilmani yoritgichlari bo'yicha o'q avtomatik ravishda ishlatiladi. U ekranning ko'rsatilgan qismida yoki qurilmani yoritgichlarida qayta ishlatilayotgan joyda nozik o'zgarishlar bo'lsa, qurilmani avtomatik ravishda yoqib yuboradi.

    Sensorlar, Android dasturida yuzaga kelgan har qanday muammolarni hal qilish uchun foydalanilishi mumkin. Misol uchun, telefonni egallayotgan shaxsning tezligi, o'ziga qarshi aylanish xususiyatlarini va o'zini ko'chirishni aniqlash uchun ishlatiladi.


    1. Sensorli hodisalarni qayta ishlash algoritmining asosiy elementlari

    Androidda teginish imo-ishoralari bilan shug'ullanish yangi boshlanuvchilar uchun qiyin bo'lib tuyulishi mumkin. Avvaliga bir-biridan unchalik aniq yoki farqli ko'rinmaydigan nomlari bilan juda ko'p usullar va interfeyslar mavjud: dispatchTouchEvent, onInterceptTouchEvent, onTouchEvent, View.OnTouchListener...
    Butun teginish hodisasi mexanizmini 3 ta asosiy tushunchaga bo'lish mumkin:

    Garchi bu harakatlar aynan shu tartibda sodir bo'lmasa-da, ular orqali shunday o'tish foydalidir.
    Tegishli hodisaga javob berish
    Sensorli hodisaga javob berishning asosiy mexanizmi View.onTouchEvent usulini View yoki ViewGroup-da bekor qilishdir, bu hodisaning maqsadi bo'lishi kerak. Faoliyat mazmuni koʻrinishida istalgan joyda sodir boʻladigan hodisalarni qayta ishlash uchun Activity (Activity.onTouchEvent) da shunga oʻxshash usul ham mavjud.
    OnTouchEvent yondashuvi usulni amalga oshirish uchun bizni View subklassiga majbur qiladi. Agar biz buni oldini olishni istasak, View.OnTouchListener-dan foydalanishimiz mumkin: u bizga maxsus Ko'rinish yaratmasdan ko'rinishga sensorli hodisalarni qayta ishlash mantiqini qo'shish imkonini beradi. View.setOnTouchListener usuli yordamida ko'rinishga sensorli tinglovchini biriktirishimiz mumkin.
    OnTouchEvent va OnTouchListener.onTouch usullari ham mantiqiy qiymatni qaytaradi. True qiymatining qaytishi hodisaning usul tomonidan iste'mol qilinganligini va uni boshqa yo'naltirishga hojat yo'qligini ko'rsatadi (biz keyingi xatboshida bu yo'naltirish haqida gaplashamiz). OnTouchEvent usuli va OnTouchListener o'rtasida tinglovchi ustunlikka ega: agar tinglovchilar to'plami mavjud bo'lsa va u noto'g'ri bo'lsa (yoki umuman tinglovchi bo'lmasa), onTouchEvent usuli chaqiriladi, lekin agar tinglovchi rost bo'lsa, onTouchEvent bo'lmaydi. chaqirilsin.
    Ko'rish ierarxiyasi orqali hodisani ko'tarish
    Sensorli hodisani qayta ishlashning butun mexanizmi hodisani ulardan biri iste'mol qilmaguncha, voqeaga qiziqishi mumkin bo'lgan komponentlarga (Ko'rish, ViewGroups va oxir-oqibat Faoliyat) o'tkazishga asoslangan. Turli komponentlar hodisani qayta ishlash imkoniyatini olish tartibini tushunish juda muhimdir.
    Buni foydalanuvchi nuqtai nazaridan ko'rib chiqsak, foydalanuvchiga "yaqinroq" bo'lgan komponentdan boshlash mantiqan to'g'ri keladi: bu, ehtimol, foydalanuvchi o'zaro aloqada bo'lishni xohlaydi. Va foydalanuvchiga "yaqin" deganda, biz foydalanuvchi barmog'i ostidagi Ko'rinishga murojaat qilamiz va bu ko'rinish ierarxiyasi daraxtining bargidir.
    Tizim aynan shunday qiladi, u yuqorida aytib o'tilgan xususiyatlarga ega Ko'rinishni aniqlaydi, voqeani ushbu Ko'rinishga etkazib beradi va unga ishlov berish imkoniyatini beradi. Oldingi bo'limda ko'rishni xohlasa, hodisaga qanday munosabatda bo'lishini ko'rib chiqdik (onTouchEvent usuli yoki OnTouchListener).
    Agar Ko'rinish hodisani iste'mol qilmasa, Android ko'rish ierarxiyasi bo'ylab yurishni boshlaydi va Ko'rinishning barcha ajdodlariga (to'g'ridan-to'g'ri ota-onasidan boshlab) Activity.onTouchEventga yetguncha hodisani qayta ishlash imkoniyatini beradi. Agar ajdodlardan biri hodisani iste'mol qilsa, o'tish u erda to'xtaydi.
    Hodisalarni ushlab turish
    Hodisa qanday qilib barglardan boshlab, ildizga qarab, ba'zi komponentlar uni iste'mol qilishga qaror qilmaguncha, tartibning ierarxiyasi daraxti bo'ylab qanday o'tishini ko'rdik. Biroq, bu butun hikoyaning faqat bir qismi ...
    Android tizimidagi umumiy printsip sifatida ota-ona ko'rinishi o'z farzandlari ustidan to'liq nazoratga ega. Buning misolini o'lchash bosqichida ko'rish mumkin: ota-ona bolalardan o'zlarini o'lchashni so'raydi, lekin agar bola ko'rinishida qaytarilgan o'lchovlar ota-ona tomonidan belgilangan xususiyatlardan oshsa, oxirgi so'z ota-onaga tegishli.
    Xuddi shu tamoyilga amal qilgan holda, ota-ona nuqtai nazari teginish hodisasi bolalarga etib borishiga ruxsat berish yoki yo'qligini hal qilishi kerak. Bu erda ViewGroup.onInterceptTouchEvent usullari o'ynaydi. (Ushbu usul faqat ViewGroup-da mavjudligini unutmang).
    Biz hozirgacha taklif qilganimizdan farqli o'laroq, tizim tomonidan qabul qilingan har bir teginish hodisasi teginish nuqtasi ostida joylashgan varaq ko'rinishiga emas, balki birinchi navbatda Faoliyatga etkaziladi. Keyin Faoliyat ko'rinish ierarxiyasining ildizidan yurishni boshlaydi va pastga tushadi va har bir ko'rish guruhiga hodisani ko'rish bargiga yetib borishidan oldin ushlab turish imkoniyatini beradi. U barg ko'rinishiga etib kelganida, algoritm biz avval aytib o'tganimizdek davom etadi.
    Agar ViewGroup hodisani ushlab turishga qaror qilsa (onInterceptTouchEvent usulidan true qiymatini qaytarish orqali), hodisa ushbu ko'rinishning onTouchEvent usuliga yetkaziladi va daraxt bo'ylab tarqalmaydi. Agar ViewGroups’ning onTouchEvent qiymati noto‘g‘ri bo‘lsa, voqea biz avval aytib o‘tganimizdek daraxtni ko‘taradi.
    E'tibor bering, ViewGroup barcha hodisalarni ushlab turishi shart emas: u ba'zi hodisalarni o'tkazishga ruxsat berishni va keyin tutib olishni boshlashi mumkin. (Biroq, u hodisani ushlab turgan paytdan boshlab, xuddi shu imo-ishoraning barcha keyingi voqealari bevosita unga etkaziladi). Keling, buni ko'rsatadigan misolni ko'rib chiqaylik.
    Aytaylik, bizda turli xil vidjetlarni o'z ichiga olgan ScrollView mavjud. ACTION_DOWN bilan voqea sodir bo'ladi. ScrollView bu hodisaga xalaqit bermasligi kerak, chunki bu, masalan, ScrollView ichidagi tugmani bosish ishorasini boshlashi mumkin. Shunday qilib, ScrollView hodisani tugmacha qabul qilishi uchun o'tkazishi kerak. Biroq, agar foydalanuvchi barmog'ini qimirlata boshlasa, ScrollView buni aylantirish ishorasi sifatida aniqlaydi va shuning uchun yuqoriga ko'tarilishi, ACTION_MOVE hodisalarini ushlab turishi va aylantirishni o'zi boshqarishi kerak.
    Voqealarni yuborish
    Oldingi bo'limlarda biz bir oz mavhum tarzda teginish hodisalari ularni qayta ishlash uchun mumkin bo'lgan nomzodlarga "etkazib berilishi" va aniqrog'i, hodisalar ierarxiya daraxti bo'ylab pastga surilib, keyin yana yuqoriga tortilishini eslatib o'tdik. Bularning barchasi qanday sodir bo'lishini ko'rish vaqti keldi.
    Bu jarayon dispetcherlik deb ataladi va Activity.dispatchTouchEvent, ViewGroup.dispatchTouchEvent va View.dispatchTouchEvent usullari bilan boshqariladi.
    Sensorli hodisa qabul qilinganda, Activity.dispatchTouchEvent deb ataladigan birinchi usul. Ushbu usul hodisani ko'rish ierarxiyasi orqali keyingi jo'natish uchun javobgardir. Agar biron bir komponent hodisani iste'mol qilmasa, Activity.onTouchEvent usuli hodisani qayta ishlash uchun oxirgi chora sifatida chaqiriladi.
    Keling, Faoliyat jo'natishni qanday amalga oshirishiga e'tibor qarataylik. U birinchi navbatda hodisani Oynaga o'tkazadi, u hodisani ierarxiyadan pastga (DekorView-dan boshlab va barcha ViewGroups-dan o'tishni) boshlaydi. U duch kelgan har bir ViewGroup uchun ViewGroup.dispatchTouchEvent usulini chaqiradi.
    Mana ViewGroup dispatchTouchEvent usuli nima qilishining yuqori darajadagi tavsifi:
    a) Avval u onInterceptTouchEvent usulini chaqiradi. Agar hodisa to'xtatilsa, hodisani ViewGroup bolalariga yuborish o'rniga, voqea onTouchEvent usuliga o'tkaziladi.
    b) Agar ViewGroup hodisani ushlab turmaslikka qaror qilsa, ViewGroup o'z farzandlaridan qaysi biri voqea haqida xabardor qilinishi kerakligini aniqlaydi (hitbox algoritmi yordamida) va har bir bunday bolaga dispatchTouchEvent usulini chaqirish orqali voqeani ularga yo'naltiradi. bu ko'rish yoki ko'rish guruhi).

    Bu erda etishmayotgan oxirgi narsa View dispatchTouchEvent usulini qanday amalga oshirishini ko'rishdir. Bu juda oddiy va biz buni allaqachon muhokama qildik: bu OnTouchListener.onTouch va/yoki onTouchEvent usullariga qo'ng'iroqlar bilan sodir bo'ladi.



    Download 63.66 Kb.
    1   2   3




    Download 63.66 Kb.

    Bosh sahifa
    Aloqalar

        Bosh sahifa



    Androidda sensor imkoniyatlari haqida

    Download 63.66 Kb.