API Düzeyi: 14
Android 4.0 (ICE_CREAM_SANDWICH
)
kullanıcılar ve uygulama için çeşitli yeni özellikler ekleyen büyük bir platform sürümüdür.
birlikte çalışır. Aşağıda ele alınan tüm yeni özelliklerin ve API'lerin yanı sıra Android 4.0,
Android 3.x'ten çok sayıda API ve Holografik tema sunduğu için platform sürümü de yayınlanmıştır.
küçük ekranlara sığdırır. Uygulama geliştirici olarak artık tek bir platforma ve birleştirilmiş API çerçevesine sahipsiniz
sağlayan tek bir APK ile uygulamanızı geliştirmenizi ve yayınlamanızı sağlayan
mobil cihazlar, tabletler ve daha fazlası için optimize edilmiş kullanıcı deneyimi sağlayan,
Android: Android 4.0 (API düzeyi 14) veya sonraki sürümler.
Geliştiriciler, Android 4.0 platformuna Android SDK için indirilebilir bileşen. İndirilebilir platform şunları içerir: Android kitaplığı ve sistem görüntüsünün yanı sıra bir dizi emülatör görünümü ve daha fazla. Android 4.0 ile geliştirme veya test etmeye başlamak için Platformu SDK'nıza indirmek için Android SDK Yöneticisi'ni kullanın.
API'ye Genel Bakış
Aşağıdaki bölümlerde, Android 4.0'daki yeni API'lere teknik bir genel bakış sunulmaktadır.
Kişiler Sağlayıcıdaki Sosyal API'lar
ContactsContract
sağlayıcısı tarafından tanımlanan kişi API'leri
cihaz sahibine yönelik kişisel profil gibi yeni sosyal medya odaklı özellikleri destekleyecek şekilde genişletildi.
kullanıcıların, Google Play'de yüklü olan sosyal ağlara tek tek kişileri davet edebilmesi
olanak tanır.
Kullanıcı Profili
Android artık cihaz sahibini temsil eden kişisel bir profil içermektedir. Bu profil,
ContactsContract.Profile
tablosu. Kullanıcı kimliğini koruyan sosyal uygulamalar
, ContactsContract.Profile
içinde yeni bir ContactsContract.RawContacts
girişi oluşturarak kullanıcının profil verilerine katkıda bulunabilir. Yani cihaz kullanıcısını temsil eden ham kişiler,
ContactsContract.RawContacts
URI'sıyla tanımlanan geleneksel ham kişiler tablosuna ait değildir; Bunun yerine profile ham kişiyi eklemeniz gerekir
CONTENT_RAW_CONTACTS_URI
itibarıyla bir tablo hazırlayacağız. Çiğ
daha sonra bu tablodaki kişiler "Ben" etiketli, kullanıcının görebildiği tek bir profilde toplanır.
Profil için yeni bir ham kişi eklemek için android.Manifest.permission#WRITE_PROFILE iznine sahip olmanız gerekir. Benzer şekilde, profilden okumak için tablosunda android.Manifest.permission#READ_PROFILE iznini istemeniz gerekir. Ancak, çoğu uygulama, seçin. Kullanıcı profilinin okunması hassas bir izindir ve kullanıcılardan talep eden uygulamalara şüpheyle yaklaşır.
Davet Amacı
INVITE_CONTACT
intent işlemi, uygulamaya izin verir
kullanıcının sosyal ağa kişi eklemek istediğini gösteren bir işlem başlatmak için kullanılır. Uygulama
Uygulama alındığında, belirtilen kişiyi davet etmek için bu uygulama kullanılır.
kullanabilirsiniz. Çoğu uygulama bu işlemin alıcı tarafında olacaktır. Örneğin,
kullanıcı "Bağlantı ekle"yi seçtiğinde yerleşik Kişiler uygulaması davet amacını çağırır belirli bir kampanya için
bir kişinin iletişim bilgilerinde listelenen sosyal uygulama.
Uygulamanızı "Bağlantı ekle"deki gibi görünür hale getirmek için bir senkronizasyon bağdaştırıcısı sağlaması
sosyal ağınızdaki kişi bilgilerini senkronize edebilirsiniz. Ardından, sisteme
INVITE_CONTACT
amacına şu şekilde yanıt verir:
inviteContactActivity
özelliğini, uygulamanızın senkronizasyon yapılandırma dosyasına bir
davet amacını gönderirken sistemin başlaması gereken etkinliğin tam adı.
Ardından, başlatılan etkinlik söz konusu kişinin URI'sını intent'in
ve söz konusu kişiyi ağa davet etmek ya da bu kişiyi ağa eklemek için
daha iyi anlarsınız.
Büyük boyutlu fotoğraflar
Android artık kişiler için yüksek çözünürlüklü fotoğrafları destekliyor. Şimdi bir fotoğrafı bir
kişi kaydı, sistem bunu hem 96x96 boyutunda bir küçük resim (daha önce olduğu gibi) hem de bir
256x256 "fotoğrafı görüntüle" (yeni bir dosya tabanlı fotoğraf mağazasında depolanan)
zaman içinde değişebileceğini unutmayın). Kişiye büyük bir fotoğraf eklemek için
bir fotoğrafın normal PHOTO
sütunundaki
Bu veri satırı, sistem tarafından uygun küçük resim olarak işlenecek ve görüntülenen fotoğrafa dönüştürülecektir.
kayıtları.
Kullanım Geri Bildirimiyle İletişime Geçme
Yeni ContactsContract.DataUsageFeedback
API'leri her şeyi takip etmenize
kullanıcının belirli kişilerle iletişim kurmak için ne sıklıkta kullandığı (ör. kullanıcının ne sıklıkta iletişim
her telefon numarası veya e-posta adresi. Bu bilgiler her kişinin sıralamasının iyileştirilmesine yardımcı olur
yöntemini kullanabilir ve her kişiyle iletişim kurmak için daha iyi öneriler sunabilirsiniz.
Takvim Sağlayıcı
Yeni takvim API'leri; takvimleri, etkinlikleri, katılımcıları, hatırlatıcıları ve uyarıları görebilirsiniz.
Bu API'leri çeşitli uygulamalar ve widget'lar takvim etkinliklerini okumak ve değiştirmek için kullanabilir. Ancak, en zor kullanım alanlarından biri, kullanıcının takvimini kendisinden senkronize eden diğer takvim hizmetlerini kullanarak tüm takvim etkinlikleri için tek bir konum kullanıcının etkinlikleri. Örneğin, Google Takvim etkinlikleri Takvim Sağlayıcı ile şu şekilde senkronize edilir: Bu etkinliklerin Android'in yerleşik cihazlarıyla görüntülenmesine olanak tanıyan Google Calendar Sync Adapter'ı Takvim uygulaması.
Takvim Sağlayıcısı'ndaki takvimler ve etkinliklerle ilgili bilgiler için veri modeli:
CalendarContract
tarafından tanımlanıyor. Kullanıcının tüm takvim verileri
CalendarContract
öğesinin çeşitli alt sınıfları tarafından tanımlanan tablo sayısı:
CalendarContract.Calendars
tablosunda takvime özgü veriler bulunur ekleyebilirsiniz. Bu tablodaki her satırda tek bir takvimin adı, renk, senkronizasyon bilgileri vb.CalendarContract.Events
tablosunda etkinliğe özel bilgiler bulunur. Bu tablodaki her satır, tek bir etkinliğe ait bilgileri içerir. Örneğin: etkinlik başlığı, konum, başlangıç zamanı, bitiş zamanı vs. Etkinlik bir kez gerçekleşebileceği gibi yinelenebilir birden fazla kez. Katılımcılar, hatırlatıcılar ve genişletilmiş özellikler ayrı tablolarda saklanır ve Etkinliğe bağlamak için etkinliğin_ID
özelliğini kullanın.CalendarContract.Instances
tablosu şunun başlangıç ve bitiş zamanını içerir: kabul edilir. Bu tablodaki her satır tek bir tekrarı temsil eder. Tek seferlik etkinlikler için örneklerle etkinlikler arasında bire bir eşleme bulunur. Yinelenen etkinlikler için birden çok satır otomatik olarak oluşturulur.CalendarContract.Attendees
tablosu etkinlik katılımcısını veya davetliyi barındırır ekleyebilirsiniz. Her satır, bir etkinlikteki tek bir konuğu temsil eder. Bu dosya, konukların ve kişinin etkinliğe verdiği tepkidir.CalendarContract.Reminders
tablosunda uyarı/bildirim verileri bulunur. Her satır, bir etkinlikle ilgili tek bir uyarıyı temsil eder. Bir etkinlikte birden fazla hatırlatıcı olabilir. Kullanılan Etkinlik başına hatırlatıcıMAX_REMINDERS
içinde belirtilir. Bu işlev, etkinliği düzenleyen belirtilen takvimin sahibi olur. Hatırlatıcılar, etkinlik başlamadan önce dakika sayısı cinsinden belirtilir bir alarm yöntemi belirler ve bir uyarı, e-posta veya SMS kullanarak gösterir.CalendarContract.ExtendedProperties
tablosu opak veri alanları içeriyor senkronizasyon adaptörü tarafından kullanılır. Sağlayıcı, bu tablodaki öğelerle ilgili silme işlemi dışında herhangi bir işlem yapmaz. ilgili etkinlikleri silindiğinde bu kullanıcılara gösterilecek.
Bir kullanıcının takvim verilerine Takvim Sağlayıcı ile erişmek için uygulamanızın,
READ_CALENDAR
izni (okuma erişimi için) ve
WRITE_CALENDAR
(yazma erişimi için).
Etkinlik amacı
Yapmak istediğiniz tek şey kullanıcının takvimine bir etkinlik eklemekse Events.CONTENT_URI
tarafından tanımlanan verilerle bir ACTION_INSERT
niyetini kullanarak
yeni etkinlikler oluşturan Takvim uygulamasında. Amaç kullanmak için
izin verebilir ve aşağıdaki ekstralarla etkinlik ayrıntılarını belirtebilirsiniz:
Events.TITLE
: etkinlikCalendarContract.EXTRA_EVENT_BEGIN_TIME
: Şuradan milisaniye cinsinden etkinlik başlangıç zamanı: dönemCalendarContract.EXTRA_EVENT_END_TIME
: Etkinlik dönemden itibaren milisaniye cinsinden bitiş zamanıEvents.EVENT_LOCATION
: Etkinliğin yeriEvents.DESCRIPTION
: Etkinlik açıklamaIntent.EXTRA_EMAIL
: Şu kişilerin e-posta adresleri: davet etEvents.RRULE
: Yinelenme etkinliğin kuralıEvents.ACCESS_LEVEL
: Etkinliğin gizli mi yoksa herkese açık mı olduğuEvents.AVAILABILITY
: Bu etkinliğin zaman aralığının aynı zamanda başka etkinliklerin programlanmasına izin verip vermediği
Sesli Mesaj Sağlayıcı
Yeni Sesli Mesaj Sağlayıcısı, uygulamaların Kullanıcının tüm sesli mesajlarını tek bir görsel sunuda sunmak için. Örneğin, kullanıcının birden fazla sesli mesaj kaynağı olabilir. Örneğin, Bir telefon servis sağlayıcısından, diğeri VoIP'den veya başka bir alternatif sesten kullanıma sunuyoruz. Bu uygulamalar, sesli mesajlarını cihaza eklemek için Sesli Mesaj Sağlayıcı API'lerini kullanabilir. İlgili içeriği oluşturmak için kullanılan yerleşik Telefon uygulaması daha sonra tüm sesli mesajları birleştirilmiş bir sunu halinde kullanıcıya sunar. Sistemin Telefon uygulaması tüm sesli mesajları okuyabilen tek uygulama olsa da, sesli mesaj sağlayan her uygulama sisteme eklediklerini okuyabilir (ancak sesli mesajları okuyabilirsiniz).
API'ler şu anda üçüncü taraf uygulamalarının sesli mesaj API'lerini kullanması gereken üçüncü taraf uygulamaları, yalnızca sesli mesaj özelliği olan uygulamalardır. ve kullanıcıya teslim etmektir.
VoicemailContract
sınıfı
Sesli Mesaj Sağlayıcısı. VoicemailContract.Voicemails
ve VoicemailContract.Status
alt sınıfları, uygulamaların
cihazdaki depolama için sesli mesaj verilerini ekle. Sesli mesaj sağlayıcı uygulaması örneği için bkz.
Sesli Mesaj Sağlayıcısı
Demo yapın.
Multimedya
Android 4.0 fotoğraf gibi medya ile etkileşim kuran uygulamalar için birçok yeni API ekler. video ve müzik.
Medya Efektleri
Yeni medya efektleri çerçevesi, resimlere ve grafiklere çeşitli görsel efektler videolar. Örneğin, resim efektleri, kırmızı gözü kolayca düzeltmenize, bir resmi gri tonlamaya dönüştürmenize, parlaklığı ayarlayabilir, doygunluğu ayarlayabilir, resmi döndürebilir, balık gözü efekti uygulayabilir ve çok daha fazlasını yapabilir. İlgili içeriği oluşturmak için kullanılan sistemi maksimum performans elde etmek için tüm efektleri GPU'da işler.
Maksimum performans için efektler doğrudan OpenGL dokularına uygulanır, böylece uygulamanız Efekt API'lerini kullanabilmesi için önce geçerli bir OpenGL bağlamına sahip olmalıdır. Uyguladığınız dokular Efektler bit eşlemlerden, videolardan, hatta kameradan bile olabilir. Ancak, dokular aşağıdaki şartları karşılamalıdır:
- Bir
GL_TEXTURE_2D
doku resmine bağlı olmalıdırlar - En az bir Mipmap düzeyi içermelidir
Effect
nesnesi, uygulayabileceğiniz tek bir medya efekti tanımlar
resim çerçevesi. Effect
oluşturmak için temel iş akışı şu şekildedir:
- OpenGL ES 2.0 içeriğinizden
EffectContext.createWithCurrentGlContext()
çağrısı yapın. EffectContext.getFactory()
çağrısı yapmak için döndürülenEffectContext
değerini kullanın. Bu çağrı, bir örnek döndürür. /EffectFactory
.createEffect()
adlı kişiyi yönlendirerek @link android.media.effect.EffectFactory} efekt adını girin (ör.EFFECT_FISHEYE
veyaEFFECT_VIGNETTE
).
setParameter()
yöntemini çağırıp parametre adı ve parametre değeri ileterek bir efektin parametrelerini ayarlayabilirsiniz. Her efekt türü,
farklı parametreleri içerebilir. Örneğin, EFFECT_FISHEYE
öğesinin scale
değeri için
bozulma olabilir.
Bir dokuya efekt uygulamak için şurada apply()
işlevini çağırın:
Effect
ve giriş dokusunu, genişliğini, yüksekliğini ve çıkışı iletir.
dokunun. Giriş dokusu, bir GL_TEXTURE_2D
dokusuna bağlı olmalıdır
(genellikle glTexImage2D()
işlevi) kullanabilirsiniz. Birden fazla Mipmap düzeyi sağlayabilirsiniz. Çıkış dokusu bir
doku resmi, efekt ile otomatik olarak GL_TEXTURE_2D
ve bir Mipmap düzeyi (0) ile bağlanır. Bu düzeyde de
boyutu kullanabilirsiniz.
EffectFactory
politikasında listelenen tüm efektlerin destekleneceği garanti edilir.
Ancak, harici kitaplıklardaki bazı ek efektler tüm cihazlarda desteklenmez.
Bu nedenle, öncelikle
isEffectSupported()
Uzaktan kumanda istemcisi
Yeni RemoteControlClient
, medya oynatıcıların oynatmayı etkinleştirmesine olanak tanır.
cihaz kilit ekranı gibi uzaktan kumanda istemcilerinin kontrol düğmelerini kullanır. Medya oynatıcılar,
uzaktan kumandada görüntülenmek üzere oynatılan medya hakkında bilgiler (ör. parça)
ve albüm kapağı ekleyin.
Medya oynatıcınız için uzaktan kumanda istemcilerini etkinleştirmek amacıyla, kurucusuyla bir RemoteControlClient
örneği oluşturup ACTION_MEDIA_BUTTON
yayını yapan bir PendingIntent
iletin. Amaç, uygulamanızda ACTION_MEDIA_BUTTON
etkinliğini işleyen açık BroadcastReceiver
bileşenini de beyan etmelidir.
Oynatıcınızın işleyebileceği medya kontrolü girişlerini bildirmek için şurada setTransportControlFlags()
öğesini çağırmalısınız:
RemoteControlClient
, bir dizi FLAG_KEY_MEDIA_*
flag'ini iletin.
FLAG_KEY_MEDIA_PREVIOUS
ve FLAG_KEY_MEDIA_NEXT
.
Daha sonra RemoteControlClient
öğenizi MediaManager.registerRemoteControlClient()
adresine ileterek kaydetmeniz gerekir.
Kaydolduktan sonra, RemoteControlClient
öğesini başlatırken beyan ettiğiniz yayın alıcısına ACTION_MEDIA_BUTTON
gönderilir
uzaktan kumandadan bir düğmeye basıldığında gerçekleşen etkinlikleri ifade eder. Aldığınız intent, basılan medya anahtarı için KeyEvent
öğesini içerir. Bu anahtarı, getParcelableExtra(Intent.EXTRA_KEY_EVENT)
ile niyetten alabilirsiniz.
Uzaktan kumandada medya oynatmayla ilgili bilgileri görüntülemek için editMetaData()
yöntemini çağırın ve döndürülen öğeye meta verileri ekleyin
RemoteControlClient.MetadataEditor
. Medya posteri için
bir bit eşlem sağlayabilirsiniz.
geçen süre gibi sayısal bilgiler ve parça başlığı gibi metin bilgileri. Örneğin,
Kullanılabilir anahtarlarla ilgili bilgiler MediaMetadataRetriever
içindeki METADATA_KEY_*
işaretlerine bakın.
Örnek bir uygulama için bkz. Rastgele Müzik Çalar Android 4.0'da uzaktan kumanda istemcisini etkinleştirecek bir uyumluluk mantığı sağlar. Android 2.1'e kadar destek sunmaya devam edecek.
Medya oynatıcı
MediaPlayer
uygulamasından çevrimiçi medya akışı için artıkINTERNET
izni gerekiyor.MediaPlayer
kullanıyorsanız internetten içerik oynatalar,INTERNET
eklediğinizden emin olun manifest dosyanıza izin verilmez, aksi takdirde medya oynatma işleviniz Android'den itibaren çalışmaz. 4.0.setSurface()
, video havuzu olarak davranacak birSurface
tanımlamanıza olanak tanır.setDataSource()
ile yapabilecekleriniz: İsteğinizle birlikte, HTTP(S) canlı akışı için yararlı olabilecek ek HTTP üstbilgileri gönderin- HTTP(S) canlı yayınında artık isteklerde HTTP çerezleri dikkate alınıyor
Medya türleri
Android 4.0 aşağıdakiler için destek sağlar:
- HTTP/HTTPS canlı yayın protokolü sürüm 3
- ADTS ham AAC ses kodlama
- WEBP resimleri
- Matroska videosu
Daha fazla bilgi için Desteklenen Medyalar bölümüne bakın Biçimler.
Kamera
Camera
sınıfı artık yüzleri algılamak ve kontrol etmek için API'ler içeriyor.
farklı alanları kapsıyor.
Yüz algılama
Kamera uygulamaları artık Android'in yüz algılama API'leri sayesinde yeteneklerini geliştirebiliyor. Öznenin yüzünün yanı sıra gözler ve ağız gibi belirli yüz özelliklerini de tespit eder.
Kamera uygulamanızda yüzleri algılamak için setFaceDetectionListener()
numaralı telefonu arayarak bir Camera.FaceDetectionListener
kaydettirmeniz gerekir. Ardından
kameranızın yüzeyini seçin ve startFaceDetection()
numaralı telefonu arayarak yüzleri algılamaya başlayın.
Sistem, kamera sahnesinde bir veya daha fazla yüz algıladığındaonFaceDetection()
bir dizi dahil olmak üzere Camera.FaceDetectionListener
uygulanması
Camera.Face
nesne.
Camera.Face
sınıfının bir örneği, şunlar hakkında çeşitli bilgiler sağlar:
şu da dahil olmak üzere yüz algılandı:
- Kameranın özelliklerine göre yüzün sınırlarını belirten bir
Rect
geçerli görüş alanı - Sistemin nesnenin bir nesne olduğundan ne kadar emin olduğunu gösteren, 1 ile 100 arasında bir tam sayı insan yüzü
- Birden fazla yüzü izleyebilmeniz için benzersiz bir kimlik
- Gözlerin ve ağzın bulunduğu yeri gösteren birkaç
Point
nesne konumunu söylüyor
Not: Yüz algılama özelliği bazı cihazlarda desteklenmeyebilir
Bu yüzden getMaxNumDetectedFaces()
numaralı telefonu arayıp kontrol edip iade isteğinde bulunmanız gerekir.
değer sıfırdan büyük. Ayrıca, bazı cihazlar gözlerin ve ağzın tanımlanmasını
bu durumda, Camera.Face
nesnesindeki bu alanlar boş olacaktır.
Odaklanma ve ölçüm alanları
Kamera uygulamaları artık kameranın odaklanma ve beyaz ölçümü için kullandığı alanları kontrol edebilir
bakiye
ve otomatik pozlama. Her iki özellik de aşağıdakileri belirtmek için yeni Camera.Area
sınıfını kullanır
kameranın geçerli görünümünün odaklanması veya ölçülmesi gereken bölgesi. Camera.Area
sınıfının bir örneği, alanın Rect
ile sınırlarını ve alanın ağırlığını tanımlar. Bu da, alanın önem düzeyini temsil eder.
alan, bir tam sayı ile gösterilir.
Odak alanı veya ölçüm alanı ayarlamadan önce ilk olarak getMaxNumFocusAreas()
ya da getMaxNumMeteringAreas()
işlevini çağırmalısınız. Bu değerler sıfır döndürürse
ilgili özelliği desteklemiyor olabilir.
Kullanılacak odak veya ölçme alanlarını belirtmek için setFocusAreas()
ya da setMeteringAreas()
işlevini çağırmanız yeterlidir. Her biri, dikkate alınacak alanları gösteren Camera.Area
nesneden List
tanesini alır
ya da ölçmek için kullanılan araçlardır. Örneğin, kullanıcının
önizlemenin bir alanına dokunarak odak alanını ayarlayabilirsiniz. Daha sonra, bunu bir Camera.Area
nesnesine çevirip kameranın sahnenin o alanına odaklanmasını isteyebilirsiniz.
O bölgedeki odak veya pozlama, alandaki sahne değiştikçe sürekli olarak güncellenir.
Fotoğraflar için sürekli otomatik odaklama
Artık fotoğraf çekerken sürekli otomatik odaklamayı (CAF) etkinleştirebilirsiniz. CAF'yi
kamera uygulaması, FOCUS_MODE_CONTINUOUS_PICTURE
kartı doğrultun
Hedef: setFocusMode()
. Fotoğraf çekmeye hazır olduğunda
autoFocus()
numaralı telefonu arayın. Camera.AutoFocusCallback
cihazınız, hemen bir çağrı alır ve
olduğuna karar verdik. Geri arama alındıktan sonra CAF'yi devam ettirmek için cancelAutoFocus()
numaralı telefonu aramanız gerekir.
Not: Sürekli otomatik odaklama, çekim sırasında da desteklenir
FOCUS_MODE_CONTINUOUS_VIDEO
kullanılarak elde edilen
API düzey 9'da eklendi.
Diğer kamera özellikleri
- Video kaydederken artık video oturumunu kesintiye uğratmadan fotoğraf kaydetmek için
takePicture()
numarasını arayabilirsiniz. Bunu yapmadan önce donanımın doğruluğundan emin olmak içinisVideoSnapshotSupported()
adlı kişiyi arayın destekler. - Artık otomatik pozlamayı ve beyaz dengesini
setAutoExposureLock()
vesetAutoWhiteBalanceLock()
ile kilitleyerek sorunun önüne geçebilirsiniz bu özelliklerin değişmesini engeller. - Artık kamera önizlemesi çalışırken
setDisplayOrientation()
adlı kişiyi arayabilirsiniz. Önceden bu önizlemeye başlamadan önce gösterilir, ancak yönü istediğiniz zaman değiştirebilirsiniz.
Kamera yayını amaçları
Camera.ACTION_NEW_PICTURE
: Bu simge, kullanıcının yeni bir fotoğraf çektiğini gösterir. Yerleşik Kamera uygulaması bunu çağırır anons edilebilir. Ayrıca, üçüncü taraf kamera uygulamalarının da bu amacı anlaması için fotoğraf çektikten sonra.Camera.ACTION_NEW_VIDEO
: Bu, kullanıcının yeni bir video yakaladığını gösterir. Yerleşik Kamera uygulaması bunu çağırır Video kaydedildikten sonra yayın yapmalı ve üçüncü taraf kamera uygulamalarının da bu niyeti yayınlaması gerekir. her zaman daha azdır.
Android Beam (NFC ile NDEF Push)
Android Beam, NDEF mesajlarını bir cihazdan cihaza göndermenize olanak tanıyan yeni bir NFC özelliğidir. başka bir işlem ("NDEF Push" olarak da bilinir). Veri aktarımı, iki kullanıcı Android Beam'i destekleyen Android destekli cihazlar yakın mesafede (yaklaşık 4 cm) bulunur ve genellikle sırtlarını birbirine değdiriyor. NDEF mesajındaki veriler, paylaşmak istediğiniz tüm verileri içerebilir cihazlar arasında geçiş yapın. Örneğin, Kişiler uygulaması kişileri, YouTube videoları ve Tarayıcıyı paylaşır. Android Beam'i kullanarak URL'leri paylaşır.
Android Beam'i kullanarak cihazlar arasında veri aktarmak için etkinliğiniz açıkken paylaşmak istediğiniz bilgileri içeren bir NdefMessage
oluşturmanız gerekir
görebilirsiniz. Daha sonra, NdefMessage
öğesini sisteme iki seçenekten birinde iletmeniz gerekir
yöntemler:
- Etkinlik sırasında aktarılacak tek bir
NdefMessage
tanımlayın:Ayarlamak için dilediğiniz zaman
setNdefPushMessage()
numaralı telefonu arayın kısa bir e-posta alırsınız. Örneğin, etkinliğinizinonCreate()
sırasında bu yöntemi çağırabilir veNdefMessage
iletebilirsiniz. yöntemidir. Ardından, etkinlik başka bir cihazla açıldığında, ön planda, sistemNdefMessage
öğesini diğer cihaza gönderir. - Android Beam başlatıldığı sırada aktarılacak
NdefMessage
öğesini tanımlayın:NfcAdapter.CreateNdefMessageCallback
uygulayın.createNdefMessage()
uygulanması yöntemi, göndermek istediğinizNdefMessage
değerini döndürür. Ardından,NfcAdapter.CreateNdefMessageCallback
uygulamasınısetNdefPushMessageCallback()
platformuna iletin.Bu durumda, etkinliğiniz başka bir cihazdayken Android Beam ön plandaysa sistem, verileri geri almak için
createNdefMessage()
göndermek istediğinizNdefMessage
öğesi. Bu,NdefMessage
öğesinin, içeriğin mesajın yapısı, etkinliğin ömrü boyunca değişiklik gösterebilir.
Sistem NDEF'nizi başarıyla teslim ettikten sonra belirli bir kod çalıştırmak isterseniz
mesajı görürseniz NfcAdapter.OnNdefPushCompleteCallback
öğesini uygulayabilir ve setNdefPushCompleteCallback()
ile ayarlayabilirsiniz. Sistem,
Mesaj teslim edildiğinde onNdefPushComplete()
adlı kuruluşu arayın.
Sistem, alıcı cihazda NDEF Push mesajlarını normal NFC'ye benzer bir şekilde gönderir.
etiketleri arasında yer alır. Sistem, ACTION_NDEF_DISCOVERED
ile bir intent çağırır.
eylemin NdefMessage
içindeki ilk NdefRecord
'e göre ayarlanmış bir URL veya MIME türüyle Yapmak istediğiniz etkinlik için
yanıt verdiğinizde, uygulamanızın önemsediği URL'ler veya MIME türleri için intent filtreleri bildirebilirsiniz. Daha fazla
NFC geliştirici kılavuzuna bakın.
NdefMessage
cihazınızın bir URI taşımasını istiyorsanız artık
bir dize veya Uri
nesnesine dayalı yeni bir NdefRecord
oluşturmak için createUri
yöntemini kullanın. URI ise
uygulamanızın bir Android Beam etkinliği sırasında da almasını istediğiniz özel bir biçimdir.
öğesini almak amacıyla aynı URI şemasını kullanarak etkinliğiniz için bir intent filtresi
gelen NDEF mesajı.
Ayrıca "Android uygulama kaydı" da iletmeniz gerekir. NdefMessage
cihazınızla birlikte
uygulamanızın gelen NDEF mesajını işlemesini garantilemek için
aynı amaç işlemi için
filtrelenir. Android uygulama kaydı oluşturmak için
createApplicationRecord()
aranıyor, gönderiliyor
paket adı. Diğer cihaz
uygulama kaydı ve birden fazla uygulama, belirtilen amacı işleyen etkinlikler içerir.
sistem her zaman mesajı uygulamanızdaki etkinliğe iletir (eşleşen
başvuru kaydına ekleyin. Hedef cihazda uygulamanız yüklü değilse
sistemi Google Play'i başlatmak için Android uygulama kaydını kullanır ve kullanıcıyı
uygulamayı yüklemeniz gerekir.
Uygulamanız NDEF Push mesajlaşmasını gerçekleştirmek için NFC API'lerini kullanmıyorsa Android bir Varsayılan davranış: Uygulamanız bir cihazda ön planda çalışırken ve Android Beam diğer cihaz, Android destekli başka bir cihazla çağrılırsa Uygulamanızı tanımlayan Android uygulaması kaydı. Alıcı cihazda uygulama yüklendiğinde, sistem uygulamayı başlatır; yüklü değilse Google Play açılır ve kullanıcıyı uygulamanıza yönlendirin.
NFC ile İlgili Temel Bilgiler geliştirici kılavuzunda Android Beam ve diğer NFC özellikleri hakkında daha fazla bilgi edinebilirsiniz. Örneğin, hakkında daha fazla bilgi için Android Beam Işınlama Demosu.
Kablosuz P2P
Android artık Android destekli cihazlar ile eşler arası (P2P) bağlantıları diğer cihaz türleri de (Wi-Fi Alliance'ın Wi-Fi DirectTM sertifika programı) hotspot veya İnternet bağlantısı olmadan. Android çerçevesi, kullanıcıları Her bir cihaz değiştirildiğinde diğer cihazları keşfedip bağlanmanıza olanak tanıyan Wi-Fi P2P API'leri kablosuz P2P'yi destekler; daha uzun mesafelerde hızlı bir bağlantı üzerinden Bluetooth bağlantısı.
Eşler arası performans için tüm API'leri içeren yeni android.net.wifi.p2p
paketi
Kablosuz bağlantılar. Çalışmanız gereken birincil sınıf, getSystemService(WIFI_P2P_SERVICE)
numaralı telefonu arayarak edinebileceğiniz WifiP2pManager
. WifiP2pManager
aşağıdakileri yapmanıza olanak tanıyan API'ler içerir:
- P2P bağlantıları için uygulamanızı
initialize()
numaralı telefonu arayarak başlatın. discoverPeers()
numaralı telefonu arayarak yakındaki cihazları keşfedinconnect()
numaralı telefonu arayarak P2P bağlantısı başlatın- Başka pek çok bilgi
Ayrıca, aşağıdakiler gibi birçok farklı arayüz ve sınıf da gereklidir:
WifiP2pManager.ActionListener
arayüzü ile şunları alabilirsiniz: eşleri keşfetme veya bunlara bağlanma gibi bir işlem başarılı ya da başarısız olduğunda geri çağırmalar.WifiP2pManager.PeerListListener
arayüzü ile şunları alabilirsiniz: hakkında daha fazla bilgi edinin. Geri çağırma, birWifiP2pDeviceList
sağlar. Kapsama alanı içindeki her cihaz içinWifiP2pDevice
nesnesini buradan alabilir ve aşağıdakilere benzer bilgileri alabilirsiniz: cihaz adı, adresi, cihaz türü, cihazın desteklediği WPS yapılandırmaları ve daha fazlası.WifiP2pManager.GroupInfoListener
arayüzü şunları yapmanıza olanak tanır: P2P grubuyla ilgili bilgi alma. Geri çağırma; birWifiP2pGroup
nesnesi sağlar. Bu nesne; sahibi, parolayı girin.WifiP2pManager.ConnectionInfoListener
arayüzü ile yapabilecekleriniz: geçerli bağlantıyla ilgili bilgi almalarını sağlayın. Geri çağırma, bir grubun konumlandırılıp sayılmadığı gibi bilgileri içeren birWifiP2pInfo
nesnesi sağlar. ve grup sahibinin kim olduğu.
Wi-Fi P2P API'lerini kullanmak için uygulamanızın aşağıdaki kullanıcı izinlerini istemesi gerekir:
ACCESS_WIFI_STATE
CHANGE_WIFI_STATE
INTERNET
(uygulamanız teknik olarak bağlantı kurmasa da standart Java yuvalarına sahip kablosuz P2P eşleriyle iletişim kurmak için İnternet gerekir. izni) gerekir.
Android sistemi belirli Wi-Fi P2P etkinlikleri sırasında birkaç farklı işlem de yayınlar:
WIFI_P2P_CONNECTION_CHANGED_ACTION
: P2P bağlantı durumu değişti. Bu,WifiP2pInfo
nesnesiyleEXTRA_WIFI_P2P_INFO
veNetworkInfo
ileEXTRA_NETWORK_INFO
taşır nesnesini tanımlayın.WIFI_P2P_STATE_CHANGED_ACTION
: P2P durumu durumu "etkin" ve "devre dışı" olarak değiştirildi.WIFI_P2P_STATE_DISABLED
ya daWIFI_P2P_STATE_ENABLED
ileEXTRA_WIFI_STATE
taşıyorWIFI_P2P_PEERS_CHANGED_ACTION
: Benzerlerin listesi cihaz değişti.WIFI_P2P_THIS_DEVICE_CHANGED_ACTION
: Ayrıntılı bilgiler: bu cihaz değişti.
Daha fazla bilgi için WifiP2pManager
dokümanlarına bakın. Ayrıca
buraya göz atın
Wi-Fi P2P Demo
örnek bir uygulamadır.
Bluetooth Sağlık Cihazları
Android artık Bluetooth Sağlık Profili cihazlarını desteklediğinden Bluetooth'u kullanarak nabız takip cihazları gibi Bluetooth'u destekleyen sağlık cihazlarıyla kan ölçüm cihazları, termometreler ve teraziler.
Normal mikrofonlu kulaklık ve A2DP profili cihazlarına benzer şekilde, profille bağlantı kurmak için getProfileProxy()
numaralı telefonu BluetoothProfile.ServiceListener
ve HEALTH
profil türüyle aramanız gerekir
proxy nesnesidir.
Sağlık Profili proxy'sini (BluetoothHealth
) edindikten sonra
nesne) eşlenen sağlık cihazlarına bağlanmak ve bu cihazlarla iletişim kurmak için aşağıdaki yeni
Bluetooth sınıfları:
BluetoothHealthCallback
: Bu sınıfın kapsamını genişletmeli ve uygulamanın kayıt durumundaki değişikliklerle ilgili güncellemeleri almak için geri çağırma yöntemleri ve Bluetooth kanalı durumu.BluetoothHealthAppConfiguration
:BluetoothHealthCallback
yanıtınıza yapılan geri çağırmalar sırasında bu nesnenin bir örneğini alırsınız. kullanılabilir Bluetooth sağlık cihazı hakkında, kullanmanız gereken yapılandırma bilgileri sağlarBluetoothHealth
API'leriyle bağlantıları başlatma ve sonlandırma gibi çeşitli işlemleri gerçekleştirmek için kullanılır.
Bluetooth Sağlık Profili'ni kullanma hakkında daha fazla bilgi için BluetoothHealth
dokümanlarına bakın.
Erişilebilirlik
Android 4.0, yeni dokunarak keşfetme moduyla görme engelli kullanıcılar için erişilebilirliği iyileştiriyor veya genişletilmiş API'lar ile nasıl eriştiğinizi gösteren Gelişmiş erişilebilirlik hizmetleri geliştirmenize olanak tanır.
Dokunarak keşfetme modu
Görme kaybı olan kullanıcılar artık bir parmağına dokunup sürükleyerek ekranda gezinebilirler.
içeriğin sesli açıklamalarını dinleyin. Çünkü dokunarak keşfetme modu
Bu şekilde ekran okuyucuların açıklayıcı metni ekrandakiyle aynı şekilde tanımlamasını sağlar.
Kullanıcı, sağlanan bilgileri okuyarak d-pad veya iztopu ile gezindiğinde okuyucular bunu yapabilir
"fareyle üzerine gelindiğinde" simüle edilmişse android:contentDescription
ve setContentDescription()
tarafından unutmayın. Dolayısıyla,
görüntülemeler için açıklayıcı metin sağlamanız gerektiğini belirten bir hatırlatıcıdır.
bilhassa ImageButton
, EditText
için
ImageView
ve doğal bir şekilde açıklayıcı içermeyebilecek diğer widget'lar
metin.
Görünümler için erişilebilirlik
Ekran okuyucu gibi erişilebilirlik hizmetlerinde sunulan bilgileri iyileştirmek için
Özel View
bileşenlerinizde erişilebilirlik etkinlikleri için yeni geri çağırma yöntemleri uygulayın.
Öncelikle sendAccessibilityEvent()
yönteminin davranışının Android'de değiştiğini belirtmek önemlidir.
4.0. Android'in önceki sürümünde olduğu gibi, kullanıcı cihazda erişilebilirlik hizmetlerini etkinleştirdiğinde
tıklama veya fareyle üzerine gelme gibi bir giriş etkinliği gerçekleştiğinde, ilgili görünüme
sendAccessibilityEvent()
Daha önce
sendAccessibilityEvent()
uygulanması
bir AccessibilityEvent
başlatın ve AccessibilityManager
adresine gönderin. Yeni davranış bazı ek geri çağırmalar içeriyor
görünüm ve üst öğelerinin etkinliğe daha fazla bağlamsal bilgi eklemesine olanak tanıyan yöntemler içerir:
sendAccessibilityEvent()
vesendAccessibilityEventUnchecked()
yöntemleri çağrıldığında ertelenir alıcı:onInitializeAccessibilityEvent()
.View
özel uygulamaları içinonInitializeAccessibilityEvent()
AccessibilityEvent
öğesine daha fazla erişilebilirlik bilgisi ekleyin ancak standart içerik açıklaması ve öğe dizini gibi varsayılan bilgileri sağlayabilir. Ancak bu geri çağırmaya başka metin içeriği eklememelisiniz. tıklayın.- Etkinlik başlatıldıktan sonra, metin ile doldurulması gereken çeşitli türlerden biriyse
görüntüledikten sonra, görünüm
dispatchPopulateAccessibilityEvent()
onPopulateAccessibilityEvent()
tarihine kadar erteler geri arama.View
özel uygulamalarında, fazladan bir değer eklemek için genellikleonPopulateAccessibilityEvent()
uygulanırandroid:contentDescription
metni eksikse veyaAccessibilityEvent
öğesine metin içeriğini yeterli değildir. Daha fazla metin açıklaması eklemek içinAccessibilityEvent
,getText()
numaralı telefonu arayın.add()
. - Bu noktada
View
, şunu çağırarak etkinliği görünüm hiyerarşisinin yukarısına aktarır:requestSendAccessibilityEvent()
üst görünüm. Böylece her ebeveyn görünümü, erişilebilirlik bilgilerini o zamana kadarAccessibilityRecord
ekleniyor kök görünüme ulaşır ve etkinlik,sendAccessibilityEvent()
ileAccessibilityManager
ürününe gönderilir.
View
sınıfının genişletilmesinde kullanışlı olan yukarıdaki yeni yöntemlere ek olarak, AccessibilityDelegate
öğesini genişletip görünümde aşağıdaki kodla ayarlayarak herhangi bir View
üzerinde bu etkinlik geri çağırmalarına müdahale edebilirsiniz.
setAccessibilityDelegate()
.
Bunu yaptığınızda, görünümdeki her erişilebilirlik yöntemi çağrıyı
karar verir. Örneğin, görünüm onPopulateAccessibilityEvent()
öğesine bir çağrı aldığında, bunu
View.AccessibilityDelegate
içinde aynı yöntem.
izin verilen kullanıcı, varsayılan davranış için doğrudan görünüme geri döndürülür. Bu, bazı durumlarda
View
sınıfını genişletmeden belirli bir görünüm için gerekli yöntemler.
4.0'dan önceki Android sürümleriyle uyumluluğu sürdürmek ve aynı zamanda yeni erişilebilirlik API'lerini kullanmak istiyorsanız bunu v4 desteğinin son sürümüyle kitaplığı (Uyumluluk Paketi, r4'te) yeni erişilebilirlik API'lerini geriye dönük uyumlu olacak şekilde sağlayan bir dizi yardımcı program sınıfı kullanarak tasarım.
Erişilebilirlik hizmetleri
Bir erişilebilirlik hizmeti geliştiriyorsanız çeşitli erişilebilirlik etkinlikleri hakkındaki bilgiler , kullanıcılar için daha gelişmiş erişilebilirlik geri bildirimi sağlamak üzere önemli ölçüde genişletildi. İçinde Özellikle, etkinlikler görüntüleme bileşimine göre oluşturulur, daha iyi bağlam bilgileri sağlar ve erişilebilirlik hizmetlerinin, ek görünüm bilgileri almak ve başa çıkmanıza yardımcı olur.
Bir erişilebilirlik hizmeti (ekran okuyucu gibi) geliştiriyorsanız aşağıdaki prosedürü uygulayarak ek içerik bilgilerini ve çapraz görünüm hiyerarşilerini inceleyin:
- Bir uygulamadan
AccessibilityEvent
aldıktan sonra, belirli birAccessibilityRecord
almak içinAccessibilityEvent.getRecord()
işlevini çağırın ( etkinliği) ekleyebilirsiniz. AccessibilityEvent
veya tek birAccessibilityRecord
cihazından,AccessibilityNodeInfo
nesnesini almak içingetSource()
öğesini çağırabilirsiniz.AccessibilityNodeInfo
, tek bir düğümü temsil eder erişilebilirlik bilgilerini sorgulamanıza olanak tanıyan bir biçimde sunmalısınız. düğüm.AccessibilityEvent
işlevinden döndürülenAccessibilityNodeInfo
nesnesi etkinlik kaynağını tanımlarken,AccessibilityRecord
, etkinliğin selefi hakkında bilgi verir kaynak.AccessibilityNodeInfo
ile bilgileri sorgulayabilirsiniz. görünümü aktarmak içingetParent()
veyagetChild()
işlevini çağırın ve hatta düğüme alt görünümler de ekleyebilirsiniz.
Uygulamanızın kendisini erişilebilirlik hizmeti olarak sistemde yayınlayabilmesi için
AccessibilityServiceInfo
işlevine karşılık gelen bir XML yapılandırma dosyası bildirmelidir. Oluşturma konusunda daha fazla bilgi için
erişilebilirlik hizmetine, XML yapılandırması hakkında bilgi için AccessibilityService
ve SERVICE_META_DATA
'ne bakın.
Diğer erişilebilirlik API'leri
Cihazın erişilebilirlik durumuyla ilgileniyorsanız AccessibilityManager
gibi bazı yeni API'ler var:
AccessibilityManager.AccessibilityStateChangeListener
. erişilebilirlik özelliği etkinleştirildiğinde geri arama almanıza olanak tanıyan bir arayüzdür devre dışı bırakıldı.getEnabledAccessibilityServiceList()
hangi erişilebilirlik hizmetleriyle ilgili bilgi verir? şu anda etkin.isTouchExplorationEnabled()
anlatıyor dokunarak keşfetme modunun etkin olup olmadığını kontrol edebilirsiniz.
Yazım Denetleyici Hizmetleri
Yeni bir yazım denetleyici çerçevesi, uygulamaların
giriş yöntemi çerçevesi (IME'ler için) Yeni bir yazım denetleyicisi oluşturmak için uygulamanızın
uzatır
SpellCheckerService
ve SpellCheckerService.Session
sınıfını genişleterek, temel alınan yazım önerilerinde bulunmak için
tarafından sağlanan metinlere ekleyebilirsiniz. SpellCheckerService.Session
geri çağırma yöntemlerinde
yazım önerilerini SuggestionsInfo
nesne olarak görüyorsunuz.
Yazım denetleyici hizmetine sahip uygulamalar, BIND_TEXT_SERVICE
iznini hizmetin gerektirdiği şekilde beyan etmelidir.
Hizmet ayrıca intent işlemi olarak <action
android:name="android.service.textservice.SpellCheckerService" />
ile bir intent filtresi beyan etmeli
yazım için yapılandırma bilgilerini tanımlayan bir <meta-data>
öğesi ekleyin
kontrol eder.
Örneğe bakın: Yazım Denetleyici Hizmeti uygulamasını kullanarak örnek Örnek kod için Yazım Denetleyici İstemcisi uygulaması.
Metin Okuma Motorları
Android’in metin okuma (TTS) API'leri, uygulamaların şunları yapmasına olanak tanıyacak şekilde önemli ölçüde genişletildi: özel TTS motorlarını daha kolay uygularken TTS motoru kullanmak isteyen uygulamalar ise için birkaç yeni API var.
Metin okuma motorlarını kullanma
Android'in önceki sürümlerinde TextToSpeech
sınıfını kullanabilirdiniz
sistem tarafından sağlanan TTS motorunu kullanarak metin okuma (TTS) işlemleri gerçekleştirmek veya bir
özel arama motorunu setEngineByPackageName()
kullanın. Android 4.0'da setEngineByPackageName()
yöntemi
desteği sonlandırıldı ve artık motorun, TTS motorunun paket adını kabul eden yeni bir TextToSpeech
oluşturucuyla kullanılmasını belirtebilirsiniz.
Ayrıca, kullanılabilir TTS motorlarını getEngines()
ile sorgulayabilirsiniz. Bu yöntem, motorunTextToSpeech.EngineInfo
simge, etiket ve paket adı.
Metin okuma motorları oluşturma
Daha önce, özel motorlar, motorun belgelenmemiş bir yerel başlık kullanılarak oluşturulmasını gerektiriyordu dosyası olarak kaydedebilirsiniz. Android 4.0'da TTS motorları oluşturmaya yönelik eksiksiz bir çerçeve API'leri seti vardır.
Temel kurulum, aşağıdakilerin geçerli olması için TextToSpeechService
uygulanmasını gerektirir:
INTENT_ACTION_TTS_SERVICE
amacına karşılık gelir. İlgili içeriği oluşturmak için kullanılan
TTS motoru için birincil çalışma, bir hizmette onSynthesizeText()
geri çağırması sırasında gerçekleşir
, TextToSpeechService
kapsamını genişletiyor. Sistem bu yöntemi ikinci olarak sunar.
nesneler:
SynthesisRequest
: Bu öğe, çeşitli verileri içerir. Örneğin, yerel ayarı, konuşma hızını ve ses tonunu sentezlemelisiniz.SynthesisCallback
: Bu, TTS motorunuzu yapmak için kullanılan arayüzdür sonuçta elde edilen konuşma verilerini, akışlı ses olarak sunar. Öncelikle motor, motorun yayına hazır olduğunu belirtmek içinstart()
öğesini çağırmalıdır sesi dinleyin, ardındanaudioAvailable()
adlı kişiyi arayın. ilettiğinden emin olun. Motorunuz arabellekte,done()
yöntemini çağırın.
Çerçeve artık TTS motorları oluşturmak için gerçek bir API'yi desteklediğine göre artık yerel kod için de uygulama kaldırıldı. Uyumluluk katmanıyla ilgili blog yayınını arama eski TTS motorlarınızı yeni çerçeveye dönüştürmek için kullanabileceğiniz bir çerçevedir.
Yeni API'leri kullanan örnek bir TTS motoru için Text To Speech Engine örnek uygulamasına bakın.
Ağ Kullanımı
Android 4.0, kullanıcılara uygulamalarının ne kadar ağ verisi kullandığı konusunda net görünürlük sağlar. Ayarlar uygulaması, kullanıcıların ağ veri kullanımı için belirlenen sınırları yönetmesine ve her uygulama için arka plan verilerinin kullanımını devre dışı bırakabilirsiniz. Kullanıcıların daha arka planda verilere erişebilmesini sağlamak amacıyla bu verileri kullanmak için stratejiler ve kullanımınızı mevcut bağlantı türüne göre ayarlayabilirsiniz.
Uygulamanızda çok sayıda ağ işlemi gerçekleştiriliyorsa
Kullanıcıların, uygulamanızın veri alışkanlıklarını (ör. uygulamanızın verileri ne sıklıkta senkronize edeceği ve
Yükleme/indirme işlemlerini, yalnızca kablosuz ağa bağlıyken (dolaşımdayken veri kullanıp kullanmayacağını vb.) gerçekleştirebilir.
kontrol edebilmek için, kullanıcıların aşağıdaki işlemleri gerçekleştirmeleri halinde uygulamanızın verilere erişimini
uygulamanızın kullandığı veri miktarını hassas bir şekilde kontrol edebildikleri için
sınırlarına yaklaşırlar.
Bu ayarlarla bir tercih etkinliği sağlarsanız, bunu manifest dosyasına eklemeniz gerekir
ACTION_MANAGE_NETWORK_USAGE
için bir amaç filtresi bildirme
eyleme dökülebilir. Örnek:
<activity android:name="DataPreferences" android:label="@string/title_preferences"> <intent-filter> <action android:name="android.intent.action.MANAGE_NETWORK_USAGE" /> <category android:name="android.intent.category.DEFAULT" /> </intent-filter> </activity>
Bu intent filtresi, sisteme sizin uygulamanın veri kullanımı. Böylece kullanıcı, Ayarlar uygulaması, bir "Uygulama ayarlarını görüntüle" düğmesini tıkladığınız zaman kullanıcının, uygulamanızın kullandığı veri miktarını hassaslaştırabilmesi için tercih etkinliği.
Ayrıca getBackgroundDataSetting()
öğesinin artık şu anda
desteği sonlandırılmış ve her zaman doğru değerini döndürüyor. Bunun yerine getActiveNetworkInfo()
kullanın. Herhangi bir ağı denemeden önce
işlemleri için her zaman getActiveNetworkInfo()
için geçerli ağı temsil eden NetworkInfo
ve cihazda isConnected()
sorgu
bağlantı. Ardından, cihazın diğer bağlantı özelliklerini (ör. cihazın
dolaşımdayken veya kablosuz ağa bağlı olduğundan emin olun.
Kurumsal
Android 4.0 aşağıdaki özelliklerle kurumsal uygulama yeteneklerini genişletir.
VPN hizmetleri
Yeni VpnService
, uygulamaların kendi VPN'sini (Sanal
Özel Ağ) Service
olarak çalışır. Bir VPN hizmeti,
kendi adresi ve yönlendirme kuralları olan bir sanal ağ oluşturur ve tüm okuma ve yazma işlemlerini
dosya tanımlayıcısıdır.
Bir VPN hizmeti oluşturmak için VpnService.Builder
kullanarak bir VPN hizmeti oluşturun.
ağ adresi, DNS sunucusu, ağ rotası ve daha fazlası. Tamamlandığında,
arayüzü establish()
işlevini çağırarak ParcelFileDescriptor
döndürür.
Bir VPN hizmeti paketlere müdahale edebildiğinden güvenlik sorunları vardır. Dolayısıyla,
VpnService
uygulamak durumunda, hizmetinizin yalnızca sistemin bağlanabildiğinden emin olmak için BIND_VPN_SERVICE
yönergesini zorunlu tutması gerekir (yalnızca
sisteme bu izin verilir; uygulamalar bu izni isteyemez). Daha sonra VPN hizmetinizi kullanmak için
Kullanıcıların sistem ayarlarında bunu manuel olarak etkinleştirmesi gerekir.
Cihaz politikaları
Cihaz kısıtlamalarını yöneten uygulamalar artık setCameraDisabled()
özelliğini ve USES_POLICY_DISABLE_CAMERA
özelliğini (politika yapılandırma dosyasında <disable-camera />
öğesiyle uygulanır) kullanarak kamerayı devre dışı bırakabilir.
Sertifika yönetimi
Yeni KeyChain
sınıfı, içe aktarma ve erişim için API'ler sunar.
anahtar deposunda bulunan sertifika programıdır. Sertifikalar hem istemcinin hem de istemcinin
sertifikaları (kullanıcının kimliğini doğrulamak için) ve sertifika yetkilisi sertifikalarını (kullanıcının kimliğini
sunucu kimliğini doğrulayın). Web tarayıcıları veya e-posta istemcileri gibi uygulamalar,
sertifikalarına ve diğer sertifikalara sahip olur. KeyChain
inceleyin.
dokümanlarına göz atabilirsiniz.
Cihaz Sensörleri
Android 4.0'a iki yeni sensör türü eklendi:
TYPE_AMBIENT_TEMPERATURE
: Sıcaklık sensörü santigrat cinsinden ortam (oda) sıcaklığı.TYPE_RELATIVE_HUMIDITY
: Bulunduğunuz sıcaklığı gösteren bir nem sensörü yüzde olarak bağıl ortam (oda) nemi.
Bir cihazda hem TYPE_AMBIENT_TEMPERATURE
hem de TYPE_RELATIVE_HUMIDITY
sensörü varsa çiy noktasını hesaplamak için bunları kullanabilirsiniz
mutlak nem gibi.
Önceki sıcaklık sensörü (TYPE_TEMPERATURE
)
desteği sonlandırıldı. TYPE_AMBIENT_TEMPERATURE
sensörünü kullanmalısınız
.
Ayrıca, Android'in üç sentetik sensörü de büyük ölçüde geliştirildiğinden artık daha düşük
ve daha akıcı çıkışlar sağladı. Bu sensörler arasında yer çekimi sensörü (TYPE_GRAVITY
), dönüş vektör sensörü (TYPE_ROTATION_VECTOR
) ve doğrusal ivme sensörü (TYPE_LINEAR_ACCELERATION
) yer alır. İyileştirilmiş sensörler jiroskopla çalışıyor
sensörler sadece jiroskop bulunan cihazlarda görünür.
İşlem Çubuğu
ActionBar
, birkaç yeni davranışı destekleyecek şekilde güncellendi. En sık
Daha da önemlisi, sistem aynı bilgisayarda işlem çubuğunun boyutunu ve yapılandırmasını da
kullanarak tüm ekran boyutlarında en iyi kullanıcı deneyimini sunun. Örneğin,
Ekran dar olduğunda (örneğin, cihaz dikey yönde olduğunda), işlem çubuğunun
gezinme sekmeleri "yığılmış çubukta" görünür. ana işlem çubuğunun hemen altında
görünür. Şunları yapabilirsiniz:
“Bölünmüş işlem çubuğunu” da etkinleştirin Bu sekme, tüm işlem öğelerini sayfanın alt kısmında
ekranın küçük bir kısmını kapsayabilir.
Bölünme işlem çubuğu
İşlem çubuğunuz birkaç işlem öğesi içeriyorsa bunların tümü
böylece sistem, taşma menüsüne daha fazla öğe yerleştirebilir. Ancak Android 4.0
"bölme işlem çubuğunu" etkinleştirmenize olanak tanır. ekranda daha fazla eylem öğesinin
ayrı bir çubuk kullanın. Bölünmüş işlem çubuğunu etkinleştirmek için android:uiOptions
öğesini "splitActionBarWhenNarrow"
ile birlikte
<application>
etiket veya
ayrı <activity>
etiketleri
manifest dosyanıza ekleyin. Bu seçenek etkinleştirildiğinde, sistem sayfanın alt kısmına yeni bir çubuk ekler.
ekran küçükse tüm işlem öğelerini görüntüleyin (birincil
işlem çubuğuna bakın).
ActionBar.Tab
API'leri tarafından sağlanan gezinme sekmelerini kullanmak istiyorsanız
ana işlem çubuğuna ihtiyaç duymaz (yalnızca sekmelerin en üstte görünmesini istersiniz)
bölünmüş işlem çubuğunu (yukarıda açıklandığı gibi) devre dışı bırakmak için setDisplayShowHomeEnabled(false)
öğesini çağırın
uygulama simgesine dokunabilirsiniz. Ana işlem çubuğunda hiçbir şey kalmadığında,
kaybolur; geriye yalnızca üst kısımdaki gezinme sekmeleri ve
dokunun.
İşlem çubuğu stilleri
İşlem çubuğuna özel stil uygulamak istiyorsanız arka plan uygulamak için backgroundStacked
ve backgroundSplit
yeni stil özelliklerini kullanabilirsiniz
çizilebilir veya renklendirmeyi ayrı ayrı seçebilirsiniz. Bu stilleri şu adresten de ayarlayabilirsiniz:
setStackedBackgroundDrawable()
ve setSplitBackgroundDrawable()
ile çalışma zamanı.
İşlem sağlayıcı
Yeni ActionProvider
sınıfı, aşağıdakiler için özel bir işleyici oluşturmanızı sağlar:
yapılacak işler listesidir. İşlem sağlayıcı, işlem görünümü, varsayılan işlem davranışı ve alt menü tanımlayabilir
her bir işlem öğesi için kullanılabilir. Belirli bir özellik içeren bir işlem öğesi
dinamik davranışlar (değişken işlem görünümü, varsayılan işlem veya alt menü gibi) için ActionProvider
genişletmesi yerine yeniden kullanılabilir bir bileşen oluşturmak yerine
parçanız veya etkinliğinizdeki çeşitli işlem öğesi dönüşümlerini işleme.
Örneğin ShareActionProvider
, "paylaşımı" kolaylaştıran bir ActionProvider
uzantısıdır. işlemi seçin. Bunun yerine
ACTION_SEND
amacını çağıran geleneksel işlem öğesini seçerseniz
İşleyen uygulamaların açılır listesiyle bir işlem görünümü sunmak için bu işlem sağlayıcıyı
ACTION_SEND
niyeti. Kullanıcı kullanılacak bir uygulama seçtiğinde
işlem için, ShareActionProvider
bu seçimi hatırlar ve
söz konusu uygulamayla paylaşıma daha hızlı erişmek için işlem görünümündeyken bunu yapabilirsiniz.
Bir işlem öğesi için işlem sağlayıcı bildirmek isterseniz android:actionProviderClass
ekleyin
özelliğinin seçenekler menüsündeki <item>
öğesinde, işlemin sınıf adıyla birlikte
pekiştirir. Örnek:
<item android:id="@+id/menu_share" android:title="Share" android:showAsAction="ifRoom" android:actionProviderClass="android.widget.ShareActionProvider" />
Etkinliğinizin onCreateOptionsMenu()
bölümünde
geri çağırma yöntemiyle, menü öğesinden işlem sağlayıcısının bir örneğini alın ve
amaç:
Kotlin
override fun onCreateOptionsMenu(menu: Menu): Boolean { menuInflater.inflate(R.menu.options, menu) val shareActionProvider = menu.findItem(R.id.menu_share)?.actionProvider as? ShareActionProvider // Set the share intent of the share action provider. shareActionProvider?.setShareIntent(createShareIntent()) ... return super.onCreateOptionsMenu(menu) }
Java
public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.options, menu); ShareActionProvider shareActionProvider = (ShareActionProvider) menu.findItem(R.id.menu_share).getActionProvider(); // Set the share intent of the share action provider. shareActionProvider.setShareIntent(createShareIntent()); ... return super.onCreateOptionsMenu(menu); }
ShareActionProvider
kullanılan bir örnek için ApiDemos'taki ActionBarShareActionProviderActivity öğesine bakın.
Daraltılabilir işlem görünümleri
İşlem görünümü sağlayan işlem öğeleri artık işlem görünümü durumları ile işlem görünümü durumları arasında
geleneksel işlem öğesi durumu. Daha önce yalnızca SearchView
destekleniyordu
daraltılabilir. Ancak artık istediğiniz işlem öğesi için bir işlem görünümü ekleyebilir ve
genişletilmiş durum (işlem görünümü görünür) ve daraltılmış durum (işlem öğesi
görünür).
İşlem görünümü içeren bir işlem öğesinin daraltılabilir olduğunu bildirmek için menünün XML dosyasında <item>
öğesinin android:showAsAction
özelliğine “collapseActionView"
işaretini ekleyin.
Bir işlem görünümü genişletilmiş ve daraltılmış arasında geçiş yaptığında geri çağırma almak için bir
setOnActionExpandListener()
çağrısı yaparak ilgili MenuItem
ile MenuItem.OnActionExpandListener
örneği. Bunu genellikle onCreateOptionsMenu()
geri araması sırasında yapmanız gerekir.
Daraltılabilir işlem görünümünü kontrol etmek için şunları çağırabilirsiniz: collapseActionView()
ve expandActionView()
ilgili MenuItem
.
Özel işlem görünümü oluştururken, görünüm genişletildiğinde geri çağırmalar almak için yeni CollapsibleActionView
arayüzünü de uygulayabilirsiniz
daraltıldı.
İşlem çubuğu için diğer API'ler
setHomeButtonEnabled()
aşağıdakileri belirtmenize olanak tanır: simgenin/logonun ana sayfaya veya "yukarı" yön düğmesine gitmek için bir düğme gibi davranıp davranmadığı (şeklinde olması için "true" değerini girin) bir düğme).setIcon()
vesetLogo()
, çalışma zamanında işlem çubuğu simgesini veya logosunu tanımlamanızı sağlar.Fragment.setMenuVisibility()
, şunları etkinleştirmenize olanak tanır: veya parça tarafından tanımlanan seçenekler menüsü öğelerinin görünürlüğünü devre dışı bırakın. Bu, parçası etkinliğe eklendi ancak görünür değil. Bu nedenle menü öğeleri, gizlendi.FragmentManager.invalidateOptionsMenu()
. parça yaşam döngüsünün çeşitli durumları sırasında etkinlik seçenekleri menüsünü geçersiz kılmanıza olanak tanır.Activity
ile eşdeğer yöntemin kullanılmasının mümkün olmayabileceği durumlar.
Kullanıcı Arayüzü ve Görünümler
Android 4.0, çeşitli yeni görünümler ve diğer kullanıcı arayüzü bileşenleri sunar.
Izgara Düzeni
GridLayout
, alt öğelerin görüntülemelerini dikdörtgen içine yerleştiren yeni bir görünüm grubudur
ızgara. TableLayout
işlevinin aksine GridLayout
,
hiyerarşisini kullanır ve yapı sağlamak için tablo satırları gibi ara görünümlerden yararlanmaz.
Bunun yerine, alt öğeler hangi satır ve sütunların yer alacağını belirtir (hücreler birden çok
satır ve/veya sütunlar) gösterilir ve varsayılan olarak tablodaki satır ve sütunlara sıralı olarak yerleştirilir.
GridLayout
yönü, sıralı alt öğelerin sıralı olarak yapılıp yapılmadığını
arka planlardan birine yerleştirilecektir. Alt öğeler arasındaki boşluk
Yeni Space
görünümünün örneklerini veya ilgili kenar boşluğu parametrelerini ayarlayarak
anlayabiliyoruz.
ApiDemos'a göz atın
GridLayout
kullanan örnekler için.
Doku Görünümü
TextureView
, şunun gibi bir içerik akışı göstermenize olanak tanıyan yeni bir görünümdür:
bir video veya OpenGL sahnesi olarak kullanın. SurfaceView
özelliğine benzer olmakla birlikte TextureView
, normal bir görünüm gibi davranması bakımından benzersizdir.
ayrı pencere açın. Böylece, bunu diğer herhangi bir View
nesnesi gibi işleyebilirsiniz. Örneğin,
dönüşümleri uygulayabilir, ViewPropertyAnimator
ile canlandırabilirsiniz.
opaklığını setAlpha()
ile ayarlayabilirsiniz.
TextureView
işlevinin yalnızca donanım hızlandırmalı pencerede çalıştığını unutmayın.
Daha fazla bilgi için TextureView
belgelerine bakın.
Widget'ı değiştir
Yeni Switch
widget'ı iki durumlu bir açma/kapatma düğmesidir ve kullanıcıların tek bir öğeye sürüklenmesine olanak tanır
bir seçenek için iki durum arasında geçiş yapmak üzere iki durum arasında geçiş yapın.
Metni belirtmek için android:textOn
ve android:textOff
özelliklerini kullanabilirsiniz
açık ve kapalı ayarındayken anahtarda görünür. android:text
özelliği de
anahtarın yanına etiket yerleştirmenize olanak tanır.
Anahtarların kullanıldığı bir örnek için switches.xml düzen dosyasına bakın ve ilgili Anahtarlar etkinliği.
Pop-up menüler
Android 3.0'da, öne çıkan kısa içerik menüleri oluşturmak için PopupMenu
belirttiğiniz bir sabitleme noktasında (genellikle seçilen öğenin noktasında) yukarıya doğru bakar. Android 4.0'ın kapsamı
PopupMenu
, bazı faydalı özelliklere sahip:
- Artık bir pop-up menünün içeriğini,
inflate()
kullanarak bir XML menü kaynağından kolayca şişirerek menü kaynağı kimliğini iletebilirsiniz. - İsterseniz artık
PopupMenu.OnDismissListener
geri çağırma yöntemini kullanabilirsiniz.
Tercihler
Yeni bir TwoStatePreference
soyut sınıfı
iki durumlu seçim seçeneği sağlayan
tercihler ekleyebilirsiniz. Yeni SwitchPreference
, TwoStatePreference
öğesinin bir uzantısıdır veSwitch
Kullanıcıların başka bir ayar açmalarına gerek kalmadan bir ayarı açıp kapatmalarına olanak
veya iletişim kutusunu seçin. Örneğin, Ayarlar uygulaması, kablosuz ağ ve Bluetooth ayarları için SwitchPreference
kullanır.
Sistem temaları
Android 4.0'ı hedefleyen tüm uygulamalar için varsayılan tema (targetSdkVersion
veya
minSdkVersion
-
“14"
veya üzeri) artık
"cihaz varsayılanı" tema: Theme.DeviceDefault
. Bu,
koyu Holo teması veya söz konusu cihaz tarafından tanımlanan farklı bir koyu tema.
Theme.Holo
tema ailesinin değişmemesi garanti edilir
arasında geçiş yapabilirsiniz. Açıkça
Theme.Holo
temalarından herhangi birini etkinliklerinize uygulayabilirsiniz,
Bu temaların, aynı kalitedeki
farklı cihazlarda karakteri değiştirmeyeceğinden emin olabilirsiniz.
platform sürümü gereklidir.
Uygulamanızın genel cihaz temasıyla uyumlu olmasını istiyorsanız (ör. farklı OEM'ler
sistem için farklı varsayılan temalar sağlar) Theme.DeviceDefault
ailesindeki temaları açıkça uygulamanız gerekir.
Seçenekler menüsü düğmesi
Android 4.0'dan itibaren, mobil cihazlarda artık bir Menü donanım düğmesi olması gerekmediğini fark edeceksiniz. Ancak, mevcut uygulamanız bir seçenek menüsü sunuyorsa ve bir güncellemenin olmasını bekliyorsa, bu konuda endişelenmenize gerek yoktur Menü düğmesi. Mevcut uygulamaların beklendiği gibi çalışmaya devam etmesini sağlamak için sistem, Android'in eski sürümleri için tasarlanmış uygulamalara ilişkin ekrandaki Menü düğmesi.
En iyi kullanıcı deneyimi için, yeni ve güncellenmiş uygulamalarda menü öğelerine erişim izni vermek üzere ActionBar
kullanılmalı ve targetSdkVersion
şuna ayarlanmalıdır:
"14"
gibi en yeni çerçeve varsayılan davranışlarından yararlanabilirsiniz.
Sistem kullanıcı arayüzü görünürlüğüyle ilgili kontroller
Android'in kullanıma sunulduğu ilk günlerden beri sistem, Android'de durum çubuğu, operatör gibi bilgileri sağlamak için telefon cihazlarının üst kısmında bulunur sinyal, saat, bildirimler vb. Android 3.0 sürümünde tablet için sistem çubuğu eklendi ekranın alt kısmında bulunan kontroller (Ana Sayfa, geri vb.) ve ayrıca geleneksel olarak durum çubuğu tarafından sağlanan öğeler için bir arayüz içerir. İçinde Android 4.0 sürümünde sistem, gezinme çubuğu adı verilen yeni bir sistem kullanıcı arayüzü türü sağlar. Siz gezinme çubuğunu, sistem çubuğunun yeniden ayarlanmış bir sürümü olarak mobil cihazlar - gezinme denetimleri sağlar cihazlar için sistemde gezinmeye yönelik donanım eşdeğerlerine sahip olmayan ancak Android'i kontrol edebilirsiniz. Bu nedenle, navigasyon sağlayan bir cihaz çubuğunun üstünde de durum çubuğu bulunur.
Bugüne kadar, FLAG_FULLSCREEN
işaretini kullanarak mobil cihazlarda durum çubuğunu gizleyebilirsiniz. Android 4.0'da, bu sürümleri kontrol eden API'ler
sistem çubuğunun görünürlüğü, hem sistem çubuğunun davranışını daha iyi yansıtacak şekilde güncellendi hem de
ve gezinme çubuğunu kullanın:
SYSTEM_UI_FLAG_LOW_PROFILE
işareti,STATUS_BAR_HIDDEN
işaretinin yerini alır. Ayarlandığında bu işaret "düşük profil"i etkinleştirir mod veya gezinme çubuğu. Gezinme düğmeleri kararır ve sistem çubuğundaki diğer öğeler de gizlenir. Etkinleştiriliyor Bu, sistemde gezinmeyi etkilemeden daha sürükleyici oyunlar oluşturmak için yararlıdır. düğmelerini kullanın.SYSTEM_UI_FLAG_VISIBLE
işareti, sistem çubuğunun veya gezinme çubuğunun görünür olmasını istemek içinSTATUS_BAR_VISIBLE
işaretinin yerini alır.SYSTEM_UI_FLAG_HIDE_NAVIGATION
, istenen yeni bir işarettir tamamen gizlenir. Bunun yalnızca gezinme çubuğu için çalıştığını unutmayın (tabletlerdeki sistem çubuğunu gizlemez). Gezinme sistem kullanıcı girişini alır almaz çubuğu görünüme geri döner. Bu nedenle, bu mod birincil olarak video oynatma veya tüm ekranın gerekli olduğu, ancak kullanıcı girişinin olduğu diğer durumlarda gerekmez.
Etkinliğinizdeki herhangi bir görünümde setSystemUiVisibility()
öğesini çağırarak sistem çubuğu ve gezinme çubuğu için bu işaretlerin her birini ayarlayabilirsiniz. İlgili içeriği oluşturmak için kullanılan
pencere yöneticisi, pencerenizdeki tüm görünümlerde bulunan tüm işaretleri (VEYA ile) birleştirir ve
pencerenizde giriş odağı olduğu sürece bunları sistem arayüzüne uygulayın. Pencerenizde giriş olmadığında
odaklanılırsa (kullanıcı uygulamanızdan ayrılırsa veya bir iletişim kutusu görüntülenirse) işaretlemelerinizin geçerliliğini yitirmesi gerekir.
Benzer şekilde, bu görünümleri görünüm hiyerarşisinden kaldırırsanız işaretleri artık geçerli olmaz.
Etkinliğinizdeki diğer etkinlikleri, sistem arayüzünde yapılan görünürlük değişiklikleriyle (
kullanıcı arayüzü gizlendiğinde işlem çubuğunu veya diğer kullanıcı arayüzü kontrollerini gizlemek için bir
View.OnSystemUiVisibilityChangeListener
görünür olduğunda bilgilendirileceksiniz
veya gezinme çubuğundaki değişikliklerin özetini görebilirsiniz.
Bkz. OverscanActivity sınıfını inceleyin.
Giriş Çerçevesi
Android 4.0, fareyle üzerine gelme etkinlikleri, yeni ekran kalemi ve fare düğmesi etkinlikleri için destek sağlar.
Fareyle öğelerin üzerine gelerek yapılan etkinlikler
View
sınıfı artık "fareyle üzerine gelin" özelliğini destekliyor Daha zengin etkileşimlere olanak tanıyan etkinlikler
(örneğin, fare veya ekranı etkileyen diğer cihazlar gibi)
imleç).
Bir görünümde fareyle üzerine gelme etkinliklerini almak için View.OnHoverListener
ve
setOnHoverListener()
ile kaydettirin. Fareyle üzerine gelindiğinde
görüntülenirse dinleyiciniz onHover()
öğesine bir çağrı alır. Bu çağrı, View
etkinliği ve fareyle üzerine gelme etkinliğinin türünü açıklayan bir MotionEvent
alındı
görebilirsiniz. Fareyle üzerine gelme etkinliği aşağıdakilerden biri olabilir:
View.OnHoverListener
ayarınız, fareyle üzerine gelme etkinliğini işliyorsa onHover()
değerinden itibaren doğru değerini döndürmelidir. Eğer
işleyici, false değerini döndürürse üzerine gelme etkinliği, her zamanki gibi üst görünüme gönderilir.
Uygulamanız,
mevcut durumda android:state_hovered
özelliğini, artık aşağıdakileri yapmak için durum listesi çekilebilirinde
imleç görünümün üzerine geldiğinde çekilebilir farklı bir arka plan sağlar.
Yeni fareyle üzerine gelme etkinliklerinin bir demosu için Fover sınıfına bakın ApiDemos.
Ekran kalemi ve fare düğmesi etkinlikleri
Android artık dijitalleştirici gibi bir ekran kalemi giriş cihazından giriş almak için API'ler sağlıyor. tablet çevre birimi veya ekran kalemi özellikli dokunmatik ekran.
Ekran kalemi girişi, dokunma veya fare girişine benzer şekilde çalışır. Ekran kalemi temas ettiğinde uygulamalar, dijitalleştirici sayesinde parmakla cihaz alıştığında olduğu gibi dokunma etkinliklerini alır. ekrana dokunun. Ekran kalemi dijitalleştiricinin üzerine geldiğinde uygulamalar fareyle üzerine gelindiğinde Etkinlikleri, herhangi bir düğme yokken fare işaretçisi ekranda hareket ettirildiğinde olduğu gibi tuşuna basıldığından emin olun.
Uygulamanız,
"araç türü" getToolType()
kullanılarak MotionEvent
içindeki her bir işaretçiyle ilişkilendirilmiştir. Şu anda tanımlı olan araç türleri şunlardır: TOOL_TYPE_UNKNOWN
, TOOL_TYPE_FINGER
,
TOOL_TYPE_MOUSE
, TOOL_TYPE_STYLUS
,
ve TOOL_TYPE_ERASER
. Araç türünü sorguladığınızda, uygulamanızın
ekran kalemi girişini parmak veya fare girişinden farklı şekillerde yönetmeyi seçebilir.
Uygulamanız ayrıca "düğmesini" sorgulayarak hangi fare veya ekran kalemi düğmelerine basıldığını da
durum" getButtonState()
kullanan bir MotionEvent
. Şu anda tanımlanmış olan düğme durumları şunlardır: BUTTON_PRIMARY
, BUTTON_SECONDARY
, BUTTON_TERTIARY
, BUTTON_BACK
ve BUTTON_FORWARD
. Kolaylık olması açısından geri ve ileri fare düğmeleri
KEYCODE_BACK
ve KEYCODE_FORWARD
anahtarlarıyla otomatik olarak eşlendi. Uygulamanız, şu hizmetleri desteklemek için bu anahtarları işleyebilir:
fare düğmesine dayalı geri ve ileri gezinme.
Temasın konumunu ve basıncını hassas bir şekilde ölçmenin yanı sıra ekran kalemi girişi
cihazlar, ekran kalemi ucu ile dijitalleştirici arasındaki mesafeyi, ekran kaleminin yatırma açısını ve
ve ekran kalemi yön açısı. Uygulamanız AXIS_DISTANCE
, AXIS_TILT
ve AXIS_ORIENTATION
eksen kodlarıyla getAxisValue()
kullanarak bu bilgileri sorgulayabilir.
Araç türlerinin, düğme durumlarının ve yeni eksen kodlarının demosu için bkz. Dokunmatik Boya sınıfına girer.
Özellikler
Yeni Property
sınıfı, bir
özelliği. Aynı zamanda
Alan/yöntem referanslarının üzerinden geçme işlevine olanak tanır ve kodun değer ayarlamasına/almasına olanak tanır
bilmeden bir mülkle uyumlu hale getirmektir.
Örneğin, foo
nesnesindeki bar
alanının değerini ayarlamak için
şunları yapmıştı:
Kotlin
foo.bar = value
Java
foo.bar = value;
Temel özel alan bar
için belirleyiciyi çağırmak isterseniz önceden
şunu yap:
Kotlin
foo.setBar(value)
Java
foo.setBar(value);
Ancak foo
örneğini aktarmak ve başka bir kod ayarlamak isterseniz
bar
değerine sahipse bunu Android 4.0'dan önce yapmak mümkün değildir.
Property
sınıfını kullanarak bir Property
tanımlayabilirsiniz.
Foo
sınıfındaki BAR
nesnesini görüntüler. Böylece alanı, foo
örneğindeki alanı ayarlayabilirsiniz.
Foo
sınıfı şuna benzer:
Kotlin
BAR.set(foo, value)
Java
BAR.set(foo, value);
View
sınıfı artık Property
sınıfını şu amaçlarla kullanmaktadır:
Android 3.0'da eklenen dönüştürme özellikleri (ROTATION
, ROTATION_X
, TRANSLATION_X
vb.) gibi çeşitli alanları ayarlamanıza olanak tanır.
ObjectAnimator
sınıfı da Property
alanını kullanır.
Böylece, dize tabanlı yönteme göre daha hızlı, daha verimli ve tür açısından daha güvenli olan Property
içeren bir ObjectAnimator
oluşturabilirsiniz.
bahsedeceğiz.
Donanım Hızlandırma
Android 4.0 sürümünden itibaren,
uygulaması targetSdkVersion
veya
minSdkVersion
-
“14"
veya daha yüksek. Donanım hızlandırma genellikle daha akıcı animasyonlar sağlar.
ve genel olarak daha iyi performans
ve kullanıcı etkileşimine yanıt sağlar.
Gerekirse hardwareAccelerated
ile donanım hızlandırmayı manuel olarak devre dışı bırakabilirsiniz
bağımsız <activity>
öğeleri veya <application>
için özelliği
öğesine dokunun. Alternatif olarak, setLayerType(LAYER_TYPE_SOFTWARE)
öğesini çağırarak donanım hızlandırmayı tek tek görünümler için devre dışı bırakabilirsiniz.
Desteklenmeyen çizim listesi de dahil olmak üzere donanım hızlandırma hakkında daha fazla bilgi için işlemleri için Donanım Hızlandırma belgesini inceleyin.
JNI Değişiklikleri
Android'in önceki sürümlerinde JNI yerel referansları dolaylı kullanıcı adı olarak kullanılmıyordu; Android kullanılıyor doğrudan işaretçiler. Çöp toplayıcı nesneleri hareket ettirmediği sürece bu sorun işe yarıyormuş gibi görünüyordu, çünkü hatalı kod yazmayı mümkün kılıyordu. Android 4.0'da sistem artık dolaylı referanslar da alabilir.
JNI yerel referanslarıyla ilgili tüm ayrıntılar "Yerel ve Küresel Referanslar" bölümünde açıklanmıştır. JNI İpuçları'na bakın. Android 4.0'da, CheckJNI, bu hataları algılayacak şekilde geliştirilmiştir. Yakında yayınlanacak bir gönderi için Android Geliştiricileri Blogu'nu izleyin JNI referanslarında sık karşılaşılan hatalar ve bunları nasıl düzeltebileceğiniz hakkında daha fazla bilgi edinin.
JNI uygulamasındaki bu değişiklik yalnızca
targetSdkVersion
veya minSdkVersion
- “14"
veya daha yüksek. Bu özellikleri daha düşük bir değere ayarlarsanız
JNI yerel referansları önceki sürümlerle aynı şekilde davranır.
WebKit
- WebKit, 534.30 sürümüne güncellendi
- Karmaşık karakter desteği de dahil Hintçe yazı tipleri (Devanagari, Bengalce ve Tamilce) için destek
(glifleri birleştirmek için gerekir)
WebView
ve yerleşik Tarayıcı'da kullanılabilir. WebView
için Etiyopya, Gürcü ve Ermenice yazı tipleri ve yerleşik Tarayıcı- WebDriver desteği,
WebView
kullanan uygulamaları test etmeniz artık daha kolay
Android Tarayıcı
Tarayıcı uygulaması, web uygulamalarını desteklemek için aşağıdaki özellikleri ekler:
- Daha hızlı performans için güncellenmiş V8 JavaScript derleyicisi
- Ayrıca, Android'den gelen diğer önemli geliştirmeler
3.0 artık mobil cihazlarda da kullanılabilir:
- Tüm sayfalarda sabit konum öğeleri için destek
- HTML medya yakalama
- Cihaz yönü etkinlikler
- CSS 3D dönüşümleri
İzinler
Yeni izinler şunlardır:
ADD_VOICEMAIL
: Sesli mesaj hizmetinin sesli mesaj eklemesine olanak tanır gönderebilir.BIND_TEXT_SERVICE
:SpellCheckerService
özelliğini uygulayan bir hizmet, kendisi için bu izni istemelidir.BIND_VPN_SERVICE
:VpnService
özelliğini uygulayan bir hizmet, kendisi için bu izni istemelidir.- android.Manifest.permission#READ_PROFILE:
ContactsContract.Profile
sağlayıcısına okuma erişimi sağlar. - android.Manifest.permission#WRITE_PROFILE:
ContactsContract.Profile
sağlayıcısına yazma erişimi sağlar.
Cihaz Özellikleri
Yeni cihaz özellikleri şunlardır:
FEATURE_WIFI_DIRECT
: Uygulamanın kullanım alanları Eşler arası iletişim için kablosuz bağlantı.
Android 4.0'daki (API Düzeyi) tüm API değişikliklerinin ayrıntılı görünümü için 14) API Farklılıkları Raporu'na bakın.
Önceki API'ler
Yukarıdaki her şeye ek olarak, Android 4.0 önceki sürümlerdeki tüm API'leri doğal olarak destekler. Android 3.x platformu yalnızca büyük ekranlı cihazlarda kullanılabildiğinden, Android'e eklenen tüm API'lardan haberdar olmayabilirsiniz. özellikleri hakkında daha fazla bilgi edinin.
Burada, kaçırmış olabileceğiniz en önemli API'lerden bazılarına göz atabilirsiniz. mobil cihazlarda da çalışır:
- Android 3.0
-
Fragment
: Farklı ekran öğelerini ayırmanıza olanak tanıyan bir çerçeve bileşeni unsurlarını kendi kullanıcı arayüzünü ve yaşam döngülerini tanımlayan bağımsız modüller halinde birleştirir. Bkz. Parçalar geliştirici kılavuzu.ActionBar
: Ekranın üst kısmındaki geleneksel başlık çubuğunun yerini alan işlem penceresi açılır. Sol köşede uygulama logosunu içerir ve yeni bir menü öğeleri arayüzü. Bkz. İşlem Çubuğu geliştirici kılavuzu.Loader
: Eşzamansız özelliği kolaylaştıran bir çerçeve bileşeni JavaScript'i engellemeden verileri dinamik olarak yüklemek için kullanıcı arayüzü bileşenleriyle birlikte iş parçacığı. Bkz. Yükleyiciler geliştirici kılavuzu.- Sistem panosu: Uygulamalar verileri (metin dışında) birbirlerine kopyalayıp yapıştırabilir panodan takip edin. Kırpılmış veriler düz metin, URI veya amaç olabilir. Bkz. Kopyalama ve Yapıştırma geliştirici kılavuzu.
- Sürükle ve bırak: Görünüm çerçevesine entegre edilmiş, sürükleyip bırakma işlemini kolaylaştıran bir dizi API anlamına gelir. Bkz. Sürükle ve Bırak geliştirici kılavuzu.
- Yepyeni esnek animasyon çerçevesi, istediğiniz herhangi bir öğenin rastgele özelliklerini (Görünüm, Çizilebilir, Parça, Nesne veya başka herhangi bir şey) yapabilir ve çeşitli yöntemler vardır. Yeni çerçeve, Android'de Animasyonlar'ı sağlar hiç olmadığı kadar kolay hale geldi. Bkz. Mülk Animasyonu geliştiricisi rehberini inceleyin.
- RenderScript grafik ve işlem motoru: RenderScript, yüksek performanslı bir 3D sunar C (C99 standardı) dilinde yazdığınız yerel düzeyde grafik oluşturma ve hesaplama API'si hem yerel ortamdan beklediğiniz performansı sunarken hem de taşınabilir ve GPU'larda kullanılıyor. Bkz. RenderScript geliştiricisi rehberini inceleyin.
- Donanım hızlandırmalı 2D grafik: Artık
manifest öğenizde
<application>
{android:hardwareAccelerated="true"} değerini ayarlayarak uygulama öğesi veya bağımsız<activity>
için öğeler. Bu sonuç daha akıcı animasyonlar, daha yumuşak kaydırma ve genel olarak daha iyi performans ve kullanıcıya yanıt bahsedeceğim.Not: Uygulamanızın
minSdkVersion
veyatargetSdkVersion
ayarını"14"
veya daha yüksek bir hızda, donanım hızlandırma varsayılan olarak etkindir. - Ve çok, çok daha fazlası. Android 3.0 Platformu'na bakın notlarına bakın.
- Android 3.1
-
- USB API'ler: Bağlı çevre birimlerini Android uygulamaları. API'ler bir USB yığınına ve hem USB ana makinesi hem de cihaz etkileşimleri desteği dahil olmak üzere platformda yerleşik olarak bulunur. USB Ana Makine ve Aksesuar geliştirici kılavuzuna bakın.
- MTP/PTP API'leri: Uygulamalar, bağlı kameralar ve diğer PTP ile doğrudan etkileşimde bulunabilir
Cihazlar eklenip kaldırıldığında bildirim almak için cihazlar, dosyaları ve depolama alanını şurada yönetin:
dosyaları ve meta verileri bu cihazlara aktarıp kullanabilirsiniz. MTP API, PTP'yi uygular
MTP (Medya Aktarım Protokolü) spesifikasyonunun (Resim Aktarım Protokolü) alt kümesidir. Bkz.
android.mtp
belgeleri. - RTP API'leri: Android, bir API'yi yerleşik RTP (Gerçek Zamanlı Aktarım Protokolü) yığınına sunar.
hangi uygulamaların isteğe bağlı veya etkileşimli veri akışını yönetmek için kullanabileceğini belirler. Özellikle, uygulamalar
VOIP, bas ve konuş, konferans ve ses akışı gibi özelliklere sahip olan başka yayıncılarla çalışmaya başlamak için
mevcut bir ağ üzerinden veri akışı alıp
alma adımını gerçekleştirebilir.
android.net.rtp
belgelerine bakın. - Kontrol çubuğu ve diğer genel hareket girişleri için destek.
- Android 3.1 Platformu'na bakın notlarına göz atmanızı öneririm.
- Android 3.2
-
- Yeni ekranlar, uygulamalarınızın çalışma biçimi üzerinde size daha fazla kontrol sağlayan API'leri destekler. farklı ekran boyutlarında gösteriliyor. API, mevcut ekran desteği modelini belirli ekran boyutu aralıklarını, boyutlara göre hassas bir şekilde hedefleme olanağı, genelleştirilmiş piksel birimleri yerine (600 dp veya 720 dp genişlik gibi) yoğunluktan bağımsız piksel birimleri ekran boyutları (büyük veya x büyük gibi). Örneğin bu, müzakere ederken 5" ile 5 inç arasında ayrım cihaz ve 7 inç geleneksel olarak her ikisi de "büyük" ekranları. başlıklı blog yayınına bakın Ekran Boyutlarını Yönetmek İçin Yeni Araçlar.
<uses-feature>
için yeni sabit değerler yatay veya dikey ekran yönü gereksinimlerinizi tanımlamalısınız.- Cihazın "ekran boyutu" Ekran yönü sırasında yapılandırma artık değişiyor
unutmayın. Uygulamanız API düzeyi 13 veya üstünü hedefliyorsa
"screenSize"
."orientation"
yapılandırma değişikliğini de gerçekleştirmek istiyorsanız yapılandırma değişikliği. Görüntüleyin Daha fazla bilgi içinandroid:configChanges
. - Android 3.2 Platformu'na bakın diğer yeni API'lerle ilgili notlara göz atın.
API Düzeyi
Android 4.0 API'ye bir tam sayı atanmış tanımlayıcıyı (14) belirtir. "API düzeyi" adı verilen bu tanımlayıcı, sistemin herhangi bir veri türünün çalışıp çalışmadığını doğru bir şekilde sistemle uyumlu olduğundan emin olun.
Android 4.0'da kullanıma sunulan API'leri uygulamanızda kullanmak için
API düzeyi 14'ü veya API düzeyi 14'ü destekleyen bir Android platformunda
daha yüksek. İhtiyaçlarınıza bağlı olarak, bir veya daha fazla
android:minSdkVersion="14"
özelliğini
<uses-sdk>
öğesine dokunun.
Daha fazla bilgi için API nedir? Düzey mi?