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:
- Rolün durumunu kontrol etmek için
isRoleAvailable()
numarasını arayın. - Notlar rolü kullanılabiliyorsa nota özgü bir amaç için
createRequestRoleIntent()
numaralı telefonu arayın. - 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 belirlershowWhenLocked
, uygulamanızı cihaz kilit ekranından erişilebilir hale getirirturnScreenOn
, 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:
CAPTURE_CONTENT_FOR_NOTE_SUCCESS
CAPTURE_CONTENT_FOR_NOTE_FAILED
CAPTURE_CONTENT_FOR_NOTE_USER_CANCELED
CAPTURE_CONTENT_FOR_NOTE_WINDOW_MODE_UNSUPPORTED
CAPTURE_CONTENT_FOR_NOTE_BLOCKED_BY_ADMIN
İç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)