Bean Özellikleri
Bu belge, Android 4.1'de tanıtıldı olan geliştiriciler için yeni özelliklere üst düzey bir genel bakış sağlar. Bu özellikler şunlardır: gelişmiş bildirimler, büyük dosyaları paylaşmak için Android Cihazlara güncelleştirmeler, multimedya güncelleştirmeleri, eşler arası ağ bulma, animasyonlar, yeni izinler.
Genel Bakış
Android 4.1 (API Düzeyi 16), ("Yeni Bean" olarak da bilinir) 9 Temmuz 2012'de yayınlandı. Bu makale, Xamarin.Android kullanan geliştiriciler için Android 4.1'deki bazı yeni özelliklere üst düzey bir giriş sağlar. Tanıtılmış olan bu yeni özelliklerden bazıları etkinlik başlatmaya, kameraya yeni seslere ve uygulama yığını gezintisi desteğine sahip olan animasyonlara yapılan iyileştirmelerdir. Artık amaçlarla kes ve yapıştır mümkündür.
Android uygulamalarının kararlılığı, kararsız içerik sağlayıcıları bağımlılığını yalıtabilme özelliğiyle geliştirilmiştir. Hizmetler, yalnızca kendilerini başlatan etkinlik tarafından erişilebilir olacak şekilde yalıtılmış da olabilir.
Bonjour, UPnP veya çok noktaya yayın DNS tabanlı hizmetler kullanılarak ağ hizmeti bulma desteği eklendi. Artık biçimlendirilmiş metinlere, eylem düğmelerine ve büyük görüntülere sahip daha zengin bildirimlere sahip olmak mümkündür.
Son olarak Android 4.1'e birkaç yeni izin eklendi.
Gereksinimler
Android Bean kullanarak Xamarin.Android uygulamaları geliştirmek için aşağıdaki ekran görüntüde gösterildiği gibi Xamarin.Android 4.2.6 veya sonraki bir sürümün ve Android 4.1'in (API Düzeyi 16) Android SDK Yöneticisi aracılığıyla yüklü olması gerekir:
Yenilikler
Animasyonlar
Etkinlikler, sınıfı kullanılarak yakınlaştırma animasyonları veya özel animasyonlar kullanılarak ActivityOptions başlatabilir. Bu animasyonları desteklemek için aşağıdaki yeni yöntemler sağlanmıştır:
MakeScaleUpAnimation– Bu, bir etkinlik penceresinin ölçeğini ekranda başlangıç konumundan ve boyuttan ölçeklendiren bir animasyon oluşturacak.MakeThumbnailScaleUpAnimation– Bu, ekranda belirtilen konumdan küçük resim görüntüsünden ölçeğini ölçeklendiren bir animasyon oluşturacak.MakeCustomAnimation– Bu, uygulamanın kaynaklarından bir animasyon oluşturur. Etkinlik açıldığında için bir animasyon, etkinlik durduğunda için de başka bir animasyon vardır.
Yeni TimeAnimator sınıf, bir animasyonda TimeAnimator.ITimeListener çerçeve her değiştinde uygulamayı bilgilendiren bir arabirim sağlar. Örneğin, aşağıdaki uygulamasını göz önünde TimeAnimator.ITimeListener bulundurarak:
class MyTimeListener : Java.Lang.Object, TimeAnimator.ITimeListener
{
public void OnTimeUpdate(TimeAnimator animation, long totalTime, long deltaTime)
{
Log.Debug("Activity1", "totalTime={0}, deltaTime={1}", totalTime, deltaTime);
}
}
Şimdi sınıfını kullanmak için bir örneği TimeAnimator oluşturulur ve dinleyici ayarlanır:
var animator = new TimeAnimator();
animator.SetTimeListener(new MyTimeListener());
animator.Start();
Örnek çalıştırıldığında, yöntemini çağıracak ve ardından animasyonu ne kadar süre çalıştırdı ve yöntemin son çağrıldığından bu yana ne kadar süreyle olduğunu TimeAnimatorITimeAnimator.ITimeListener günlüğe kaydedilir.
Uygulama Yığını Gezintisi
Android 4.1, Android 3.0'da tanıtılmış olan uygulama yığını gezintisinde geliştirmektedir. özelliğini belirterek, Kullanıcı eylem çubuğunda Yukarı düğmesine basıldığında Android uygun üst Etkinliği açabilir- Android özelliği tarafından belirtilen ParentNameActivityAttribute Etkinliğin örneğini ParentNameParentName verir. Bu, uygulamaların belirli bir görevi veren etkinliklerin hiyerarşisini korumasını sağlar.
Etkinlikte ayarının çoğu uygulama için Android'in uygulama yığınında gezinmek için ParentName doğru davranışı sağlaması için yeterli bilgi vardır; Android, her üst etkinlik için bir dizi Amaç oluşturarak gerekli geri yığını sentezler. Ancak, bu yapay bir uygulama yığını olduğundan, her yapay etkinlik doğal bir etkinliğin sahip olduğu kayıtlı durumuna sahip olmaz. Yapay bir üst etkinlik için kaydedilmiş durum sağlamak için bir Etkinlik yöntemini geçersiz OnPrepareNavigationUpTaskStack kilebilir. Bu yöntem, Android'in arka yığını oluşturmak için kullanabileceği Amaç nesneleri TaskStackBuilder koleksiyonuna sahip olacak bir örnek alır. Etkinlik, yapay etkinlik oluşturulduktan sonra uygun durum bilgilerini alacak şekilde bu Amaçlarda değişiklik olabilir.
Daha karmaşık senaryolar için, Etkinlik sınıfında Yukarı gezinti davranışını işlemek ve arka yığını oluşturmak için kullanılan yeni yöntemler vardır:
OnNavigateUp– Bu yöntemi geçersiz kıldığında, Yukarı düğmesine basıldığında özelOnNavigateUpgerçekleştirmek mümkündür.NavigateUpTo– Bu yöntemin çağrılarak uygulamanın geçerli etkinlikten belirli bir amaç tarafından belirtilen etkinlikte gezinmesi gerekir.ParentActivityIntent– Geçerli etkinliğin üst etkinliğini başlatacak bir Amaç elde etmek için kullanılır.ShouldUpRecreateTask– Bu yöntem, yapay geri yığının bir üst etkinlikte gezinmek için oluşturularak oluşturulmaları gerektirilen durumlarını sorgulamak için kullanılır. Yapaytrueyığının oluşturulacak olması gerekirse döndürür.FinishAffinity– Bu yöntemin çağrıl olması, geçerli etkinliği ve onun altındaki tüm etkinlikleri aynı görev benzeşmi olan geçerli görevde tamamlar.OnCreateNavigateUpTaskStack– Yapay yığının oluşturulma yöntemi üzerinde tam denetime sahip olmak gerektiğinde bu yöntem geçersiz kılınır.
Kamera
Otomatik odağın ne zaman hareket etmeye başladığı veya durdurulmuş olduğunu Camera.IAutoFocusMoveCallback algılamak için kullanılan yeni bir arabirim vardır. Bu yeni arabirimin bir örneği aşağıdaki kod parçacığında görülebilir:
public class AutoFocusCallbackActivity : Activity, Camera.IAutoFocusCallback
{
public void OnAutoFocus(bool success, Camera camera)
{
// camera is an instance of the camera service object.
if (success)
{
// Auto focus was successful - do something here.
}
else
{
// Auto focus didn't happen for some reason - react to that here.
}
}
}
Yeni MediaActionSound sınıf, çeşitli medya eylemleri için ses üretmek için bir dizi API sağlar. Bir kamerada meydana gelen çeşitli eylemler vardır ve bunlar enum ile Android.Media.MediaActionSoundType tanımlanır:
MediaActionSoundType.FocusComplete– Odaklanan ses tamamlandıktan sonra çalınıyor.MediaActionSoundType.ShutterClick– Bu ses, görüntü resmi çek geldiğinde çalınacak.MediaActionSoundType.StartVideoRecording– Bu ses, video kaydının başlangıcını belirtmek için kullanılır.MediaActionSoundType.StopVideoRecording– Bu ses, video kaydının sonunu belirtmek için çalınacak.
Sınıfı kullanma örneği MediaActionSound aşağıdaki kod parçacığında görülebilir:
var mediaActionPlayer = new MediaActionSound();
// Preload the sound for a shutter click.
mediaActionPlayer.Load(MediaActionSoundType.ShutterClick);
var button = FindViewById<Button>(Resource.Id.MyButton);
// Play the sound on a button click.
button.Click += (sender, args) => mediaActionPlayer.Play(MediaActionSoundType.ShutterClick);
// This releases the preloaded resources. Don’t make any calls on
// mediaActionPlayer after this.
mediaActionPlayer.Release();
Bağlantı
Android Beam
Android Cihazlar, iki Android cihazı birbirleriyle iletişim kurmasına olanak sağlayan NFC tabanlı bir teknolojidir. Android 4.1, büyük dosyaların aktarımı için daha iyi destek sağlar. Android yeni yöntemini kullanırken hızlı aktarım hızı elde etmek için alternatif NfcAdapter.SetBeamPushUris() taşıma mekanizmaları (Bluetooth gibi) arasında geçiş yapılacaktır.
Ağ Hizmetleri Bulma
Android 4.1, çok noktaya yayın DNS tabanlı hizmet bulma için yeni API'ler içerir.
Bu, bir uygulamanın yazıcılar, kameralar Wi-Fi medya cihazları gibi diğer cihazlara ağ üzerinden bağlantı kurarak algılamalarını ve bağlamalarını sağlar. Bu yeni API'ler Android.Net.Nsd pakettedir.
Diğer hizmetler tarafından kullanılmaktadır bir hizmet oluşturmak için, sınıfı bir hizmetin NsdServiceInfo özelliklerini tanımlayan bir nesne oluşturmak için kullanılır. Bu nesne daha sonra NsdManager.RegisterService() uygulamasıyla birlikte için NsdManager.ResolveListener sağlanır. uygulamaları, NsdManager.ResolveListener başarılı bir kaydı bildirmek ve hizmetin kaydının kaydının geri alınarak kullanılır.
Ağ üzerinde hizmetleri bulmak ve uygulamasına Nsd.DiscoveryListener geçirilen NsdManager.discoverServices() için.
Ağ Kullanımı
Yeni yöntem, ConnectivityManager.IsActiveNetworkMetered cihazın tarifeli bir ağa bağlı olup olduğunu denetlemeye olanak sağlar. Bu yöntem, veri işlemleri için pahalı ücretler olabileceğini kullanıcılara doğru bir şekilde bildirerek veri kullanımının yönetimine yardımcı olmak için kullanılabilir.
WiFi Doğrudan Hizmet Bulma
sınıfı WifiP2pManager sıfırconf'u desteklemek için Android 4.0'da WifiP2pManager Zeroconf (sıfır yapılandırma ağı), insan ağ operatörlerinin veya özel yapılandırma sunucularının müdahalesiyle cihazların (bilgisayarlar, yazıcılar, telefonlar) ağlara otomatik olarak bağlanmasına olanak sağlayan bir dizi tekniktir.
Bean Bean'de WifiP2pManagerWifiP2pManager veya Upnp kullanarak yakındaki cihazları keşfedebilirsiniz. Bonjour, Apple'ın sıfırconf uygulamasıdır. Upnp, sıfırconf desteği de olan ağ protokolleri kümesidir. Hizmeti bulma desteği için aşağıdaki WiFiP2pManager yöntemler Wi-Fi eklendi:
AddLocalService()– Bu yöntem, eşler tarafından bulma için uygulamanın Wi-Fi olarak duyurularak kullanılır.AddServiceRequest() – Bu yöntem, çerçeveye bir hizmet bulma isteği göndermektir. Bu, hizmet bulma Wi-Fi için kullanılır.SetDnsSdResponseListeners()– Bu yöntem Bonjour'dan gelen bulma isteklerine yanıt almada çağrılan geri çağırmaları kaydetmek için kullanılır.SetUpnpServiceResponseListener()– Bu yöntem, bulma istekleri Upnp'sini yanıt alırken çağrılan geri çağırmaları kaydetmek için kullanılır.
İçerik Sağlayıcıları
sınıfı, ContentResolver yeni bir yöntemi AcquireUnstableContentProvider aldı. Bu yöntem, bir uygulamanın "kararsız" bir içerik sağlayıcısı elde değişkenlerini sağlar. Normalde, bir uygulama bir içerik sağlayıcısı edinse ve bu içerik sağlayıcısı kilitleniyorsa, uygulama da kilitleniyor. Bu yöntem çağrısıyla, içerik sağlayıcısı kilitleniyorsa uygulama kilitlenmez. Bunun yerine, bir uygulamaya içerik sağlayıcısının gittiğini bildirmek Android.OS.DeadObjectionException için içerik sağlayıcısına yapılan çağrılardan atılan. "Kararsız" içerik sağlayıcısı, diğer uygulamalardan içerik sağlayıcılarıyla etkileşimde bulunmak için yararlıdır. Başka bir uygulamanın buggy kodunun başka bir uygulamayı etkileme olasılığı daha düşük olur.
Amaçlarla Kopyalama ve Yapıştırma
Sınıfının Intent artık özelliği aracılığıyla ilişkili bir nesnesi ClipDataIntent.ClipData olabilir. Bu yöntem, panodan amaçla iletilen ek verilerin ilet edeklene izin verir. bir örneği ClipData bir veya daha fazla ClipData.Item içerebilir. ClipData.Item'ler aşağıdaki türlerde öğelerdir:
- Text: Bu, html veya yerleşik Android stili tarafından desteklenen herhangi bir dize olan herhangi bir metin dizesidir.
- Amaç: Herhangi bir nesne.
- Uri – Bu, HTTP yer işareti veya içerik sağlayıcısının URI'si gibi herhangi bir URI olabilir.
Yalıtılmış Hizmetler
Yalıtılmış hizmet, kendi özel işlemi altında çalışan ve kendi izinleri olan bir hizmettir. Hizmetle tek iletişim, hizmeti başlatma ve Hizmet API'si aracılığıyla bağlamadır. bir hizmet sınıfını donatan içinde özelliğini ayarerek bir hizmeti IsolatedProcess="true"ServiceAttribute yalıtılmış olarak bildirebilirsiniz.
Medya
Yeni Android.Media.MediaCodec sınıf, alt düzey medya codec bileşenlerine bir API sağlar. Uygulamalar, cihazda hangi düşük düzey codec bileşenlerinin kullanılabilir olduğunu bulmak için sistemi sorgular.
Yakalanan Android.Media.Audiofx.AudioEffect ses üzerinde ek ses ön işlemeyi desteklemek için yeni alt sınıflar eklendi:
Android.Media.Audiofx.AcousticEchoCanceler– Bu sınıf, yakalanan ses sinyalinden uzak bir taraftan sinyal kaldırmak için sesi önceden işleme için kullanılır. Örneğin, ses iletişim uygulamasından yankıyı kaldırma.Android.Media.Audiofx.AutomaticGainControl– Bu sınıf, çıkış sinyalinin sabit olması için giriş sinyalini artırarak veya düşürerek yakalanan sinyali normalleştirmek için kullanılır.Android.Media.Audiofx.NoiseSuppressor– Bu sınıf, yakalanan sinyalden arka plan kirliliğini kaldırır.
Tüm cihazlar bu etkileri desteklemez. Söz konusu ses etkisinin uygulamayı çalıştıran cihazda destek olup ola bir uygulama tarafından AudioEffect.IsAvailable çağrılarak yöntemin çağrılmış olması gerekir.
sınıfı MediaPlayer artık yöntemiyle boşluksuz kayıttan yürütmeyi SetNextMediaPlayer() destekliyor. Bu yeni yöntem, geçerli medya oynatıcı kayıttan yürütmeyi tamamlayana kadar başlatıla bir sonraki MediaPlayer'i belirtir.
Aşağıdaki yeni sınıflar medyanın oynanacak yeri seçmek için standart mekanizmalar ve kullanıcı arabirimi sağlar:
MediaRouter– Bu sınıf, uygulamaların bir cihazdan dış konuşmacılara veya diğer cihazlara medya kanallarının yönlendirmelerini denetlemelerini sağlar.MediaRouterActionProviderand:MediaRouteButtonBu sınıflar, medya seçme ve kayıttan çalma için tutarlı bir kullanıcı arabirimi sağlar.
Bildirimler
Android 4.1, uygulamaların bildirimleri görüntüleme konusunda daha fazla esneklik ve denetime sahip olduğunu sağlar. Uygulamalar artık kullanıcılara daha büyük ve daha iyi bildirimler gösterebilir. Yeni bir NotificationBuilder.SetStyle() yöntem, yeni üç yeni stilden birinin bildirimlerde ayarlanmalarını sağlar:
Notification.BigPictureStyle– Bu, içinde görüntü olacak bildirimler oluşturan bir yardımcı sınıftır. Aşağıdaki görüntüde büyük resimli bir bildirim örneği yer alır:
Notification.BigTextStyle– Bu, e-posta gibi birden çok satır metin içeren bildirimler oluşturan bir yardımcı sınıftır. Bu yeni bildirim stilinin bir örneği aşağıdaki ekran görüntüsünde görülebilir:
Notification.InboxStyle– Bu, bu ekran görüntüsünde gösterildiği gibi bir e-posta iletisinden kod parçacıkları gibi dizelerin listesini içeren bildirimler oluşturan bir yardımcı sınıftır:
Bildirim normal veya daha büyük bir stil kullanırken bir bildirim iletinin en altına en fazla iki eylem düğmesi eklemek mümkündür. Bunun bir örneği, bildirimin alt kısmında eylem düğmelerinin görünür olduğu aşağıdaki ekran görüntüsünde görülebilir:
sınıfı, bir geliştiricinin bildirim için beş öncelik düzeylerinden Notification birini belirtmesine olanak sağlayan yeni sabitler aldı. Bunlar, özelliği kullanılarak bir bildirimde Priority ayarlanır.
İzinler
Aşağıdaki yeni izinler eklendi:
READ_EXTERNAL_STORAGE- Uygulama, dış depolamaya salt okunur erişim gerektirir. Şu anda tüm uygulamalar varsayılan olarak okuma erişimine sahiptir, ancak Android'in gelecek yayınlarında uygulamalar açıkça okuma erişimi isteği gerektirecektir.READ_USER_DICTIONARY- Kullanıcının sözcük sözlüğüne okuma erişimi sağlar.READ_CALL_LOG- Bir uygulamanın, çağrı günlüğünü okuyarak gelen ve giden çağrılar hakkında bilgi edinerek bilgi edinerek izin verir.WRITE_CALL_LOG- Bir uygulamanın telefon numarasına yazmasını sağlar.WRITE_USER_DICTIONARY- Bir uygulamanın kullanıcının sözcük sözlüğüne yazmasine izin verir.
Dikkat etmek gereken önemli bir READ_EXTERNAL_STORAGE değişiklik– Şu anda bu izin Android tarafından otomatik olarak verildi. Android'in gelecek sürümlerinde, izin verilmeden önce bir uygulamanın bu izni isteğine ihtiyacı olacaktır.
Özet
Bu makalede, Android 4.1'de (API Düzeyi 16) kullanılabilen yeni API'lerden bazıları tanıtıldı. Animasyonlar ve bir etkinliğin başlatılmasına animasyonlar için yapılan bazı değişiklikleri vurguladı ve Bonjour veya UPnP gibi protokolleri kullanarak diğer cihazların ağ bulmasını yeni API'ler ile tanıttı. API'de yapılan diğer değişiklikler de vurgulanmış, örneğin amaç aracılığıyla verileri kesebilme ve yapıştırabilme, yalıtılmış hizmetleri veya "kararsız" içerik sağlayıcılarını kullanma olanağı.
Bu makale daha sonra bildirimlere güncelleştirmeler yapmak için devam etti ve Android 4.1 ile tanıtılan bazı yeni izinleri ele aldı




