Not alma, Android'in büyük ekranlı cihazlarda kullanıcı üretkenliğini artıran temel bir özelliğidir. Not alma uygulamaları, kullanıcıların kayan bir pencerede veya tam ekranda yazı yazmasına ve çizim yapmasına, ekran içeriğini yakalamasına ve ek açıklama eklemesine, ayrıca notları daha sonra incelemek ve gözden geçirmek üzere kaydetmesine olanak tanır.
Kullanıcılar, kilit ekranından veya başka uygulamaları çalıştırırken not alma uygulamalarına erişebilir.
Not almak 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ızın notlar rolünü almak için aşağıdakileri yapın:
- Rolün durumunu kontrol etmek için
isRoleAvailable()
numaralı telefonu arayın. - Notlar rolü kullanılabiliyorsa notlara özel bir amaç edinmek için
createRequestRoleIntent()
numaralı telefonu arayın. - Kullanıcıdan uygulamanıza notlar rolü vermesini istemek için notlarla
startActivityForResult()
numaralı telefonu arayın.
Yalnızca bir uygulama notlar rolüne sahip olabilir.
Uygulama, dolaylı bir
ACTION_CREATE_NOTE
amaç işlemine yanıt olarak açılır. Cihaz kilit ekranından çağrılırsa uygulama tam ekran olarak açılır. Ekranın kilidi açıkken çağrılırsa kayan bir pencerede de açılır.
Uygulama manifesti
Uygulamanızın, notlar rolüne uygun olabilmesi için uygulama manifest dosyasında 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>
Bildirim, kullanıcıların uygulamanıza not rolü atamasına olanak tanıyarak bu uygulamayı varsayılan not alma uygulaması yapar:
ACTION_CREATE_NOTE
, uygulamanızın yanıt verdiği intent işlemini belirlershowWhenLocked
, uygulamanızı cihazın kilit ekranından erişilebilir hale getirirturnScreenOn
, uygulama çalışırken uygulamanızın cihaz ekranını açabilmesini sağlar
Uygulama özellikleri
Büyük ekrana özel bir not alma uygulaması, not alma özelliklerini eksiksiz bir şekilde tamamlar.
Ekran kalemi desteği
Uygulamanız EXTRA_USE_STYLUS_MODE
amaç ekstra true
olarak ayarlandığında, uygulama ekran kalemi (veya parmakla dokunma) girişini kabul eden bir not açmalıdır.
Amaç ekstrası false
olarak ayarlanırsa uygulamanız klavye girişini kabul eden bir not açmalıdır.
Kilit ekranı erişimi
Uygulamanız, cihaz kilit ekranından açıldığında çalışan bir 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 durumdayken) geçmiş notları göstermelidir. Aksi takdirde, uygulamanız 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ın kimliğini doğrulamasını ve kilidini açmasını istemek için KeyguardManager#requestDismissKeyguard()
numarasını arayın:
Kotlin
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. } })
Java
KeyguardManager keyguardManager = (KeyguardManager) getSystemService(KEYGUARD_SERVICE); boolean isLocked = keyguardManager.isKeyguardLocked(); keyguardManager.requestDismissKeyguard( this, new KeyguardManager.KeyguardDismissCallback() { @Override public void onDismissError() { // Unlock failed. Dismissing keyguard is not feasible. } @Override public void onDismissSucceeded() { // Unlock succeeded. Device is now unlocked. } @Override public void onDismissCancelled() { // Unlock failed. User cancelled operation or request otherwise cancelled. } });
Kayan pencereler
Bağlamsal not almak için uygulamanızın, başka bir uygulama çalışırken kayan bir pencerede açılan bir etkinlik sağlaması gerekir.
Not alma uygulamanız tam ekran veya bölünmüş ekran modunda başlatıldığında bile kullanıcıların birden fazla kayan pencerede birden çok not oluşturabilmeleri 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 alabilir. 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 ya da bunları vurgulayabilir.
Not alma uygulamanız, registerForActivityResult()
tarafından oluşturulan bir ActivityResultLauncher
'i başlatan bir kullanıcı arayüzü sağlamalıdır.
ACTION_LAUNCH_CAPTURE_CONTENT_ACTIVITY_FOR_NOTE
amaç işlemi, doğrudan veya ActivityResultContract
aracılığıyla başlatıcıya sağlanır.
Sistem etkinliği içeriği yakalar, cihaza kaydeder ve registerForActivityResult()
öğesinin geri çağırma bağımsız değişkeninde uygulamanıza içerik URI'sını döndürür.
Aşağıdaki örnekte genel bir StartActivityForResult
sözleşmesi kullanılmaktadır:
Kotlin
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")} }
Java
private final ActivityResultLauncher<Intent> startForResult = registerForActivityResult( new ActivityResultContracts.StartActivityForResult(), result -> { if (result.getResultCode() == Intent.CAPTURE_CONTENT_FOR_NOTE_SUCCESS) { Uri uri = result.getData() != null ? result.getData().getData() : null; // Use the URI to paste the captured content into the note. } }); @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Button captureButton = findViewById(R.id.capture_button); captureButton.setOnClickListener( view -> { Log.i("ContentCapture", "Launching intent..."); startForResult.launch(new Intent(ACTION_LAUNCH_CAPTURE_CONTENT_ACTIVITY_FOR_NOTE)); }); }
Uygulamanız tüm sonuç kodlarını işleyecek:
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 işlemi başarılı olduğunda, yakalanan resmi nota yapıştırın. Örneğin:
Kotlin
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. } }
Java
registerForActivityResult(new ActivityResultContracts.StartActivityForResult(), result -> { if (result.getResultCode() == Intent.CAPTURE_CONTENT_FOR_NOTE_SUCCESS) { Uri uri = result.getData() != null ? result.getData().getData() : null; // Use the URI to paste the captured content into the note. } });
İçerik yakalama özelliği, kullanıcı arayüzü olanaklarıyla yalnızca not alma uygulamanız kayan bir pencerede çalışırken gösterilmelidir. Tam ekran çalışırken ve cihazın kilit ekranından başlatıldığı zaman gösterilmemelidir. (Kullanıcılar, cihaz ekran görüntüsü özelliklerine sahip not alma uygulamasının ekran görüntülerini alabilir.)
Uygulamanızın kayan bir pencerede (veya balonda) olup olmadığını belirlemek için aşağıdaki yöntemleri çağırın:
- Not alma uygulamanızın, cihazın kilit ekranından tam ekran başlatılıp başlatılmadığını kontrol etmek için
isLaunchedFromBubble()
isRoleHeld(RoleManager.ROLE_NOTES)