Not alma, Android'in büyük ekranlı cihazlarda kullanıcı verimliliğini artıran temel bir özelliğidir. Not alma uygulamaları, kullanıcıların kayan bir pencerede veya tam ekranda yazma ve çizim yapma, ekran içeriğini yakalama ve açıklama ekleme, not kaydetme işlemlerini daha sonra incelemek ve gözden geçirmek için kaydetmelerini sağlar.
Kullanıcılar not alma uygulamalarına kilit ekranından veya başka uygulamaları çalıştırırken 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
iznini 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 özgü bir amaç için
createRequestRoleIntent()
numaralı telefonu arayın. - Kullanıcıdan uygulamanıza notlar rolü vermesini istemek için notlarla birlikte
startActivityForResult()
numaralı telefonu arayın.
Yalnızca bir uygulama not rolüne sahip olabilir.
Uygulama, dolaylı bir ACTION_CREATE_NOTE
intent işlemine yanıt olarak açılır. Cihaz kilit ekranından çağrılırsa uygulama tam ekranı, ekran kilidi açıkken çağrılırsa kayan bir pencerede açılır.
Uygulama manifesti
Notlar rolüne uygun olabilmesi için uygulamanızın 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>
Bu beyan, kullanıcıların uygulamanıza not rolü atamasına olanak tanıyarak uygulamanızı varsayılan not alma uygulaması yapar:
ACTION_CREATE_NOTE
, uygulamanızın yanıt verdiği amaç işlemini belirlershowWhenLocked
, uygulamanızı cihazın kilit ekranından erişilebilir hale getirirturnScreenOn
, uygulama çalıştığında uygulamanızın cihaz ekranını açmasına olanak tanır.
Uygulama özellikleri
Farklı bir büyük ekranlı not alma uygulaması, not alma özelliklerini eksiksiz olarak tamamlar.
Ekran kalemi desteği
Uygulamanız EXTRA_USE_STYLUS_MODE
intent ekstrası true
olarak ayarlanmış şekilde çağrıldığında, uygulama ekran kalemi (veya parmakla dokunma) girişini kabul eden bir not açmalıdır.
Amaç ekstra false
olarak ayarlanırsa uygulamanız klavye girişini kabul eden bir not açacaktı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ı göstermeye izin vermişse (cihaz kilidi açıkken) 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 kimlik doğrulamasını ve cihazın kilidini açmasını istemek için KeyguardManager#requestDismissKeyguard()
numaralı telefonu 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 alma 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ılmış olsa bile kullanıcıların birden fazla kayan pencerede birden çok not oluşturabilmesi için uygulamanız multi-instance
modunu desteklemelidir.
İç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
intent işlemi, başlatıcıya doğrudan veya bir ActivityResultContract
aracılığıyla sağlanır.
Sistem etkinliği, içeriği yakalar, cihaza kaydeder ve registerForActivityResult()
öğesinin geri çağırma bağımsız değişkenindeki içerik URI'sını uygulamanıza 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ş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 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ü aracılığıyla yalnızca not alma uygulamanız kayan bir pencerede çalışıyorsa gösterilmelidir (tam ekran çalışırken cihaz kilit ekranından başlatıldığı zaman değil). (Kullanıcılar cihaz ekran görüntüsü özelliklerini kullanarak 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 kilit ekranından tam ekran olarak başlatılıp başlatılmadığını kontrol etmek için
isLaunchedFromBubble()
- Uygulamanızın varsayılan not alma uygulaması olduğunu doğrulamak için
isRoleHeld(RoleManager.ROLE_NOTES)
(uygulama, notlar rolüne sahip değilse uygulamanız bir görüşmede veya başka bir tür balonda çalışabilir)