Not alma uygulaması oluştur

Not alma, Android'in büyük ekranlı cihazlarda kullanıcı verimliliğini artıran temel bir özelliktir. Not alma uygulamaları, kullanıcıların kayan bir pencerede veya tam ekranda yazı yazmasına, çizim yapmasına, ekran içeriği kaydetmesine ve açıklama eklemesine, notları daha sonra incelemek ve düzeltmek üzere kaydetmesine olanak tanır.

Kullanıcılar not alma uygulamalarına kilit ekranından veya başka uygulamaları çalıştırırken erişebilirler.

Not alma için ekran kalemi desteği olağanüstü bir kullanıcı deneyimi sağlar.

Notlar rolü

RoleManager.ROLE_NOTES rolü, not alma uygulamalarını tanımlar ve bu uygulamalara LAUNCH_CAPTURE_CONTENT_ACTIVITY_FOR_NOTE izni verir.

Uygulamanıza not rolü eklemek için aşağıdakileri yapın:

  1. Rolün durumunu kontrol etmek için isRoleAvailable() numarasını arayın.
  2. Notlar rolü kullanılabiliyorsa nota özgü bir amaç için createRequestRoleIntent() numaralı telefonu arayın.
  3. Kullanıcıdan uygulamanıza not rolü vermesini istemek için notları kullanarak startActivityForResult() çağrısı yapın.

Yalnızca bir uygulama not rolüne sahip olabilir.

Uygulama, gizli bir ACTION_CREATE_NOTE işlemine yanıt olarak açılır. Uygulama, cihaz kilit ekranından çağrılırsa tam ekran açılır. Uygulama, ekran kilidi açıkken çağrılırsa kayan bir pencerede açılır.

Uygulama manifesti

Uygulamanızın not rolüne uygun olması için uygulama manifest dosyasına aşağıdaki beyanı içermesi gerekir:

<activity
    android:name="YourActivityName"
    android:exported="true"
    android:showWhenLocked="true"
    android:turnScreenOn="true">
    <intent-filter>
        <action android:name="android.intent.action.CREATE_NOTE" />
        <category android:name="android.intent.category.DEFAULT" />
    </intent-filter>
</activity>

Bu beyan, kullanıcıların uygulamanıza not rolü atamasına olanak tanır. Böylece uygulamanız varsayılan not alma uygulaması olur:

  • ACTION_CREATE_NOTE, uygulamanızın yanıt verdiği intent işlemini belirler

  • showWhenLocked, uygulamanızı cihaz kilit ekranından erişilebilir hale getirir

  • turnScreenOn, uygulamanızın, uygulama çalışırken cihaz ekranını açmasını sağlar

Uygulama özellikleri

Büyük ekran farklılaştırılmış not alma uygulaması, not alma özelliklerini eksiksiz bir şekilde tamamlar.

Ekran kalemi desteği

Uygulamanız, true olarak ayarlanmış EXTRA_USE_STYLUS_MODE niyetiyle çağrıldığında, ekran kalemiyle (veya parmakla dokunarak) girişi kabul eden bir not açılır.

Ekstra intent false olarak ayarlanırsa uygulamanız klavye girişini kabul eden bir not açar.

Kilit ekranı erişimi

Uygulamanız, cihaz kilit ekranından açıldığında çalışan tam ekran etkinlik sağlamalıdır.

Uygulamanız yalnızca kullanıcı geçmiş notların gösterilmesine izin verdiyse (cihaz kilidi açık durumda) geçmiş notları göstermelidir. Aksi takdirde, uygulama kilit ekranından açıldığında her zaman yeni bir not oluşturmalıdır.

Uygulamanızın kilit ekranından başlatılıp başlatılmadığını KeyguardManager#isKeyguardLocked() ile kontrol edebilirsiniz. Kullanıcıdan cihaz kimliğini doğrulamasını ve cihazın kilidini açmasını istemek için KeyguardManager#requestDismissKeyguard() numaralı telefonu arayın:

