Zoom ana ekranında yer alan Join butonuna tıklayın.
Enter meeting ID or personel link name yazan yere, öğretmeninizin veya yöneticinizin size verdiği ID numarası veya linki yazın. Enter your name yazan yere adınızı yazın ve Join butonuna tıklayın.
Eğer şifreli bir konferans ise şifre girme ekranı açılacaktır. Açılan ekranda şifreyi girin ve Join Meeting butonuna dokunun.
Görüntülü derslerde/konferanslarda bilgisayar ekranınızdaki görüntüyü derse/toplantıya katılan kişilerle paylaşabilirsiniz. Oldukça gelişmiş bir konferans programı olan Zoom ile bilgisayar ekranınızı, ekranın sadece belirli bir bölümünü, sadece bilgisayardaki sesi veya beyaz bir tahtaya çizdiğiniz görüntüleri paylaşabilirsiniz. Bunun için ekranın alt kısmında yer alan Share Screen butonuna tıklayın.
Açılan ekranın üst kısmında Basic, Advanced ve Files menüsü yer almaktadır.
Basic sekmesinde yer alan Screen seçeneği ile bilgisayar ekranınızı paylaşabilir, White Board seçeneği ile beyaz bir tahta paylaşarak buraya yazıp çizdiğiniz görüntüleri paylaşabilirsiniz.
Zoomda Ekran Görüntüsü Paylaşımı Nasıl Yapılır? 5
Advanced sekmesinde ise Portion of Screen seçeneği ile bilgisayar ekranınızın sadece belirli bir bölümünü paylaşabilirsiniz. Music or Computer Sound seçeneği ile bilgisayarda çaldığınız müziği veya bilgisayarın sesini paylaşabilirsiniz.
Content from 2nd Camera seçeneği ile eğer bilgisayarınızda ikinci bir kamera bağlıysa bu kameranın görüntüsünü paylaşabilirsiniz.
Zoomda Ekran Görüntüsü Paylaşımı Nasıl Yapılır? 6
Files seçeneğinde ise Dropbox gibi hesaplarınıza bağlanabilir ve buradaki belgelerinizi görüntüleyebilirsiniz.
Varsayılan olarak açık olmamakla birlikte, Zoom Facebook veya youtube üzerinden canlı yayın yapmamıza imkân vermektedir. Bu özelliği kullanabilmek için ücretli kullanıcı olmak gerekebilir, ancak ücretsiz bir hesapla da test yapmanızı öneririm. Öncelikle canlı yayın özelliğini zoom Web sayfası ayarları üzerinden açmak gerekecektir. Bunun için şu adımları izleyin.
Zoom ana ekranında setting bölümüne girip buradan General kategorisini seçili hale getirelim.
Tab ile ilerleyip View more settings open in your Web browser, Daha fazla ayar göre varsayılan web tarayıcınızda açar düğmesini bulup girişe basalım.
Açılan web sayfasında oturum açmamız istenirse, Zoom kayıtlı kullanıcı adı ve şifremizle oturum açalım.
Ctrl+F tuşlarına basıp arama alanına Allow Live Stream Meetings yazıp girişe basalım.
Böylece canlı yayın başlığına ulaşacağız. Bir kez aşağı ok tuşuna basıp Allow Live Stream Meetings, toplantıları canlı yayınlamaya izin ver düğmesini bulalım ve giriş tuşuna basıp basılı hale getirelim.
Burada aşağı yön tuşuyla ilerleyerek dilersek Facebook ve youtube onay kutularını işaretli hale getirelim.
Bu ayarları bir kez yapmamız yeterli. Artık bir toplantı başlattığımızda canlı yayın yapabiliriz. Bunun için toplantı ekranımızda belirecek More Meeting Controls düğmesine basmamız gerekecektir. Açılan menüde seçtiysek Live on Facebook, Live on Youtube gibi seçenekleri göreceğiz. Bunlardan birine bastığımızda Facebook veya youtube sayfası açılarak oraya gerekli bilgileri yazmamız, oturum açmamız ve gerekli izinleri vermemiz gibi ekranlar açılabilir. Web sayfalarındaki ilgili işlemleri ve canlı yayın başlığı gibi alanları doldurduktan sonra canlı yayını başlatabiliriz.
Yayını durdurmak için yine More Meeting Controls bölümü kullanılır.
ZOOM, Canlı dersler için artık vazgeçilmez programlardan biri olup kullanımını az yada çok her öğretmenin bilmesi gerekiyor.Ancak programın ingilizce olması,ingilizce bilmeyen öğretmenlerin işini biraz daha zorlaştıyor.
Zoomla ilgili sorun yaşamamak, daha pratik ve sorunsuz kullanmak için yazdırıp masanızın üstünde bulunmasında yarar olduğunu düşünüyoruz.
Zoom Programını Türkçeleştirme ve Menü Tanıtımları 16
New Meeting: Yeni bir toplantı, görüşme, online ders oluşturacağınız alan kısımdır. New meeting kısmına tıklayıp Zoom uygulaması üzerinden derslerinizi veya toplantılarınızı yapabilirsiniz.
Join: Mevcut olan bir toplantıya ve derse katılabileceğiniz butondur. Bu kısma tıklayıp görüşmeyi oluşturan kişinin ID’sini ve şifresini girip sınıfa dahil olabilirsiniz. Mevcut olan bir toplantıya ve derse katılabileceğiniz butondur. Bu kısma tıklayıp görüşmeyi oluşturan kişinin ID’sini girip sınıfa dahil olabilirsiniz.
Schedule: İleri Tarihli Sohbet Programla, İleri tarihli bir meeting, online ders, sınıf ortamı oluşturabileceğiniz alandır. Derslerinizi şuan değilde 3 gün sonra planlamak istiyorsanız bu kısmı kullanabilirsiniz.
Zoom Programını Türkçeleştirme ve Menü Tanıtımları 17
Security: Güvenlik
Participants: Katılımcılar
Chat: (Sohbet) Sohbet penceresini görüntülemesine imkân sağlar.
Share Screen: Yine zoom uygulamamızı kullanmamızın en önemli faktörlerinden birisidir. “Share Screen” kısmından ekran paylaşımı yapıp, öğrencilerinizle derslerinizi beyaz bir tahta üzerinden veya bir doküman üzerinden yapabilirsiniz. Mesela konunuzla ilgili bir soru çözümü yapacağınız zaman, bu kısımdan sorunun pdf veya görüntüsünü öğrencileriniz ile paylaşıp, dokunmatik ekranlar sayesinde bir kalemle sorunuzu kağıda çözer gibi çözebilirsiniz. Buradaki önemli olan nokta telefon, tablet gibi cihazlarda dokunmatik özellik olduğu için dokunmatik kalemler sayesinde soru çözümleriniz oldukça kolaydır. Bilgisayarlar içinde “Grafik Tablet” kullanmanızı tavsiye ederiz. (özellikle işlem yapılan sayısal ağırlıklı dersler için)
Zoom Programını Türkçeleştirme ve Menü Tanıtımları 18
Share Screen butonuna tıkladıktan sonra üst kısımdaki gibi bir ekran gelir karşınıza. Öğrencileriniz ile derslerinizi bir beyaz tahta üzerinden yapmak istiyorsanız “Whiteboard” kısmına tıklayıp öğrencileriniz ile beyaz tahta paylaşımı yapabilirsiniz. Uygulamanın orta kısmı beyaz tahta haline gelir, üst kısımda ise öğrencilerinizin ve sizin görüntüleri gelir. Beyaz tahta üzerinden ister uygulamanın size sunmuş olduğu yazı, kalem vb. gibi araçlarla derslerinizi yapabilir isterseniz kendi kaleminize işlem yapabilirsiniz. Burada önemli olan nokta telefon, tablet gibi dokunmatik ekranlarda, dokunmatik bir kalemle tipki deftere yazı yazıyor gibi uygulama üzerine yazabilirsiniz. Bilgisayarlar içinde ek olarak grafik tablet kullanabilirsiniz.
Derslerinizi bir doküman üzerinden işlemek istiyorsanız dokümanı bilgisayarında yada telefonunuzda açtığınızda yukarıdaki ekranın alt kısmında olduğu gibi açık sekmeleri gösterir. Hangi doküman üzerinden ders yapmak istiyorsanız ona tıklayıp öğrencilerinizle sadece o dokümanın ekran paylaşımını yapabilirsiniz.
Record: Kayıt
Breakout Rooms: Bekleme Odası
Reactions: Uygulamanın emojileridir.
Zoom Programını Türkçeleştirme ve Menü Tanıtımları 19
Join Audio: Ses – Mikrofon/Hoparlör Ayarları
Start/Stop Video: Video Başlat/Durdur. Toplantı, konferans içi videonuzu durdurmaya yada başlatmanıza olanak sağlar.
Zoom Programını Türkçeleştirme ve Menü Tanıtımları 20
Mute: Mikrofonun sesini açar ya da kapatır.
New Share: (Yeni Paylaşım) Yeni bir ekran paylaşımı başlatmanızı sağlar.
Pause Share (Paylaşımı Duraklat): Geçerli paylaşılan ekranınızı duraklatabilirsiniz ve daha sonra tekrar paylaşımı devam ettirebilirsiniz.
End Meeting (Toplantıyı Sonlandır): Bu kısma tıklayarak canlı dersi ya da toplantıyı bitirebilirsiniz.
Manage Participant -Participants (Katılımcılar – Katılımcıları Yönetme): Katılımcıları görüntüleyip katılımcıları yönetebilirsiniz. Bu kısımdan katılımcılarınızı görebilir, direkt olarak kişinin görüntüsünün üstüne tıklayıp ona odaklanabilirsiniz.
Start – Stop Video ”Videoyu Başlat – Durdur”: Toplantı, konferans içi videonuzu durdurmaya yada başlatmanıza olanak sağlar. Buna tıklayarak online görüşmeyi / toplantıyı başlatabilirsiniz.
Chat (Sohbet): Sohbet penceresini görüntülemesine imkân sağlar. Katılımlarınıza notlarınızı paylaşmak için chat kısmından hangi katılımcıyla konuşmak istiyorsanız üstüne tıklayıp özel olarak konuşabilirsiniz. Veya tüm katılımcıların göreceği şekilde genele yazabilirsiniz. Öğrencileriniz size bir soru sormak istediğiniz eğer sesi kapalıysa chat kısmından sormak istediklerini size sorabilir.
Record (Kayıt): Dersinize, toplantınıza ya da konferansınıza ait video kaydını başlatmanızı sağlar. Sadece masaüstü zoom uygulamasında ve bazı mobil cihazlarda bu özellik vardır. Tüm görüşmelerinizi, meetinginize, derslerinizi kayıt etmenizi ve depolamanızı sağlayan kısım burasıdır. Bu buton sayesinde tüm derslerinizi kayıt edebilirsiniz. Record kısmına tıklayıp kaydı başlattıktan sonra, derslerinizi tamamlayıp görüşmeyi tamamladıktan sonra zoom otomatik olarak kaydınızın size sunacaktır.
Invate (Davet et): En önemli kısım burasıdır. Aslında zoom uygulamasını kullanmamızın nedeni olan birebir veya grup halinde derslerimizi yapacağımız öğrencilerimizi, kişileri oluşturmuş olduğumuz bu sınıfa davet etmemize sağlayan butondur. İster e-posta adresine davet linkinizi gönderebilirsiniz, isterseniz uygulamanız size verdiği linki kopyalayıp görüşme sağlamak istediğiniz kişilere iletebilirsiniz. Veya toplantı ID ve şifresini toplantıya katılacak kişilere yollayabilirsiniz. Bu arada güvenlik amacıyla getirilen son güncellemeyle birlikte artık toplantıya katılan herkesi toplantı sahibinin onaylaması gerekiyor. Bu linke tıklayan kişiler sizin sanal sınıfınıza katılmış olurlar.
Zoom Programını Türkçeleştirme ve Menü Tanıtımları 21
Test Speakers and Microphone (Hoparlör ve mikrofonu test et) : Sesi ve mikrofonu test edebilirsiniz.
Audio Settings: Ses ayarları, Sesinizi açıp kapatabileceğiniz butondur. Masaüstü kullanımda ekranın sol altında yer alır.
Zoom Uygulama Ayarları Nasıl Yapılır?
Zoom uygulaması üzerinden görüşmeye başladıktan sonra kullanmak isteyeceğiniz başlıca ayarlara bir bakalım;
Görüşmeye başladıktan sonra sesinizin karşı tarafa gitmesini istemediğiniz durumlar için mikrofon işaretine yani “Mute” seçeneğine tıklayabilirsiniz. Sesi tekrar açmak istediğinizde de yine aynı yere tıklamanız gerekiyor. Birçok kullanıcı Zoom’da ses gelmiyor yönünde şikayette bulunuyor. Eğer ses ile ilgili sorun yaşıyorsanız mikrofon ikonu yanındaki ok işaretine tıkladığınızda açılacak olan pencereden “audio settings”i seçerek mikrofon ve hoparlör ayarlarınızı kontrol edebilirsiniz.
Zoom uygulaması kamera kapatma seçeneği de sunuyor. Ses gibi görüntünüzü de “Stop Video” seçeneği ile kapatıp sonrasında yeniden açabilirsiniz. Dilerseniz görüşme boyunca kameranızı kapalı tutabilirsiniz.
Zoom Programını Türkçeleştirme ve Menü Tanıtımları 22
Bir toplantıya katılacaksınız ancak bulunduğunuz ortam dağınık ya da karşı taraftan görünmeye pek uygun değil. Bu durumda Zoom arka plan değişikliği seçeneğini kullanabilirsiniz. Sol alt köşede bulunan video ikonu yanındaki ok işaretine tıkladığınızda açılan pencereden “Choose Virtual Background” seçeneği ile arka plan için bir görsel seçebilirsiniz.
Zoom Programını Türkçeleştirme ve Menü Tanıtımları 23
Zoom ekran paylaşımı yapmanıza da imkan tanıyor. “Share Screen” seçeneği ile toplantı sırasında kendi ekranınızda açacağınız dosyaları katılımcıların görmesini sağlayabilirsiniz.
Sesli dosyalarda sesin karşı tarafa ulaşması için “Share computer sound” ibaresini işaretlemeyi unutmayın.
Ekran paylaşımı yaparken beyaz tahta da kullanıp anlatmak istediklerinizi anlık yazılı olarak karşı tarafa iletebilirsiniz. Çeşitli işaretlerle özellikle belirtmek istediğiniz noktalara dikkat çekebilirsiniz. Zoom çoklu ekran deneyimi sayesinde ekranınızdaki bilgileri paylaşırken katılımcıları da karşınızda görmeye devam edersiniz.
Zoom Programını Türkçeleştirme ve Menü Tanıtımları 24
Chat seçeneği ile tüm kullanıcılara ya da seçeceğiniz kullanıcıya yazılı mesajlarınızı anlık olarak iletebilirsiniz.
Öğretmenseniz ya da yönetici pozisyonundaysanız toplantılar başlatmanız, sınıflar açmanız da gerekecektir. Bu amaçla Zoom üzerinde oturum açan herkes Personal Meeting Room ve Personal Meeting ID sahibi olur. Böylece herkes toplantı başlatabilir.
Zoom’u ücretsiz kullanıyorsanız, 5 Nisan 2020 tarihi için izlenen politika toplantıların 40 dakika ve 100 katılımcıyla sınırlanması şeklindedir. Limitsiz süre için aylık 14 Dolar bir ücret bulunmaktadır. Ancak 40 dakika, ciddi bir sorun değildir. 40 dakika sonunda toplantıyı sonlandırıp aynı bilgilerle tekrar toplantı başlatmak mümkündür.
Zoom ile toplantı 2 şekilde başlatılır. Webden Zoom’un sitesinden veya bilgisayar, cep telefonu ya da tablete yüklü programlardan.
A. Webden Toplantı Başlatma:
Zoom programında toplantı oluşturmak için öncelikle Zoom web sitesine gidilir ve kullanıcı adı ve şifresiyle oturum açılır.
«Schedule a Meeting» ileri tarih ve saatli bir toplantı oluşturabilir «Host A Meeting» ten anında varsayılan ayarlarla anlık bir toplantı başlatabilirsiniz.
1. Host a Meeting (Anlık Toplantı):
Host a Meeting bağlantısına tıklanarak bir toplantı ayarlayalım.
Zoom ile Toplantı (Konferans) Oluşturma 40
Host a Meeting (Toplantı Düzenleme) linkine tıklandığında,
width video of (Videosuz) : Videosuz sadece ses ve ekran paylaşımı
screen share only (yalnızca ekran paylaşımı): yalnızca ekran paylaşımı
width video on(Videolu): Videolu, ses, video ve ekran paylaşımı
üç seçeneğinden birini seçerek toplantıyı başlatıyoruz.
Ekran paylaşma toplantısı sırasında video otomatik olarak açılmaz. Toplantı sırasında videonuzu / kameranızı “Başlatmanız” gerekir.
Bu noktada Zoom uygulamasıyla devam etmeniz daha verimli olacaktır.
Zoom ile Toplantı (Konferans) Oluşturma 41
Açılan pencereden AÇ butonuna tıklayarak uygulamaya geçiş yapıyoruz.
Uygulama bilgisayarınızda yüklü değil ise Zoom’un web sayfası üzerinden uygulamayı yükleyebilirsiniz. Üstteki şekilde uygulamaya geçiş ekranına yer verilmiştir. Uygulamayı yüklü değil ise yüklemek üzere download now bağlantısına tıklayabilirsiniz.
2. Schedule a Meeting (İleri Tarihli Toplantı):
Zoom ile Toplantı (Konferans) Oluşturma 42
Alternatif olarak My Account bağlantısı üzerinden hesabını açıp, Meetings sekmesi altında Schedule a New Meeting bağlantısı yardımıyla bir toplantı ayarlayabilirsiniz.
Zoom ile Toplantı (Konferans) Oluşturma 43Zoom ile Toplantı (Konferans) Oluşturma 44
Toplantı ayarlama işlemini gerçekleştirirken aşağıdaki hususlara dikkat ediniz:
Toplantı tarihi ve saatine (Ders programında tanımlanan tarih ve saati dikkate alınız)
Meeting ID : Toplantı id ve şifrenizi sabitlemek ve tüm derslerde kullanmak için Personal Meeting ID ***** seçeneğini işaretleyebiliriz
Toplantı seçenekleri istekleriniz doğrultusunda ayarlayınız.
Zoom ile Toplantı (Konferans) Oluşturma 45
Allow participants to join anytime (Katılımcıların istedikleri zaman katılmasına izin verin)
Mute participants upon entry (Girişte katılımcıları sessize al)
Approve or block entry to users from specific regions/countries (Belirli bölgelerden / ülkelerden gelen kullanıcılara girişi onaylayın veya engelleyin)
Toplantının kaydedilmesi için Automatically record meeting on the local computer (Toplantıyı yerel bilgisayarda otomatik olarak kaydedin) seçeneğini aktif edin.
Gerekli tanımlamalar yapıldıktan sonra toplantı katılım linki ve şifresi sistem tarafından oluşturulacaktır.
Zoom ile Toplantı (Konferans) Oluşturma 46
İlgili bağlantıyı ve şifreyi katılımcılar ile paylaşmayı unutmayınız. Aksi durumda katılımcılar düzenlenen toplantıya katılamayacaktır.
B. Bilgisayar Tablet ya da Cep Telefonundan Toplantı Başlatma:
Önce Zoom programını açıyoruz.
Zoom ile Toplantı (Konferans) Oluşturma 47
Cep telefonu ya da tablet için,
Zoom ile Toplantı (Konferans) Oluşturma 48
Uygulama çalıştırıldığında alttaki resim çıkacak.
New Meeting: Yeni bir toplantı, görüşme, online ders oluşturacağınız alan bu kısımdır. New meeting kısmına tıklayıp zoom uygulaması üzerinden derslerinizi veya toplantılarınızı yapabilirsiniz.
Join: Mevcut olan bir toplantıya ve derse katılabileceğiniz butondur. Bu kısma tıklayıp görüşmeyi oluşturan kişinin ID’sini girip sınıfa dahil olabilirsiniz.
Schedule: İleri tarihli bir meeting, online ders, sınıf ortamı oluşturabileceğiniz alandır. Derslerinizi şuan değilde 2 gün sonra planlamak istiyorsanız bu kısmı kullanabilirsiniz.
*Ders verecek öğretmenler veya toplantı yapacak kişiler, Zoom uygulamasını giriş yaptıktan sonra bu ekranda “New Meeting” kısmından yeni bir sınıf oluşturmanızı tavsiye ederiz.
Burada New Meeting butonuna tıklıyoruz.
Zoom ile Toplantı (Konferans) Oluşturma 49
New Meeting butonuna tıklayıp biraz bekledikten sonra online sınıfınız artık oluşturulmuştur. Zoom uygulaması üzerinde oluşturulan online sınıf, meeting alanı aşağıdaki gibidir.
“Join with Computer Audio” butonuna bastıktan sonra herhangi teknik ya da bir ayar sorunu yok ise bilgisayarınıza kurulu bulunan ses ekipmanları aktif olacaktır.
Zoom ile Toplantı (Konferans) Oluşturma 50
Test Speker and Microphone ile Mikrofon ve hoparlörünüzün sorunsuz çalıştığını test edebilirsiniz.
Not: Ücretsiz sürüm kullandığınız için 3 kişiden fazla katılımcı için oturum süresi 40 dakikadır. Bu süreden fazla ders yapacaksanız ikinci bir oturum açmanız gerekecektir.
Sonrasında Alt+I tuşlarına basarak Copy URL ya da Copy Invitation URL kopyala veya daveti kopyala düğmelerinden birini seçip toplantı davetimizi panoya kopyalayarak dilediğiniz kişilere gönderebilirsiniz.
Zoom ile Toplantı (Konferans) Oluşturma 51
Ses ve görüntü tercihlerinizi sol alt köşede bulunan “Join/Mute Audio” ve “Start/Stop Video” toplantının akışına göre değiştirebilirsiniz.
Zoom ile Toplantı (Konferans) Oluşturma 52
Bu iki buton karşı tarafa görüntü ve ses gitmesi/gitmemesi gereken durumlarda değiştirilebilir. “Participants” butonu ile katılımcıları “Chat” butonu ile diğer katılımcılarla toplantıyı bölmeden iletişim kurabilirsiniz.
“Share Screen” butonu ile katılımcılarla kendi ekranınızı paylaşabilirsiniz. Mesela konunuzla ilgili bir soru çözümü yapacağınız zaman, bu kısımdan sorunun pdf veya görüntüsünü öğrencileriniz ile paylaşıp, dokunmatik ekranlar sayesinde bir kalemle sorunuzu kağıda çözer gibi çözebilirsiniz. Buradaki önemli olan nokta telefon, tablet gibi cihazlarda dokunmatik özellik olduğu için dokunmatik kalemler sayesinde soru çözümleriniz oldukça kolaydır. Bilgisayarlar içinde “Grafik Tablet” kullanmanızı tavsiye ederiz. (özellikle işlem yapılan sayısal ağırlıklı dersler için)
Zoom ile Toplantı (Konferans) Oluşturma 53
Share Screen butonuna tıkladıktan sonra üst kısımdaki gibi bir ekran gelir karşınıza. Öğrencileriniz ile derslerinizi bir beyaz tahta üzerinden yapmak istiyorsanız “Whiteboard” kısmına tıklayıp öğrencileriniz ile beyaz tahta paylaşımı yapabilirsiniz. Uygulamanın orta kısmı beyaz tahta haline gelir, üst kısımda ise öğrencilerinizin ve sizin görüntüleri gelir. Beyaz tahta üzerinden ister uygulamanın size sunmuş olduğu yazı, kalem vb. gibi araçlarla derslerinizi yapabilir isterseniz kendi kaleminize işlem yapabilirsiniz. Burada önemli olan nokta telefon, tablet gibi dokunmatik ekranlarda, dokunmatik bir kalemle tipki deftere yazı yazıyor gibi uygulama üzerine yazabilirsiniz. Bilgisayarlar içinde ek olarak grafik tablet kullanabilirsiniz.
Derslerinizi bir doküman üzerinden işlemek istiyorsanız dokümanı bilgisayarında yada telefonunuzda açtığınızda yukarıdaki ekranın alt kısmında olduğu gibi açık sekmeleri gösterir. Hangi doküman üzerinden ders yapmak istiyorsanız ona tıklayıp öğrencilerinizle sadece o dokümanın ekran paylaşımını yapabilirsiniz.
Toplantı tamamlandıktan sonra sağ alt köşede bulunan “End Meeting” butonuna basarak toplantıdan ayrılabilirsiniz.
Bilgisayar içinde yukarıda bahsettiğimiz üzere New Meeting Options içindeki Personal Meeting ID alt menüsünde bulunan PMI Settings içinden ulaşılan bazı ayarlar şunlardır:
Personal Meeting ID: Pro hesabınız varsa bu Numara değiştirilebilir.
Require Meeting Password: Bu alana toplantı odanız için şifre yazılıdır ve bunu değiştirebilirsiniz. Zoom 5 Nisan itibarıyla Oda şifresi koymayı zorunlu hale getirmiştir.
Zoom Toplantı Ayarları 61
Video Host: Yönetici kişinin videosunun açık veya kapalı olacağını belirler.
Video Participants: katılımcıların videosunun açık veya kapalı olacağını belirler.
Liste kutusu: Burada Hangi ses kaynağıyla bağlantı kurulacağı belirlenir Bilgisayar Ses kartı, Telefon Ses kartı, üçüncü parti bir ses veya varsayılan şekilde gelen bilgisayar ve telefon bir arada seçenekleri vardır.
Dialing From: Zoomun çoğu kişi tarafından bilinmeyen bir özelliği de telefon kullanılarak da bağlantı kurulabilmesidir. Her ülke için tanımlı telefon numaraları vardır ve bu numara aranıp verilen Toplantı numarası ve şifresi girildikten sonra kareye basılarak toplantı odalarına bağlanılabilir. İşte burada davet mesajında gösterilecek ülkeler seçilebilir. Türkiye’de telefon kullanılan ülkeler arasındadır.
Advanced Meeting Options Gelişmiş Seçenekler açıldığında da şu öğeleri görürüz.
Enable Waiting Room: Bu onay kutusu işaretlenirse, Katılımcılar siz onları kabul edene kadar bir bekleme odasında bekletilir. Siz dilediğiniz katılımcıyı daha sonra odaya alabilirsiniz. Belirli grup çalışmaları yapılırken faydalı olabilir.
Enable Join Before Host: Bu da katılımcıların siz odaya gelmeden odaya girip giremeyeceklerini belirler. Eğer işareti kaldırırsanız katılımcılar sizden önce odaya giremez.
Mute Participants on Entry: Bu ayar oldukça önemlidir. İşaretlenirse Katılımcılar odaya geldiklerinde sesleri kapalıdır. Böylece ses açık yaşanan kazaların önüne geçilmiş olur. Katılımcıların kendi seslerini açıp açmama izni başka bir ayar yerinde olduğundan onu sonra anlatacağım.
Only Authenticated Users Can Join: Zoom içinde üye olmasanız bile size gönderilen bir davet bağlantısına tıklayıp zoom ile odalara girebilirsiniz. Ancak bu onay kutusu işaretlenirse Zoom üyesi olmayanlar odanıza giremez.
Automatically Record Meeting: Toplantı sahibi olarak isterseniz toplantınızı başladığınız an otomatik olarak kaydedebilirsiniz.
iOS cihazlarda benzer toplantı seçeneklerine ulaşmak için Meetings sekmesine girip Buradaki toplantı numaranızın yanında bulunan Edit düğmesine basmanız gerekir. Bilgisayara göre ayarlar daha kısıtlıdır. Buradaki ayarlar şunlardır.
Host Video ve participant video: Bu anahtarlar yönetici ve katılımcıların video durumlarını kontrol Eder.
Audio Option: Buraya girildiğinde hem telefonla aranacak ülke seçimi yapılabilir, hem de hangi ses sisteminin kullanılacağı seçilebilir. Bilgisayarla aynı şeyler bulunur.
Enable Waiting Room, Allow Join Before Host, Automatically Record Meeting anahtarları burada da vardır. Yani bekleme odası, yöneticiden önce toplantıya girme izni ve toplantının otomatik kaydedilmesi. iPhone ile toplantı ancak buluta kaydedilebilmektedir, bunun içinde pro hesabı gereklidir.
iOS cihazlardaki bilgisayarda göremediğim bir ayar ise Alternative Host düğmesidir. Zoom üyeliği olan birini toplantının alternatif yönetici olarak belirleyebilir ve siz yokken onun yönetici olmasını sağlayabilirsiniz.
Ayarlardaki son düğme ise Allow Join Meeting seçeneğidir ve var sayılan olarak Everyone yani herkes seçeneği işaretlidir. Yani buradan yalnızca zoom üyesi olanların da toplantıya katılmasını ayarlayabilirsiniz.
Görüşmeye başladıktan sonra sesinizin karşı tarafa gitmesini istemediğiniz durumlar için mikrofon işaretine yani “Mute” seçeneğine tıklayabilirsiniz. Sesi tekrar açmak istediğinizde de yine aynı yere tıklamanız gerekiyor. Birçok kullanıcı Zoom’da ses gelmiyor yönünde şikayette bulunuyor. Eğer ses ile ilgili sorun yaşıyorsanız mikrofon ikonu yanındaki ok işaretine tıkladığınızda açılacak olan pencereden “audio settings”i seçerek mikrofon ve hoparlör ayarlarınızı kontrol edebilirsiniz.
Zoom uygulaması kamera kapatma seçeneği de sunuyor. Ses gibi görüntünüzü de “Stop Video” seçeneği ile kapatıp sonrasında yeniden açabilirsiniz. Dilerseniz görüşme boyunca kameranızı kapalı tutabilirsiniz.
Zoom Toplantı Ayarları 62
Bir toplantıya katılacaksınız ancak bulunduğunuz ortam dağınık ya da karşı taraftan görünmeye pek uygun değil. Bu durumda Zoom arka plan değişikliği seçeneğini kullanabilirsiniz. Sol alt köşede bulunan video ikonu yanındaki ok işaretine tıkladığınızda açılan pencereden “Choose Virtual Background” seçeneği ile arka plan için bir görsel seçebilirsiniz.
Zoom Toplantı Ayarları 63
Zoom ekran paylaşımı yapmanıza da imkan tanıyor. “Share Screen” seçeneği ile toplantı sırasında kendi ekranınızda açacağınız dosyaları katılımcıların görmesini sağlayabilirsiniz.
Sesli dosyalarda sesin karşı tarafa ulaşması için “Share computer sound” ibaresini işaretlemeyi unutmayın.
Ekran paylaşımı yaparken beyaz tahta da kullanıp anlatmak istediklerinizi anlık yazılı olarak karşı tarafa iletebilirsiniz. Çeşitli işaretlerle özellikle belirtmek istediğiniz noktalara dikkat çekebilirsiniz. Zoom çoklu ekran deneyimi sayesinde ekranınızdaki bilgileri paylaşırken katılımcıları da karşınızda görmeye devam edersiniz.
Zoom Toplantı Ayarları 64
Chat seçeneği ile tüm kullanıcılara ya da seçeceğiniz kullanıcıya yazılı mesajlarınızı anlık olarak iletebilirsiniz.
Zoom da video arka planına resim eklemek için Start Video düğmesinin yanındaki yukarı ok tuşuna basınız ve Choose Virtual Background düğmesine tıklayınız. Açılan pencereden seçtiğiniz resim videonuzda arka plan olarak gösterilecektir.
Zoom İlave Ayarlar 72
Katılımcıları Yönetme
Manage Participants düğmesine ( Katılımcıları yönetme düğmesi ) tıkladığınızda sağ tarafta katılımcı listesini görebileceğiniz bir pencere açılacaktır.
Alt kısımda katılımcıları seslerini kapatmak için “Mute All” konuşmalarını sağlamak için “Unmute All” düğmelerini kullanabilirsiniz. Hepsini kapatıp tek bir katılımcıya da konuşma hakkı verebilirsiniz bunu da katılımcının yanındaki düğmelerini kullanarak yapabilirsiniz.
Ekran Paylaşımı
Bilgisayarınızdan dosya veya ekranınız paylaşmak için “Share Screen” (ekran paylaş) düğmesine tıklayınız.
Zoom İlave Ayarlar 73
Tıkladığınızda yukarıdaki resimdeki gibi bir pencere açılacaktır. Açılan pencerede ekranınız ile birlikte açık olan programlar da listelenecektir. Bunlardan paylaşmak istediğiniz Screen (ekran), Whiteboard (Beyaz tahta) veya programı seçip sağ alttaki Share (Paylaş) butonuna tıkladığınızda paylaşım başlayacaktır. Paylaşımı durdurmak için stop share düğmesini tıklayınız.
Katılımcılarla Sohbet (Chat)
Chat (Sohbet) butonuna tıkladığınızda sağ tarafta katılımcılar ile yazışma penceresi açılacaktır. Herkese veya özel mesaj yazıp gönderebilirsiniz. Aynı zamanda onların yazdıklarını okuyabilirsiniz. To Everyone (Herkes) seçili durumunda yazdığınız herkese iletilir. Everyone düğmesinin yanındaki düğmeye tıkladığınızda özel mesaj göndermek istediğiniz katılımcıyı seçip mesajınızı gönderebilirsiniz.
Oturmu Kayıt Altına Alma
Yapacağınız oturumun kayıt edilmesi gerekmektedir. Daha sonra öğrencilerin yapmış olduğunuz dersi dinleyebilmesi açısından son derece önemli bir husustur. Aksi taktirde kayıt etmediğiniz dersi yeniden yapma durumunda kalırsınız. Dersinize başlamadan önce mutlaka Record (Kayıt et) düğmesine tıklayınız ve dersinize öyle başlayınız. Record (Kayıt düğmesine tıkladığınızda) Ekranınızın sol üst köşesinde kayıt düğmesinin aktif olduğunu gösteren Recording yazar ve yanında kırmızı bir nokta yanıp söner.
Zoom İlave Ayarlar 74
Oturumu Sonlandırma
Dersiniz sona erdiğinde End Meeting (Oturumu Sonlandır) düğmesine tıklayınız. Oturumu sonlandır düğmesine tıkladığınızda aşağıdaki gibi bir pencere açılacaktır.
Zoom İlave Ayarlar 75
End Meeting for All düğmesine tıkladığınızda yapmış olduğunuz oturum bilgisayarınıza video formatına çevrilip kayıt edilecektir. Daha sonra bu kaydınızı izleyebilir web de paylaşabilirsiniz. Böylelikle öğrencileriniz istedikleri zaman dersinizi dinleyebileceklerdir.
İleri Tarihli Ders Ayarlama
Eğer ileri tarihli bir canlı ders planı yapmak istiyorsanız. Onun için yapmanız gereken aşağıdaki resimdeki gibi Schudele (program) tıklayınız ve ders tarih ve saatini ayarlayınız. Password onay kutusundaki işareti kaldırırsanız Moodle içinde öğrencilerinizle paylaştığınız link ile öğrencileriniz daha kolay erişim sağlayacaktır.
Zoom İlave Ayarlar 76
Bağlantı adresini kopyalayın ve katılımcılara iletin.
İzin kelimesinin resmi anlamı, birisinin belirli bir şeyi yapmasına izin vermek anlamına gelir – herhangi bir işlem yapılması için verilen izin veya izindir. Android dünyasında, izinler mektup tanımını takip ediyor. Android uygulamaları, bazıları kullanıcılardan izin gerektiren bir dizi işlem gerçekleştirmek üzere oluşturulmuştur.
Bu yazı da Android’in izinlerini nasıl sınıflandırdığını ve kullanıcılardan nasıl izin alacağınızı anlamaya çalışacağız. Bu izinler doğru şekilde kullanılmazsa, uygulamanın çökmesine neden olabilir.
Varsayılan olarak, bir Android uygulaması kendisine verilen sıfır izinlerle başlar. Uygulamanın, cihazın korumalı özelliklerinden herhangi birini kullanması gerektiğinde (ağ istekleri gönderme, kameraya erişme, SMS gönderme vb.), kullanıcının bunu yapması için uygun izin alması gerekir.
Yani Android’in izin sistemi, kurulum sırasında bu izinlerin istenmesi nedeniyle baştan beri en büyük güvenlik sorunlarından biridir. Uygulama bir kez yüklendiğinde, herhangi bir kullanıcının izni ile tam olarak ne yaptığını kabul etmeden, herhangi bir kullanıcının onayı olmadan verilen tüm şeylere erişebiliyordu. Bu güvenlik zayıflığıyla kullanıcının kişisel verilerini toplamaya ve bunları kötü bir şekilde kullanmaya çalışan çok fazla yazılım mevcuttu. Android özgürlüktü ama bu sebepten de çok eleştiriliyordu.
Özgürlüktü ama dezavantajı da oldukça açıktı: geliştiriciler veri toplamak için izin almaya ve kullanıcının gizliliğini ihlal etmeye başladı. Google, uygulamanın söz konusu izinleri gerçekten gerektirip gerektirmediğini kontrol etmediğinden ve kullanıcının belirli izinleri sağlama ve uygulamayı kullanmaya devam etme seçeneği bulunmadığından, geliştiriciler sistem bilgisine veya mikrofona herhangi bir kısıtlama olmadan erişme konusunda çok rahattılar
.
Android içerisinde 130’dan fazla farklı izin türü vardır. Geliştiricilerin bunlardan her biri için izin alması zordu. Daha da kötüsü, uygulamanızın kullanıcıların kaç tane iznine ihtiyacı olduğunu görmelerinin korkutuculuğundan ziyade neden bu kadar çok izne ihtiyacınız olduğunu kullanıcıya açıklamak çok daha zordur.
Android M (Marshmallow , Android 6.0, API 23)
İOS’un aksine, Android uygulama izinlerine partiye biraz geç geldi. Android Marshmallow (Android M), 5 Ekim 2015 tarihinde piyasaya sürüldü.
Marshmallow’dan önce, izinler kurulum zamanında ele alınmış AndroidManifest.xml ve proje içerisinde belirtilmiştir . İzinlerin tam listesi burada bulunabilir.
Marshmallow’dan önce izinler çok daha basittir (API 23). Tüm izinler kurulum sırasında ele alındı. Bir kullanıcı Google Play Store’dan bir uygulama yüklemeye gittiğinde , kullanıcıya uygulamanın gerekli kıldığı izinlerin bir listesi sunuldu (bazı kişiler buna “izin duvarı” olarak adlandırılıyordu. Kullanıcı tüm izinleri kabul edip devam edebilirdi. Uygulamayı yüklemek veya uygulamayı yüklememeye karar vermekle, kullanıcı izinlerin tamamına izin veriyordu ya da hiç birine izin vermiyordu.Uygulama için yalnızca belirli izinlervermenin bir yolu yoktu ve kullanıcının uygulama yüklendikten sonra belirli izinleri iptal etmesinin bir yolu yoktu.
Android Marshmallow’un halka açık sürümüyle Google, Android için çalışma zamanı izinlerini sundu ve böylece izinler alanını daha iyi hale getirdi. Android Marshmallow, yalnızca izinleri basitleştirmek değil, aynı zamanda gereken izin sayısını azaltmak için uygulama izinlerinde tamamen yeni bir uygulama sunar.
Peki daha önce başlatılmış olan uygulamaya ne oldu?
Eski uygulamalar Android Marshmallow’da çalışacak mı? TargetSdkVersion 22 ya da daha az ise cevap evet .
Bu yeni izin sistemi şu anda size biraz panik getirebilir. “Hey! 3 yıl önce başlattığım uygulamama ne oldu. Android 6.0 aygıtına yüklenmişse, bu davranış da geçerli mi? Uygulamam da çökecek mi?!?”
Endişelenme. Android ekibi çoktan düşünmüş. Uygulamanın targetSdkVersion değeri 23’ten küçükse, uygulamanın henüz yeni izin sistemiyle test edilmediği ve aynı eski davranışa geçeceği varsayılır: kullanıcı yükleme zamanında her bir izni kabul etmek zorundadır ve hepsine izin verilir kurulduktan sonra!
Sonuç olarak, uygulama önceki gibi mükemmel şekilde çalışacaktır. Yine de, kullanıcının bundan sonra hala bir izni iptal edebileceğini unutmayın! Her ne kadar Android 6.0 bunu yapmaya çalıştıklarında kullanıcıyı uyarıyorlar ancak yine de iptal edebiliyorlar.
Şu an kafandaki bir sonraki soru. Peki başvurum çökecek mi?
Android ekibi aracılığıyla Tanrı’dan gönderilen böylesi bir nezaket. TargetSdkVersion uygulamasının 23’ten daha az olduğu uygulamada izinli kullanıcının iptal edilmesini gerektiren bir işlev çağırdığımızda, İstisna atılmaz. Bunun yerine sadece hiçbir şey yapmaz. Değeri döndüren işlev için nulldöndürür veya 0 duruma göre değişir.
Android 6.0 Marshmallow’da, uygulama kurulum sırasında herhangi bir izin verilmez. Bunun yerine, uygulama çalışma zamanında kullanıcıdan birer birer izin istemelidir.
Sağdaki reismde yani Api 23 den sonra geliştiricinin, kullanıcının henüz izin vermemiş olması gereken izni gerektiren bazı işlevleri çağırmayı denemesi durumunda, işlev aniden uygulamanın çökmesine neden olacak bir İstisna atar.
Ayrıca, kullanıcı telefonun Ayarlar uygulamasını kullanarak verilen izni istediği zaman iptal edebilir.
Şimdi geliştirici artık uygulama kurulumunda tüm izinlere sahip değil. Bunun yerine, geliştiricinin bir resmi tıklatmak veya bir dosyayı kaydetmek için kullanıcının deposuna erişmek için kamerayı kullanmak gibi belirli bir işlemi gerçekleştirme iznini istemesi gerekir. Google ayrıca Android’deki izinler kümesini normal ve tehlikeli izinlere ayırdı .
Kurulum sırasında otomatik olarak verilecek ve iptal edilemeyecek bazı izinler vardır. Buna Normal İzin (PROTECTION_NORMAL) diyoruz.
Normal izinler, kullanıcının gizliliği veya cihazın çalışması için risk teşkil etmeyen izinlerdir. Sistem bu izinleri otomatik olarak verir. Bunlar arasında internete bağlanmak, ağ, Bluetooth, wifi ve NFC bilgilerini almak, alarmları ve duvar kağıtlarını ayarlamak ve bir cihazdaki ses ayarlarını değiştirmek sayılabilir.
Normal izinler, uygulamanızın uygulama sanal alanı dışındaki verilere veya kaynaklara erişmesi gereken alanları kapsar, ancak kullanıcının gizliliği veya diğer uygulamaların çalışması için çok az risk olduğu yerlerdir. Örneğin, saat dilimini ayarlama izni normal bir izindir.
Bir uygulama normal bir izne ihtiyaç duyduğunu beyan ederse, sistem otomatik olarak bu izni yükleme sırasında uygulamayı verir. Sistem, kullanıcıdan normal izinler vermesini istemez ve kullanıcılar bu izinleri iptal edemez.
Android 9’dan itibaren (API seviyesi 28), aşağıdaki izinler şöyle sınıflandırılır PROTECTION_NORMAL:
Sadece basitçe bu izin isteklerini AndroidManifest.xml dosyasına yazın, gayet iyi sonuç verecektir. Bu izinler kullanıcı tarafından İptal edilemediğinden yazılım içerisinde bu listelenen izinleri kontrol etmeniz gerekmez.
Sistem bu uygulama izinlerini yükleme sırasında verir, ancak yalnızca izin kullanmaya çalışan uygulama, izni tanımlayan uygulama ile aynı sertifika ile imzalandığında verilir.
Android 8.1’den itibaren (API seviyesi 27), üçüncü taraf uygulamaların kullanabileceği aşağıdaki izinler şöyle sınıflandırılır PROTECTION_SIGNATURE:
Tehlikeli izinler, uygulamanın, kullanıcının kişisel bilgilerini içeren veri veya kaynakları istediği veya kullanıcının depolanan verilerini veya diğer uygulamaların çalışmasını etkileyebileceği alanları kapsar. kullanıcının gizliliğini veya cihazın çalışmasını potansiyel olarak etkileyebilecek izinlerdir. Kullanıcı açıkça bu izinleri vermeyi kabul etmelidir. Bunlar, kameraya, rehbere, konuma, mikrofona, sensörlere, SMS’e ve depolamaya erişmeyi içerir.
Örneğin, kullanıcının bağlantılarını okuyabilmek tehlikeli bir izindir. Bir uygulama tehlikeli bir izin gerektirdiğini bildirirse, kullanıcının açıkça uygulamaya izin vermesi gerekir. Kullanıcı izni onaylayana kadar, uygulamanız bu izne bağlı işlevler sağlayamaz.
Normal ve tehlikeli izinler gibi davranmayan birkaç izin vardır. SYSTEM_ALERT_WINDOWve WRITE_SETTINGSözellikle hassastır, bu nedenle çoğu uygulama bunları kullanmamalı. Bir uygulama şu izinlere birini gerekiyorsa, apaçık izne beyan, gerekir ve kullanıcının izni talep eden bir niyet gönderin. Sistem, kullanıcıya ayrıntılı bir yönetim ekranı göstererek amacına cevap verir.
Android sistemi tarafından sağlanan tüm izinler adresinde bulunabilir Manifest.permission
İzin Grupları
İzinler, bir cihazın yetenekleri veya özellikleriyle ilgili gruplar halinde düzenlenir. Bu sistem altında, izin talepleri grup düzeyinde ele alınmakta ve tek bir izin grubu, uygulama bildiriminde birkaç izin beyanına karşılık gelmektedir. Örneğin, SMS grubu hem bildirimleri hem READ_SMSde RECEIVE_SMSbildirimleri içerir. Bu şekilde gruplama izinleri, kullanıcının karmaşık ve teknik izin talepleri tarafından boğulmadan daha anlamlı ve bilinçli seçimler yapmasını sağlar.
Tehlikeli izinler kendi içerisinde gruplara ayrılmıştır. İzinler, dokuz gruba ayrılarak kullanıcıların bir grup halinde bir araya getirilerek tek bir işlemle kapsanan tüm izinleri vermelerini sağlar.
Örneğin, Bu, kullanıcının konumunu bulmak için GPS’i kullanmanız gerekirse, ACCESS_FINE_LOCATION ve ACCESS_COARSE_LOCATION gibi 2 adet izin belirtmeniz anlamına geliyordu ya da bir kullanıcıya Rehber’i görüntüleme, düzenleme ve ekleme izni vermek için 3 adet izin belirtmek gerekiyordu.
Bunun yerine izinleri tek tek almak yerine izin grubuna (Kişiler adı verilen) izin istemek daha etkilidir.
İzin Grupları Konum, Rehber, Telefon, Sensörler, SMS ve Depolama gibi benzer işlemleri gerçekleştiren izinleri basitleştirmeye çalışır. Bir uygulama grubu şu anda tek bir izin grubuna bir ila yedi izin arasında herhangi bir yerde bir araya geliyor. Bu, bir gruptaki tüm izinlerin tek seferde talep edebileceğiniz anlamına gelir!
Tüm tehlikeli Android izinleri izin gruplarına aittir. Herhangi bir izin, koruma seviyesinden bağımsız olarak bir izin grubuna ait olabilir. Bununla birlikte, bir izin grubu yalnızca izin tehlikeli olduğunda kullanıcı deneyimini etkiler.
Cihaz Android 6.0 kullanıyorsa (API seviye 23) ve uygulamanın targetSdkVersion23 veya daha üstü ise, uygulamanız tehlikeli bir izin istediğinde aşağıdaki sistem davranışı uygulanır:
Uygulamanın izin grubunda şu anda herhangi bir izni yoksa, sistem, uygulamanın erişmek istediği izin grubunu tanımlayan kullanıcıya izin isteği iletişim kutusunu gösterir. İletişim kutusu, o gruptaki belirli izni açıklamıyor. Örneğin, bir uygulama READ_CONTACTSizin isterse, sistem iletişim kutusu sadece uygulamanın cihazın bağlantılarına erişmesi gerektiğini söyler. Kullanıcı onay verirse, sistem uygulamaya sadece istediği izni verir.
Uygulamaya, aynı izin grubunda başka bir tehlikeli izin verilmişse, sistem kullanıcı ile herhangi bir etkileşime girmeden derhal izni verir. Örneğin, bir uygulamanın daha önce talep etmesi ve READ_CONTACTSizin verilmiş olması ve daha sonra talep WRITE_CONTACTSetmesi durumunda, sistem, izinler iletişim kutusunu kullanıcıya göstermeden hemen bu izni verir.
Cihaz Android 5.1 kullanıyorsa (API seviye 22) veya daha düşükse veya uygulama targetSdkVersion22 veya daha düşükse, sistem kullanıcıdan yükleme sırasında izinleri vermesini ister. Bir kez daha, sistem kullanıcıya bireysel izinleri değil, uygulamanın hangi izin grubunu gerektirdiğini söyler . Örneğin, bir uygulama READ_CONTACTSkurulum istediğinde , iletişim kutusu Rehber grubunu listeler. Kullanıcı kabul ettiğinde, uygulamaya yalnızca READ_CONTACTSizin verilir.
Not: Kullanıcı, aynı grupta başka bir izin vermiş olsa bile, uygulamanızın ihtiyacı olan her izni açıkça talep etmesi gerekir. Ek olarak, izinlerin gruplara ayrılması gelecekteki Android sürümlerinde değişebilir. Kodunuz, aynı grupta bulunan belirli bir izin grubuna bağlı bir mantığa sahip olmamalıdır.
Aygıttan mikrofon sesine erişimle ilgili izinler için kullanılır. Telefon görüşmelerinin de ses yakaladığını ancak ayrı (daha görünür) bir izin grubunda olduğunu unutmayın.
Manifest.permission.RECORD_AUDIO (Mikrofon ile kayıt)
Artık uygulamamızın yeni Çalışma Zamanı İznini mükemmel bir şekilde desteklemesinin zamanı geldi. Önce compileSdkVersion ve targetSdkVersion ayarlarını 23 yaparak başlayalım.
Dikkat:Manfest izni verilmezse uygulama kilitlenir.
İzinler, aşağıdaki tablo gibi İzin Grubunda gruplandırılmıştır .
Bir uygulamada tehlikeli kategorisindeki bir izne ihtiyaç varsa, bu izin kullanıcı tarafından daha önce onaylanmış bile olsa her seferinde uygulama tarafından kontrol edilmelidir. Çünkü kullanıcı verdiği izinden istediği an cayma hakkına sahiptir. Telefonun “Ayarlar – Uygulamalar – İlgili Uygulama – İzinler” kısmından bu işlemi yapabilir.
Android uygulamamız tehlikeli kategorisindeki bir izne ihtiyaç duyarsa, bu yetki için mutlaka kullanıcıya sorulması gerekir. Bir sonraki adım, izin verilip verilmediğini kontrol etmek için bir işlev oluşturmaktır.
//Öyleyse önce kullanıcıdan izin istemek için bir iletişim kutusu çağıralım. Sonra yeni bir kişi oluşturarak bir sonraki adıma geçebiliriz.
Not:Bir izin grubunda herhangi bir izin verilirse aynı gruptaki başka bir izin de otomatik olarak verilecektir.
Yani, bir kez WRITE_CONTACTS izni verildiyse READ_CONTACTS ve GET_ACCOUNTS izinleri de otomatik olarak verilir.
Uygulama tarafından izin kontrolü ContextCompat.checkSelfPermission(Context context, String permission)metodu ile yapılır.
Bu metotta kullanıcı
izin verdiğindePackageManager.PERMISSION_GRANTED döndürülürken,
izin vermediğinde ise PackageManager.PERMISSION_DENIED döndürülür.
private void izin_Kontrolet_Al() {
if (ContextCompat.checkSelfPermission(this, Manifest.permission.CALL_PHONE) == PackageManager.PERMISSION_GRANTED) {
//Önceden izin VERİLMİŞ öyleyse Serbestçe istediğimizi yapalım.
yapilacaklar();
} else {
// Önceden izin verilmemiş öyleyse İZİN İSTEYELİM
ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.CALL_PHONE}, ONAY_KODU);
}
return;
}
2. İzin önceden alınmadıysa izin isteyelim
requestPermissions(String [] izinler, int ONAY_KODU)
İzin alma işlemi için android sistemine ait standart bir dialog mevcuttur. Bu dialog requestPermissions() metodu ile çağrılır ve özelleştirilemez.
Activity izni almak için (Üstteki kodlara ekleme yapalım)
Daha önceden izin verilmişse, çalıştırılacak kodlar çağrılıyor, bu örnekte yapilacaklar() çağrılıyor.
İzin verilmediyse requestPermissions(context, new String [] {izinler}, int ONAY_KODU) ile izin istemek için aşağıdaki gibi bir iletişim kutusunu çağırılıyor.
final private int ONAY_KODU = 1234;
private void izin_Kontrolet_Al() {
if (ContextCompat.checkSelfPermission(this, Manifest.permission.CALL_PHONE) == PackageManager.PERMISSION_GRANTED) {
//Önceden izin VERİLMİŞ öyleyse Serbestçe istediğimizi yapalım.
yapilacaklar();
} else {
// Önceden izin verilmemiş öyleyse İZİN İSTEYELİM
ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.CALL_PHONE}, ONAY_KODU);
}
return;
}
İzin grubu simgesi
Uygulama ismi
“Bir daha asla sorma” onay kutusu (Bir kullanıcı iki kez izin vermezse bu görüntülenir)
Çoklu diyaloglar için gösterge
Aksiyon
3. İzin verilip verilmediğini kontrol edelim
İzin istedik ama izin verildi mi acaba? İşlem sonucunda izin verilip verilmediğini kontrol etmek için ise
onRequestPermissionsResult (int permsRequestCode, String [] izinleri, int [] grantResults)
Yukarıdaki kodda, istek kodunun izin talep ederken tarafımızdan gönderilen istek koduyla eşleşip eşleşmediğini kontrol ediyoruz. İstek kodu eşleşirse, kullanıcının izin verdiği veya reddedildiği izinleri kontrol ediyoruz. Kullanıcı izin verirse, CALL_PHONE başlatabiliriz, aksi takdirde kullanıcının izin vermesine izin verecek bir mesaj gösterebiliriz.
4. izin almadan önce neden izin istediğimizi izah edelim
Eğer kullanıcı izin için ilk kez çıkan dialog’a izin vermeyip, yeniden o özelliği kullanmaya çalışırsa, büyük ihtimalle o iznin ne için gerekli olduğunu anlamamıştır. Bu sebeple kullanıcıya standart izin dialog’u gösterilmeden önce, uygulamanın izne neden ihtiyacı olduğunu anlatan bir açıklama gösterilmelidir. Eğer kullanıcı açıklamaya ikna olup izin vermeyi kabul ederse, standart izin penceresine yeniden yönlendirilir.
Android sistemi, kullanıcıya bir açıklama göstermenin gerekli olup olmadığına karar vermemizi kolaylaştıran bir metod sunmuştur:
shouldShowRequestPermissionRationale() metodu
true dönerse, kullanıcıya daha önceden android standart dialog’u gösterilmiş ve kullanıcı izni onaylamamıştır. Bu sebeple true döndüğü durumlarda önce iznin ne için gerekli olduğunu anlatan bir açıklama gösterilmesi ve kullanıcı bu açıklamayı onaylarsa standart izin dialog’una yönlendirilmesi gerekir.
İzin kullanıcıdan ilk defa istenecekse ya da kullanıcı “Never ask again” durumu onaylanmışsa metod false döner.
requestPermissions çağrılmadan önce biz izni neden talep ettiğimizi shouldShowRequestPermissionRationale metodu ile kullanıcıya bir pencerede gerekçe göstermemiz gerekir.
private void izin_Kontrolet_Al() {
int hasWriteContactsPermission = checkSelfPermission(Manifest.permission.CALL_PHONE);
if (hasWriteContactsPermission != PackageManager.PERMISSION_GRANTED) {
if (!shouldShowRequestPermissionRationale(Manifest.permission.CALL_PHONE)) {
showMessageOKCancel("Çağrı için izin vermeniz gerekir", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
requestPermissions(new String[] {Manifest.permission.CALL_PHONE}, ONAY_KODU);
}
});
return;
}
requestPermissions(new String[] {Manifest.permission.CALL_PHONE}, ONAY_KODU);
return;
}
yapilacaklar();
}
private void showMessageOKCancel(String message, DialogInterface.OnClickListener okListener) {
new AlertDialog.Builder(Eeeeeee.this)
.setMessage(message)
.setPositiveButton("OK", okListener)
.setNegativeButton("Cancel", null)
.create()
.show();
}
Birinci durumda açılan diyalog kutusunda neden izin istediğimizi açıklıyoruz.
İzine hayır derse pencere kapanıyor dolayısıyla “bir daha sorma” kutusunun işaretlenmesine engel olmuş oluyoruz. Uygulama tekrar açıldığında yine baştan alıyoruz. Bu yolla kullanıcının fikir değiştirmesinin önünü açmış oluyoruz. Diğer türlü “bir daha asla sorma” kutusunu işaretlerse kararından geri dönemeyeceği için ona bu yolla fikir değiştirme özgürlüğü vermiş oluyouruz.
İzine evet derse bu sefer 2.diyalog kutusunda izin talebinde bulunuyoruz..
İkinci durumda, herhangi bir izin verme diyalogu olmadan onRequestPermissionsResultçağrılacaktır PERMISSION_DENIED.
Buraya kadar olanlar kafa karıştırmaması için tek bir dosyada toplarsak;
package com.mobilprogramlar.ntzinal;
import android.Manifest;
import android.app.Activity;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.content.pm.PackageManager;
import android.os.Bundle;
import android.widget.Toast;
import androidx.annotation.NonNull;
public class Eeeeeee extends Activity {
final private int ONAY_KODU = 1234;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.eeeeee);
izin_Kontrolet_Al();
}
public void yapilacaklar() {
Toast.makeText(getApplicationContext(), "yapilacaklar şunlar", Toast.LENGTH_LONG).show();
}
private void izin_Kontrolet_Al() {
int hasWriteContactsPermission = checkSelfPermission(Manifest.permission.CALL_PHONE);
if (hasWriteContactsPermission != PackageManager.PERMISSION_GRANTED) {
if (!shouldShowRequestPermissionRationale(Manifest.permission.CALL_PHONE)) {
showMessageOKCancel("Çağrı için izin vermeniz gerekir", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
requestPermissions(new String[] {Manifest.permission.CALL_PHONE}, ONAY_KODU);
}
});
return;
}
requestPermissions(new String[] {Manifest.permission.CALL_PHONE}, ONAY_KODU);
return;
}
yapilacaklar();
}
private void showMessageOKCancel(String message, DialogInterface.OnClickListener okListener) {
new AlertDialog.Builder(Eeeeeee.this)
.setMessage(message)
.setPositiveButton("OK", okListener)
.setNegativeButton("Cancel", null)
.create()
.show();
}
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
//public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
switch (requestCode) {
case ONAY_KODU: {
// CALL_PHONE izni verilip verilmediğini kontrol edin
if (grantResults[0] == PackageManager.PERMISSION_GRANTED) {
Toast.makeText(Eeeeeee.this, "CALL_PHONE izni VERİLDİ", Toast.LENGTH_SHORT).show();
yapilacaklar();
} else {
Toast.makeText(Eeeeeee.this, "CALL_PHONE izni REDDEDİLDİ", Toast.LENGTH_SHORT).show();
}
break;
}
default:
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
}
}
}
Sonuç; önce isteyeceğimiz izin için bir pencere açarak sebebini anlatıyoruz. Tamam derse asıl izin penceresi çıkıyor ve izin talebinde bulunuyoruz.
Kullandığımız komutları özetlersek;
ContextCompat.checkSelfPermission () izni olup olmadığını kontrol etmek için verilir.
ActivityCompat.requestPermissions () izinleri istemek için. Birden fazla izin grubu ile birden fazla izin talep edilebilir.
ActivityCompat.shouldShowRequestPermissionRationale () , neden izin almak istediğine dair mantıklı bir mesaj göstermeye karar verdi.
onRequestPermissionsResult () , kullanıcının izin istemine verdiği yanıtı ele almak için.
Kesinlikle birden fazla izin gerektiren bazı özellikler var. Bir kerede yukarıdaki gibi aynı yöntemle birden fazla izin talep edebilirsiniz. Her neyse, her bir izin için de ‘Bir daha asla sorma’ durumunu kontrol etmeyi unutmayın.
final private int REQUEST_CODE_ASK_MULTIPLE_PERMISSIONS = 124;
private void insertDummyContactWrapper() {
List<String> permissionsNeeded = new ArrayList<String>();
final List<String> permissionsList = new ArrayList<String>();
if (!addPermission(permissionsList, Manifest.permission.ACCESS_FINE_LOCATION))
permissionsNeeded.add("GPS");
if (!addPermission(permissionsList, Manifest.permission.READ_CONTACTS))
permissionsNeeded.add("Kişileri Oku");
if (!addPermission(permissionsList, Manifest.permission.WRITE_CONTACTS))
permissionsNeeded.add("Kişileri Yaz");
if (permissionsList.size() > 0) {
if (permissionsNeeded.size() > 0) {
// Need Rationale
String message = "Erişim izni vermeniz gerekiyor " + permissionsNeeded.get(0);
for (int i = 1; i < permissionsNeeded.size(); i++)
message = message + ", " + permissionsNeeded.get(i);
showMessageOKCancel(message,
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
requestPermissions(permissionsList.toArray(new String[permissionsList.size()]),
REQUEST_CODE_ASK_MULTIPLE_PERMISSIONS);
}
});
return;
}
requestPermissions(permissionsList.toArray(new String[permissionsList.size()]),
REQUEST_CODE_ASK_MULTIPLE_PERMISSIONS);
return;
}
insertDummyContact();
}
private boolean addPermission(List<String> permissionsList, String permission) {
if (checkSelfPermission(permission) != PackageManager.PERMISSION_GRANTED) {
permissionsList.add(permission);
// Gerekçe Seçeneğini Denetle
if (!shouldShowRequestPermissionRationale(permission))
return false;
}
return true;
}
Her bir izin verilen hibe sonucunu aldığında, sonuç aynı geri çağırma yöntemine gönderilir onRequestPermissionsResult. Kaynak kodun daha temiz ve daha okunaklı görünmesi için HashMap kullanılabilir.
@Override
public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
switch (requestCode) {
case REQUEST_CODE_ASK_MULTIPLE_PERMISSIONS:
{
Map<String, Integer> perms = new HashMap<String, Integer>();
// ilk
perms.put(Manifest.permission.ACCESS_FINE_LOCATION, PackageManager.PERMISSION_GRANTED);
perms.put(Manifest.permission.READ_CONTACTS, PackageManager.PERMISSION_GRANTED);
perms.put(Manifest.permission.WRITE_CONTACTS, PackageManager.PERMISSION_GRANTED);
// Sonuçları doldurun
for (int i = 0; i < permissions.length; i++)
perms.put(permissions[i], grantResults[i]);
// ACCESS_FINE_LOCATION için kontrol et
if (perms.get(Manifest.permission.ACCESS_FINE_LOCATION) == PackageManager.PERMISSION_GRANTED
&& perms.get(Manifest.permission.READ_CONTACTS) == PackageManager.PERMISSION_GRANTED
&& perms.get(Manifest.permission.WRITE_CONTACTS) == PackageManager.PERMISSION_GRANTED) {
// Tüm İzin Verildi
insertDummyContact();
} else {
// İzin reddedildi
Toast.makeText(MainActivity.this, "Bazı İzin Reddedildi", Toast.LENGTH_SHORT)
.show();
}
}
break;
default:
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
}
}
Kodların tamamın birarada;
package com.mobilprogramlar.uygulamazinleri2;
import androidx.appcompat.app.AlertDialog;
import androidx.appcompat.app.AppCompatActivity;
import android.Manifest;
import android.content.ContentProviderOperation;
import android.content.ContentResolver;
import android.content.DialogInterface;
import android.content.OperationApplicationException;
import android.content.pm.PackageManager;
import android.os.Bundle;
import android.os.RemoteException;
import android.provider.ContactsContract;
import android.util.Log;
import android.widget.Toast;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class MainActivity extends AppCompatActivity {
final private int REQUEST_CODE_ASK_MULTIPLE_PERMISSIONS = 124;
private static final String TAG = "İletişim";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
insertDummyContactWrapper();
}
private void insertDummyContact() {
// Yeni bir temas kurmak için iki işlem gerekir.
ArrayList<ContentProviderOperation> operations = new ArrayList<ContentProviderOperation>(2);
// İlk önce, yeni bir raw kişisi kur.
ContentProviderOperation.Builder op = ContentProviderOperation.newInsert(ContactsContract.RawContacts.CONTENT_URI)
.withValue(ContactsContract.RawContacts.ACCOUNT_TYPE, null)
.withValue(ContactsContract.RawContacts.ACCOUNT_NAME, null);
operations.add(op.build());
// Ardından, kişinin adını ayarlayın.
op = ContentProviderOperation.newInsert(ContactsContract.Data.CONTENT_URI)
.withValueBackReference(ContactsContract.Data.RAW_CONTACT_ID, 0)
.withValue(ContactsContract.Data.MIMETYPE,
ContactsContract.CommonDataKinds.StructuredName.CONTENT_ITEM_TYPE)
.withValue(ContactsContract.CommonDataKinds.StructuredName.DISPLAY_NAME,
"__DUMMY CONTACT from runtime permissions sample");
operations.add(op.build());
// İşlemleri uygula.
ContentResolver resolver = getContentResolver();
try {
resolver.applyBatch(ContactsContract.AUTHORITY, operations);
} catch (RemoteException e) {
Log.d(TAG, "Yeni bir kişi eklenemedi: " + e.getMessage());
} catch (OperationApplicationException e) {
Log.d(TAG, "Yeni bir kişi eklenemedi\n: " + e.getMessage());
}
}
private void insertDummyContactWrapper() {
List<String> permissionsNeeded = new ArrayList<String>();
final List<String> permissionsList = new ArrayList<String>();
if (!addPermission(permissionsList, Manifest.permission.ACCESS_FINE_LOCATION))
permissionsNeeded.add("GPS");
if (!addPermission(permissionsList, Manifest.permission.READ_CONTACTS))
permissionsNeeded.add("Kişileri Oku");
if (!addPermission(permissionsList, Manifest.permission.WRITE_CONTACTS))
permissionsNeeded.add("Kişileri Yaz");
if (permissionsList.size() > 0) {
if (permissionsNeeded.size() > 0) {
// Need Rationale
String message = "Erişim izni vermeniz gerekiyor " + permissionsNeeded.get(0);
for (int i = 1; i < permissionsNeeded.size(); i++)
message = message + ", " + permissionsNeeded.get(i);
showMessageOKCancel(message,
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
requestPermissions(permissionsList.toArray(new String[permissionsList.size()]),
REQUEST_CODE_ASK_MULTIPLE_PERMISSIONS);
}
});
return;
}
requestPermissions(permissionsList.toArray(new String[permissionsList.size()]),
REQUEST_CODE_ASK_MULTIPLE_PERMISSIONS);
return;
}
insertDummyContact();
}
private boolean addPermission(List<String> permissionsList, String permission) {
if (checkSelfPermission(permission) != PackageManager.PERMISSION_GRANTED) {
permissionsList.add(permission);
// Gerekçe Seçeneğini Denetle
if (!shouldShowRequestPermissionRationale(permission))
return false;
}
return true;
}
@Override
public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
switch (requestCode) {
case REQUEST_CODE_ASK_MULTIPLE_PERMISSIONS:
{
Map<String, Integer> perms = new HashMap<String, Integer>();
// ilk
perms.put(Manifest.permission.ACCESS_FINE_LOCATION, PackageManager.PERMISSION_GRANTED);
perms.put(Manifest.permission.READ_CONTACTS, PackageManager.PERMISSION_GRANTED);
perms.put(Manifest.permission.WRITE_CONTACTS, PackageManager.PERMISSION_GRANTED);
// Sonuçları doldurun
for (int i = 0; i < permissions.length; i++)
perms.put(permissions[i], grantResults[i]);
// ACCESS_FINE_LOCATION için kontrol et
if (perms.get(Manifest.permission.ACCESS_FINE_LOCATION) == PackageManager.PERMISSION_GRANTED
&& perms.get(Manifest.permission.READ_CONTACTS) == PackageManager.PERMISSION_GRANTED
&& perms.get(Manifest.permission.WRITE_CONTACTS) == PackageManager.PERMISSION_GRANTED) {
// Tüm İzin Verildi
insertDummyContact();
} else {
// İzin reddedildi
Toast.makeText(MainActivity.this, "Bazı İzinler Reddedildi\n", Toast.LENGTH_SHORT).show();
}
}
break;
default:
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
}
}
private void showMessageOKCancel(String message, DialogInterface.OnClickListener okListener) {
new AlertDialog.Builder(MainActivity.this)
.setMessage(message)
.setPositiveButton("Evet", okListener)
.setNegativeButton("Hayır", null)
.create()
.show();
}
}
Yukarıdaki kod Android 6.0 Marshmallow’da mükemmel çalışıyor olmasına rağmen. Maalesef Android’in Marshmallow öncesi Android’inde çökmesine neden olacak, çünkü bu işlevler API Seviye 23’e eklenmiş.
Düz yol, Sürüm Sürümü’nü aşağıdaki kodla kontrol edebilmenizdir.
Ancak kod daha da karmaşık olacak. Bu yüzden , bu şey için hazırlanmış olan Support Library v4’ten biraz yardım almanızı öneririm . Bu işlevleri şununla değiştirin:
if (ContextCompat.checkSelfPermission(thisActivity, Manifest.permission.CALL_PHONE) == PackageManager.PERMISSION_GRANTED){
//CALL_PHONE özelliği için kullanıcı zaten daha önceden yetki vermiştir. Bu yetki ile yapılmak istenen burada yapılır.
}
else {
// İzin için kullanıcıya açıkça sorulmalıdır.
}
Bu fonksiyon Android MarshMallow öncesi çağrılırsa, her zaman false geri döner.
shouldShowRequestPermissionRationale()
Kullanıcıya daha önceden android standart dialog’u gösterilmiş ve kullanıcı izni onaylamamışsa true döner
HER ZAMAN Support Library v4 deki checkSelfPermission, requestPermissions ve shouldShowRequestPermissionRationale fonksiyonlarını kullanmaya çalışın.
Bu şekilde uygulamanız aynı kod mantığına sahip herhangi bir Android sürümünde mükemmel bir şekilde çalışacaktır. Lütfen bu fonksiyonların bazı ek parametreler gerektirdiğini unutmayın: Context ya da Activity gibi.. Yapacak özel bir şey yok, sadece istediğini doğru bir şekilde iletin. İşte kaynak kod:
private void insertDummyContactWrapper() {
int hasWriteContactsPermission = ContextCompat.checkSelfPermission(MainActivity.this, Manifest.permission.WRITE_CONTACTS);
if (hasWriteContactsPermission != PackageManager.PERMISSION_GRANTED) {
if (!ActivityCompat.shouldShowRequestPermissionRationale(MainActivity.this, Manifest.permission.WRITE_CONTACTS)) {
showMessageOKCancel("Rehber’e erişime izin vermeniz gerekir", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
ActivityCompat.requestPermissions(MainActivity.this, new String[] {Manifest.permission.WRITE_CONTACTS}, REQUEST_CODE_ASK_PERMISSIONS);
}
});
return;
}
ActivityCompat.requestPermissions(MainActivity.this, new String[] {Manifest.permission.WRITE_CONTACTS}, REQUEST_CODE_ASK_PERMISSIONS);
return;
}
insertDummyContact();
}
Şu anda bu yeni izin sisteminin büyük resmini net bir şekilde gördüğünüze inanıyorum. Ve bunun ne kadar büyük bir sorun olduğunu da anladığınıza inanıyorum.
Ancak başka seçeneğiniz yok. Çalışma Zamanı İzni zaten Android Marshmallow’da kullanılıyor. Geri dönüşü olmayan noktadayız. Şu anda yapabileceğimiz tek şey, uygulamamızı bu yeni izin sistemini tam olarak desteklemektir.
İyi haber şu ki, Çalışma Zamanı İzni akışı gerektiren yalnızca birkaç izin var. Sık kullanılan izinlerin çoğu, örneğin, İNTERNET, Normal İzin’dedir , otomatik olarak verilir ve onlarla hiçbir şey yapmanıza gerek kalmaz. Sonuç olarak, değiştirmeniz gereken kodun sadece bir kısmı vardır.
CoordinatorLayout, Android Tasarım Destek Kütüphanesi ile tanıtılan yeni bir düzendir. CoordinatorLayout, süper güçlü bir FrameLayout’tur ( resmi belgelere göre ). Daha önce bir FrameLayout kullandıysanız, CoordinatorLayout’u kullanırken çok rahat olmalısınız. FrameLayout kullanmadıysanız, endişelenmeyin, oldukça kolay.
Varsayılan olarak, bir FrameLayout’a birden fazla çocuk eklerseniz birbirleriyle örtüşürler. Bir FrameLayout, en sık tek bir çocuk görüntüsü elde etmek için kullanılmalıdır. CoordinatorLayout’un ana çekiciliği, içerisindeki görüşlerin animasyonlarını ve geçişlerini koordine edebilmesidir. Yalnızca xml kullanarak, örneğin bir FAB’ın gelen bir Snackbar’ın dışına çıktığını, ya da görünüşe göre başka bir widget’a eklenmiş ve ekranda görünen bir FAB’ın (ya da gerçekten başka herhangi bir Görünümün) bulunduğu bir düzen tanımlayabilirsiniz. widget.
Bu makale için, CoordinatorLayout’u kullanmanın, görünümlerin diğer görünümlerin düzenindeki veya konumundaki değişikliklere yanıt vermesini sağlayarak kodunuzu basitleştirebileceği üç farklı yol göstereceğiz. Daha sonra, bu davranışın kodda nasıl elde edildiğini tartışacağız ve kendi özel davranışlarınızı görünümler arasında nasıl uygulayacağınızı öğrendiğiniz dördüncü bir yöntemi göstereceğiz. Özel davranışlar uygulayarak, yalnızca hayal gücünüzle (ve kodlama yeteneğinizle: D) sınırlandırılan kolayca birbirine bağlı inanılmaz animasyonlar, geçişler ve efektler oluşturabilirsiniz.
Uygulamanızda CoordinatorLayout’u kullanmadan önce, uygulamanızın aşağıdaki bağımlılığını ekleyerek Android Destek Tasarım Kitaplığını projenize içe aktarmanız gerekir.
İlk aktivite için, Snackbar görüntülendiğinde otomatik olarak kaybolan bir FAB ile düzen oluşturmak istiyoruz. Bu, CoordinatorLayout için bir “HelloWorld” programı ve iyi bir sebeple. İşlevsellik tamamen basit bir düzen olan xml dosyasında uygulanmıştır ve sadece çalışır.
Düzen oldukça basittir. CoordinatorLayout, kök düzendir. İçinde, ekran üzerinde ortalanmış bir düğmeye ve malzeme tasarım kurallarına uymamızı sağlamak için ekranın sağ alt köşesine yerleştirilmiş bir FAB’a sahibiz.
Activity sınıfına yaptığımız tek ekleme, Snackbar’ı göstermek için Düğmeye OnClickListener uygulamaktır. Snackbar’ın kök Görünümünü CoordinatorLayout olarak ayarladık. Bu şekilde, CoordinatorLayout Snackbar ve FAB hakkında bilgi sahibi olur ve her iki widget’in çakışmadığından emin olmak için geçiş animasyonu otomatik olarak yürütülür.
package com.mobilprogramlar.floatbutton1;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import androidx.appcompat.app.AppCompatActivity;
import androidx.coordinatorlayout.widget.CoordinatorLayout;
import com.google.android.material.snackbar.Snackbar;
public class MainActivity extends AppCompatActivity {
private Button mShowSnackbarButton;
private CoordinatorLayout mCoordinatorLayout;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mCoordinatorLayout = (CoordinatorLayout) findViewById(R.id.coordinatorLayout);
mShowSnackbarButton = (Button) findViewById(R.id.showSnackbarButton);
mShowSnackbarButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Snackbar.make(mCoordinatorLayout,
"Bu basit bir Snackbar", Snackbar.LENGTH_LONG)
.setAction("KAPAT", new View.OnClickListener() {
@Override
public void onClick(View v) {
// Custom action
}
}).show();
}
});
}
}
Aktiviteyi yürütün ve FAB’nin, gösterildiğinde, snackbar için otomatik olarak yukarı ve dışarı kaydığını ve snackbar görünümden çıkarken konumuna aşağı doğru kaydığını gözlemleyin.
String.xml
<resources>
<string name="app_name">Float ve Snackbar</string>
<string name="show_snackbar">Snackbarı Göster</string>
</resources>
Malzeme Tasarımında tanıtılan yeni bir bileşen Floating Action Button (nedir).Sağ alt kısımdaki UI’nin üzerinde yüzen yüksek dairesel bir görünüştür. Genellikle, ekranın en önemli eylemini vurgulayan farklı görseliyle dikkat çeker.
Bu nispeten basit eğitimde Web de genelde Lolipop öncesi örnekler mevcut ama Google ın getirdiği Api 26 zorunluluğu ile artık bütün apk ların yenilenmesi gerekmekte.
Floating action buttons (Kayan eylem düğmeleri) FAB, tanıtılan bir eylem için kullanılır. UI’nin üzerinde yüzen daire içine alınmış bir simge ile ayırt edilirler ve değişim, başlatma ve aktarma çapa noktası içeren hareket davranışları vardır. – Materyal Tasarımı kaynağı
Gradle ayarlarını aşağıdaki altı çizili yerlerden belirtilen değerlere göre ayarlayalım.
Ayrıca alttaki 3 resim dosyasını da drawable klasörü altına ekliyoruz.
farklı telefon boyutları için bu resimlerin faklı ebatlarını yazının sonunda ki dosyanın tamamını indirebileceğiniz linki verdiğimde oradan indirebilirsiniz.
Sonuç;
Anlatılanların tamamının Android Studio daki kaynak kod ve reimleri aşağıdaki linkten indirebilirsiniz.