Android 4.2 API'leri

API Düzeyi: 17

Android 4.2 (JELLY_BEAN_MR1) kullanıcılar ve uygulama için yeni özellikler sunan Jelly Bean sürümünün güncellemesidir. birlikte çalışır. Bu belgede, projenin en önemli ve en önemli geliştiriciler için yararlı yeni API'ler.

Uygulama geliştirici olarak Android 4.2 sistem görüntüsü ve SDK platformunu şuradan indirmeniz gerekir: SDK Manager'ı en kısa sürede güncelleyin. Şu durumda: Uygulamanızı test etmek için Android 4.2 çalıştıran bir cihazınız yoksa Android 4.2 sistemini kullanın görselini kullanarak uygulamanızı Android emülatöründe test edebilirsiniz. Ardından, en yeni API'leri kullanmaya başlamak için uygulamalarınızı Android 4.2 platformunda derleyin.

Uygulamanızı Android 4.2 çalıştıran cihazlar için daha iyi optimize etmek üzere targetSdkVersion özelliğini şu şekilde ayarlamalısınız: "17", Android 4.2 sistem görüntüsüne yükleyin, test edip bu değişikliği içeren bir güncelleme yayınlayın.

Siz API'leri Android 4.2'de kullanabilir ve çalıştırmadan önce sistem API düzeyini kontrol eden kodunuza koşullar minSdkVersion cihazınızın desteklemediği API'ler. Şu konu hakkında daha fazla bilgi edinmek için: geriye dönük uyumluluğu koruma için Geriye Dönük Uyumlu Oluşturma başlıklı makaleyi okuyun Kullanıcı arayüzleri.

API düzeylerinin işleyiş şekli hakkında daha fazla bilgiyi API nedir? Düzey mi?

Önemli davranış değişiklikleri

Daha önce Android için bir uygulama yayınladıysanız aşağıdakilere dikkat edin Uygulamanızın davranışını etkileyebilecek değişiklikler:

  • İçerik sağlayıcılar artık varsayılan olarak dışa aktarılmıyor. Diğer bir deyişle, android:exported özelliği için artık “false". Diğer uygulamaların sağlayıcıya erişebiliyorsanız artık android:exported="true" özelliğini açık bir şekilde ayarlamanız gerekir.

    Bu değişiklik yalnızca android:targetSdkVersion veya android:minSdkVersion değerini 17 ya da daha yüksek bir değere ayarlarsanız geçerli olur. Aksi takdirde varsayılan değer yine “true" olur hatta Android 4.2 ve sonraki sürümlerde bile kullanılabilir.

  • Android'in önceki sürümleriyle karşılaştırıldığında kullanıcı konumu sonuçlarının doğruluğu daha düşük olabilir Uygulamanız ACCESS_COARSE_LOCATION iznini istiyor ancak , ACCESS_FINE_LOCATION iznini istemiyor.

    Uygulamanız şunlar için izin istediğinde kullanıcıların gizlilik beklentilerini karşılamak: yaklaşık konum (tam konum değil) olduğunda sistem, kullanıcıya yaklaşık konum tahmini sağlamaz bir şehir bloğundan daha doğrudur.

  • Settings.System tarafından tanımlanan bazı cihaz ayarları artık tanımlandı salt okunur. Uygulamanız, Settings.System politikasında tanımlanan ve Settings.Global hizmetine taşınan ayarları yazmaya çalışırsa Android 4.2 ve sonraki sürümlerde çalışırken yazma işlemi sessiz bir şekilde başarısız olur.

    android:targetSdkVersion ve android:minSdkVersion değeriniz 17'den düşük olsa bile uygulamanız, , Android 4.2 ve sonraki sürümlerde çalışırken Settings.Global konumuna taşındı.

  • Uygulamanızda WebView kullanılıyorsa Android 4.2, uygulamanızın Böylece JavaScript'i uygulamanıza daha güvenli bir şekilde bağlayabilmek için Android kodu. Örneğin targetSdkVersion için artık @JavascriptInterface ek açıklamasını eklemek istediğiniz herhangi bir yönteme eklemeniz JavaScript'inizde kullanılabilir olmasını ister (yöntem ayrıca herkese açık olmalıdır). Lütfen not, söz konusu yönteme WebView içindeki bir web sayfası tarafından erişilemiyorsa . Örneğin targetSdkVersion değeri 16 veya altına düştüğünde ek açıklama gerekmez ancak hedef sürümünüzü güncellemenizi öneririz. ve daha fazla güvenlik için ek açıklama ekleyin.

    Bağlama hakkında daha fazla bilgi edinin. JavaScript kodu için Android kodu.

Daydream

Daydream, Android cihazlar için geliştirilmiş yeni etkileşimli ekran koruyucu modudur. Otomatik olarak etkinleştirilir Cihaz bir yuvaya takıldığında veya yuvaya takılıyken boşta kaldığında şarj cihazı (ekranı kapatmak yerine). Daydream her seferinde bir rüya görüntüler ve bu, Dokunulduğunda kapanan veya etkileşimli ve duyarlı olabilen, tamamen görsel, pasif bir ekran olmalıdır. tüm giriş etkinlikleri paketine otomatik olarak geçiş yapar. Hayalleriniz, uygulamanızın sürecinde çalışır ve aşağıdakilere tam erişim elde eder: görünüm, düzenler ve animasyonları içeren Android kullanıcı arayüzü araç seti sayesinde daha esnek animasyonlu duvar kağıtlarından veya uygulama widget'larından daha güçlü.