val keyguardManager = getSystemService(KEYGUARD_SERVICE) as KeyguardManager
keyguardManager.requestDismissKeyguard(
    this, object : KeyguardDismissCallback() {
        override fun onDismissError() {
            // Unlock failed. Dismissing keyguard is not feasible.
        }
        override fun onDismissSucceeded() {
            // Unlock succeeded. Device is now unlocked.
        }
        override fun onDismissCancelled() {
            // Unlock failed. User cancelled operation or request otherwise cancelled.
        }
    }
)

Kayan pencereler

Bağlamsal not almak için uygulamanız, başka bir uygulama çalışırken kayan pencerede açılan bir etkinlik sağlamalıdır.

Not alma uygulamanız tam ekran veya bölünmüş ekran modunda başlatıldığında bile kullanıcıların birden çok kayan pencerede birden çok not oluşturabilmesi için uygulamanızın multi-instance modunu desteklemesi gerekir.

İçerik yakalama

İçerik yakalama, not alma uygulamalarının temel özelliklerinden biridir. İçerik yakalama sayesinde kullanıcılar, not alma uygulamasının kayan penceresinin arkasındaki ekranın ekran görüntülerini alabilirler. Kullanıcılar, ekranın tamamını veya bir kısmını yakalayabilir, içeriği notlarına yapıştırabilir ve yakalanan içeriğe açıklama ekleyebilir veya bunları vurgulayabilir.

Not alma uygulamanız, registerForActivityResult() tarafından oluşturulmuş bir ActivityResultLauncher'i başlatan kullanıcı arayüzü işlevi sağlamalıdır. ACTION_LAUNCH_CAPTURE_CONTENT_ACTIVITY_FOR_NOTE intent işlemi, başlatıcıya doğrudan veya bir ActivityResultContract aracılığıyla sağlanır.

Bir sistem etkinliği içeriği yakalar, cihaza kaydeder ve registerForActivityResult() geri çağırma bağımsız değişkeninde içerik URI'sini uygulamanıza döndürür.

Aşağıdaki örnekte genel bir StartActivityForResult sözleşmesi kullanılmaktadır:

private val startForResult = registerForActivityResult(
    ActivityResultContracts.StartActivityForResult()) {
        result: ActivityResult ->
            if (result.resultCode == Intent.CAPTURE_CONTENT_FOR_NOTE_SUCCESS) {
                val uri = result.data?.data
                // Use the URI to paste the captured content into the note.
            }
    }
override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContent {
        NotesTheme {
            Surface(color = MaterialTheme.colorScheme.background) {
                CaptureButton(
                    onClick = {
                        Log.i("ContentCapture", "Launching intent...")
                        startForResult.launch(Intent(ACTION_LAUNCH_CAPTURE_CONTENT_ACTIVITY_FOR_NOTE))
                    })
            }
        }
    }
}
@Composable
fun CaptureButton(onClick: () -> Unit) {
    Button(onClick = onClick)
    {Text("Capture Content")}
}

Uygulamanız tüm sonuç kodlarını işlemelidir:

İçerik yakalama başarılı olduğunda, yakalanan görüntüyü nota yapıştırın. Örneğin:

registerForActivityResult(ActivityResultContracts.StartActivityForResult()) {
    result: ActivityResult ->
        if (result.resultCode == Intent.CAPTURE_CONTENT_FOR_NOTE_SUCCESS) {
            val uri = result.data?data
            // Use the URI to paste the captured content into the note.
        }
}

İçerik yakalama özelliği, not alma uygulamanız yalnızca kayan bir pencerede çalışırken (tam ekran çalışırken değil, cihazın kilit ekranından çalıştırıldığında değil) kullanıcı arayüzü yardımı ile gösterilmelidir. (Kullanıcılar, cihazdaki ekran görüntüsü özelliğini kullanarak not alma uygulamasının ekran görüntülerini alabilirler.)

Uygulamanızın kayan pencerede (veya balonda) olup olmadığını belirlemek için aşağıdaki yöntemleri çağırın:

  • isLaunchedFromBubble() Not alma uygulamanızın cihazın kilit ekranından tam ekran başlatılıp başlatılmadığını kontrol etmek için
  • Uygulamanızın varsayılan not alma uygulaması olduğunu doğrulamak için isRoleHeld(RoleManager.ROLE_NOTES) (uygulama not rolünde değilse bir görüşmede veya başka tür bir balonda çalışabilir)

Ek kaynaklar