Android 4.0 API'leri

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:

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:

  1. Bir GL_TEXTURE_2D doku resmine bağlı olmalıdırlar
  2. 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:

  1. OpenGL ES 2.0 içeriğinizden EffectContext.createWithCurrentGlContext() çağrısı yapın.
  2. EffectContext.getFactory() çağrısı yapmak için döndürülen EffectContext değerini kullanın. Bu çağrı, bir örnek döndürür. / EffectFactory.
  3. createEffect() adlı kişiyi yönlendirerek @link android.media.effect.EffectFactory} efekt adını girin (ör. EFFECT_FISHEYE veya EFFECT_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ık INTERNET 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 bir Surface 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çin isVideoSnapshotSupported() adlı kişiyi arayın destekler.
  • Artık otomatik pozlamayı ve beyaz dengesini setAutoExposureLock() ve setAutoWhiteBalanceLock() 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:

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şfedin
  • connect() 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, bir WifiP2pDeviceList sağlar. Kapsama alanı içindeki her cihaz için WifiP2pDevice 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; bir WifiP2pGroup 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 bir WifiP2pInfo 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:

Android sistemi belirli Wi-Fi P2P etkinlikleri sırasında birkaç farklı işlem de yayınlar:

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ğlar BluetoothHealth 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:

  1. sendAccessibilityEvent() ve sendAccessibilityEventUnchecked() yöntemleri çağrıldığında ertelenir alıcı: onInitializeAccessibilityEvent().

    View özel uygulamaları için onInitializeAccessibilityEvent() 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.

  2. 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 genellikle onPopulateAccessibilityEvent() uygulanır android:contentDescription metni eksikse veya AccessibilityEvent öğesine metin içeriğini yeterli değildir. Daha fazla metin açıklaması eklemek için AccessibilityEvent, getText() numaralı telefonu arayın.add().

  3. 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 kadar AccessibilityRecord ekleniyor kök görünüme ulaşır ve etkinlik, sendAccessibilityEvent() ile AccessibilityManager ü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:

  1. Bir uygulamadan AccessibilityEvent aldıktan sonra, belirli bir AccessibilityRecord almak için AccessibilityEvent.getRecord() işlevini çağırın ( etkinliği) ekleyebilirsiniz.
  2. AccessibilityEvent veya tek bir AccessibilityRecord cihazından, AccessibilityNodeInfo nesnesini almak için getSource() öğ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ülen AccessibilityNodeInfo nesnesi etkinlik kaynağını tanımlarken, AccessibilityRecord, etkinliğin selefi hakkında bilgi verir kaynak.

  3. AccessibilityNodeInfo ile bilgileri sorgulayabilirsiniz. görünümü aktarmak için getParent() veya getChild() 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:

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çin start() öğesini çağırmalıdır sesi dinleyin, ardından audioAvailable() 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:

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() ve setLogo(), ç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.

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:

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çin STATUS_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:

İzinler

Yeni izinler şunlardır:

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 veya targetSdkVersion 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çin android: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?