DreamService alt sınıfını uygulayarak Daydream için bir hayal oluşturabilirsiniz. DreamService API'ler: Activity ile benzer olacak şekilde tasarlanmıştır. Şunun için kullanıcı arayüzünü belirtmek için: öğesini tamamladıktan sonra herhangi bir noktada setContentView() adresine bir düzen kaynağı kimliği veya View onAttachedToWindow() gibi bir pencereden geri arama.

DreamService sınıfı, yaşam döngüsü boyunca başka önemli geri çağırma işlemleri sağlar. temel Service API'lerine ek olarak onDreamingStarted(), onDreamingStopped() ve onDetachedFromWindow() gibi yöntemler kullanabilirsiniz. Şuradan bir DreamService başlatamazsınız: uygulama. Sistem tarafından otomatik olarak başlatılır.

Hayaliniz etkileşimliyse, rüyanızdan bir etkinlik başlatabilir ve kullanıcıyı ilgili uygulamanızın tam kullanıcı arayüzünde daha fazla ayrıntı veya kontrol sağlayabilirsiniz. Kullanıcının görebileceği şekilde hayali sonlandırmak için finish() öğesini kullanabilirsiniz. yeni Etkinlik'e dokunun.

Hayal gücünüzü sistemde kullanılabilir hale getirmek için DreamService öğenizi öğesiyle bildirin manifest dosyanıza ekleyin. Daha sonra, "android.service.dreams.DreamService" işlemine sahip bir intent filtresi eklemeniz gerekir. Örnek:

<service android:name=".MyDream" android:exported="true"
    android:icon="@drawable/dream_icon" android:label="@string/dream_label" >
    <intent-filter>
        <action android:name="android.service.dreams.DreamService" />
        <category android:name="android.intent.category.DEFAULT" />
    </intent-filter>
</service>

DreamService ürününde başka yararlı yöntemler de vardır dikkat etmeniz gereken bazı konular:

  • setInteractive(boolean), hayal, kullanıcı girişinden hemen sonra giriş etkinliklerini veya çıkışları alır. Hayalim kullanıcı rüyadan çıkmak için Geri veya Ana Ekran düğmelerini kullanabilir veya Rüyayı durdurmak için finish().
  • Tamamen etkileyici bir ekran istiyorsanız durum çubuğunu gizlemek için setFullscreen() öğesini çağırabilirsiniz.
  • Hafif uyku modu başlamadan önce, kullanıcıya boşta kalma zaman aşımının işaretleneceğini bildirmek için ekran kararır yaklaşıyor. setScreenBright(true) numarasını aradığınızda, ekranı normal parlaklığına ayarlayabilirsiniz.

Daha fazla bilgi için DreamService belgelerine bakın.

İkincil Ekranlar

Android artık bağlı olan ek ekranlarda uygulamanızın benzersiz içerikler göstermesine olanak tanıyor veya kablosuz bağlantı üzerinden kullanıcının cihazına bağlayabilirsiniz. İkincil bir ekran için benzersiz içerik oluşturmak isterseniz Presentation öğesini genişletin sınıfını kullanın ve onCreate() geri çağırmasını uygulayın. Şu süre içinde: onCreate(), ikincil ekran için kullanıcı arayüzünüzü belirtin setContentView() numaralı telefonu arayarak. Dialog sınıfının bir uzantısı olarak Presentation sınıfı, uygulamanızın ikincil görüntülü reklam.

Presentation gösterebileceğiniz ikincil ekranları algılamak için DisplayManager veya MediaRouter kullanın API'ler. DisplayManager API'leri tüm verileri numaralandırmanıza aynı anda bağlanabilecek birden fazla ekran varsa sistemin varsayılan ekranına hızlıca erişmek için MediaRouter tercih etmelisiniz. en iyi uygulamaları paylaşacağız.

Sununuzun varsayılan görüntüsünü almak için MediaRouter.getSelectedRoute() numaralı telefonu arayıp iletebilirsiniz ROUTE_TYPE_LIVE_VIDEO. Bu komut, sistemin seçili olan rotasını açıklayan bir MediaRouter.RouteInfo nesnesi döndürür. en iyi uygulamaları paylaşacağız. MediaRouter.RouteInfo boş değilse şunu çağırın: Bağlı ekranı temsil eden Display değerini almak için getPresentationDisplay().

Daha sonra Display nesnesini ileterek sununuzu görüntüleyebilirsiniz Presentation sınıfınız için bir oluşturucusuna ekleyin. Sununuz artık görünür.

Yeni bir ekran bağlandığını çalışma zamanında algılamak için onRoutePresentationDisplayChanged() geri çağırma yöntemini uyguladığınız bir MediaRouter.SimpleCallback örneği oluşturun. Yeni bir ekran bağlandığında sistem bu yöntemi çağırır. sunu ekranı bağlandı. Ardından, MediaRouter.SimpleCallback rotasını ROUTE_TYPE_LIVE_VIDEO rota türüyle birlikte MediaRouter.addCallback() adresine ileterek kaydedin. Bir çağrı aldığınızda onRoutePresentationDisplayChanged(), yukarıda belirtildiği gibi MediaRouter.getSelectedRoute() adlı kişiyi aramanız yeterlidir.

Presentation içindeki kullanıcı arayüzünü daha da optimize etmek için ikincil ekranlara göre arasında android:presentationTheme özelliğini belirterek