Ведение заметок — это основная функция Android, которая повышает производительность пользователей на устройствах с большим экраном. Приложения для ведения заметок позволяют пользователям писать и рисовать в плавающем окне или в полноэкранном режиме, захватывать и комментировать содержимое экрана, а также сохранять заметки для последующего просмотра и редактирования.
Пользователи могут получить доступ к приложениям для создания заметок с экрана блокировки или во время запуска других приложений.
Поддержка стилуса для создания заметок обеспечивает исключительный пользовательский опыт.
Роль заметок
Роль RoleManager.ROLE_NOTES
определяет приложения для создания заметок и предоставляет им разрешение LAUNCH_CAPTURE_CONTENT_ACTIVITY_FOR_NOTE
.
Чтобы получить роль заметок для вашего приложения, выполните следующие действия:
- Вызовите
isRoleAvailable()
, чтобы проверить статус роли. - Если роль примечаний доступна, вызовите
createRequestRoleIntent()
, чтобы получить намерение, специфичное для примечаний. - Вызовите
startActivityForResult()
с намерением примечаний, чтобы предложить пользователю предоставить роль примечаний вашему приложению.
Только одно приложение может выполнять роль заметок.
Приложение открывается в ответ на неявное действие намерения ACTION_CREATE_NOTE
. При вызове с экрана блокировки устройства приложение открывается в полноэкранном режиме; если он вызывается, когда экран разблокирован, в плавающем окне.
Манифест приложения
Чтобы претендовать на роль заметок, ваше приложение должно включить в манифест приложения следующее объявление:
<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>
Объявление позволяет пользователям назначать вашему приложению роль заметок, делая его приложением для создания заметок по умолчанию:
ACTION_CREATE_NOTE
устанавливает намеренное действие, на которое реагирует ваше приложение.showWhenLocked
делает ваше приложение доступным с экрана блокировки устройства.turnScreenOn
позволяет вашему приложению включать экран устройства при запуске приложения.
Возможности приложения
Приложение для создания заметок с большим экраном предоставляет полный набор возможностей для создания заметок.
Поддержка стилуса
Когда ваше приложение вызывается с дополнительным намерением EXTRA_USE_STYLUS_MODE
, установленным в значение true
, приложение должно открыть заметку, которая принимает ввод стилусом (или касанием пальца).
Если для дополнительного намерения установлено значение false
, ваше приложение должно открыть заметку, которая принимает ввод с клавиатуры.
Доступ к экрану блокировки
Ваше приложение должно обеспечивать полноэкранное действие, которое запускается при открытии приложения с экрана блокировки устройства.
Ваше приложение должно отображать только исторические заметки, если пользователь дал согласие (в состоянии разблокированного устройства) на показ прошлых заметок. В противном случае при открытии с экрана блокировки ваше приложение всегда должно создавать новую заметку.
Вы можете проверить, было ли запущено ваше приложение с экрана блокировки, с помощью KeyguardManager#isKeyguardLocked()
. Чтобы попросить пользователя аутентифицировать и разблокировать устройство, вызовите KeyguardManager#requestDismissKeyguard()
:
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. }
} )
Плавающие окна
Для контекстного ведения заметок ваше приложение должно предоставить действие, которое открывается в плавающем окне при запуске другого приложения.
Ваше приложение должно поддерживать режим multi-instance
, чтобы пользователи могли создавать несколько заметок в нескольких плавающих окнах, даже если ваше приложение для создания заметок запущено в полноэкранном режиме или в режиме разделенного экрана.
Захват контента
Захват контента — ключевая возможность приложений для создания заметок. Благодаря захвату контента пользователи могут делать снимки экрана за плавающим окном приложения для создания заметок. Пользователи могут захватывать все или часть отображения, вставлять содержимое в свою заметку, а также комментировать или выделять захваченное содержимое.
Ваше приложение для заметок должно предоставлять возможность пользовательского интерфейса, который запускает ActivityResultLauncher
, созданный с помощью registerForActivityResult()
. Действие намерения ACTION_LAUNCH_CAPTURE_CONTENT_ACTIVITY_FOR_NOTE
предоставляется средству запуска либо напрямую, либо через ActivityResultContract
.
Системное действие захватывает контент, сохраняет его на устройстве и возвращает URI контента вашему приложению в аргументе обратного вызова метода registerForActivityResult()
.
В следующем примере используется универсальный контракт StartActivityForResult
:
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")} }
Ваше приложение должно обрабатывать все коды результатов:
-
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
После успешного захвата контента вставьте захваченное изображение в заметку, например:
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. } }
Функция захвата контента должна быть доступна через возможности пользовательского интерфейса только тогда, когда ваше приложение для создания заметок работает в плавающем окне, а не при работе в полноэкранном режиме, запускаемом с экрана блокировки устройства. (Пользователи могут делать снимки экрана самого приложения для создания заметок с помощью функций создания снимков экрана устройства.)
Чтобы определить, находится ли ваше приложение в плавающем окне (или пузырьке), вызовите следующие методы:
-
isLaunchedFromBubble()
чтобы убедиться, что приложение для создания заметок не запускалось в полноэкранном режиме с экрана блокировки устройства. -
isRoleHeld(RoleManager.ROLE_NOTES)
чтобы убедиться, что ваше приложение является приложением для создания заметок по умолчанию (ваше приложение может работать в диалоге или другом типе пузырька, если приложение не выполняет роль заметок).
Дополнительные ресурсы
,Ведение заметок — это основная функция Android, которая повышает производительность пользователей на устройствах с большим экраном. Приложения для ведения заметок позволяют пользователям писать и рисовать в плавающем окне или в полноэкранном режиме, захватывать и комментировать содержимое экрана, а также сохранять заметки для последующего просмотра и редактирования.
Пользователи могут получить доступ к приложениям для создания заметок с экрана блокировки или во время запуска других приложений.
Поддержка стилуса для создания заметок обеспечивает исключительный пользовательский опыт.
Роль заметок
Роль RoleManager.ROLE_NOTES
определяет приложения для создания заметок и предоставляет им разрешение LAUNCH_CAPTURE_CONTENT_ACTIVITY_FOR_NOTE
.
Чтобы получить роль заметок для вашего приложения, выполните следующие действия:
- Вызовите
isRoleAvailable()
, чтобы проверить статус роли. - Если роль примечаний доступна, вызовите
createRequestRoleIntent()
, чтобы получить намерение, специфичное для примечаний. - Вызовите
startActivityForResult()
с намерением примечаний, чтобы предложить пользователю предоставить роль примечаний вашему приложению.
Только одно приложение может выполнять роль заметок.
Приложение открывается в ответ на неявное действие намерения ACTION_CREATE_NOTE
. При вызове с экрана блокировки устройства приложение открывается в полноэкранном режиме; если он вызывается, когда экран разблокирован, в плавающем окне.
Манифест приложения
Чтобы претендовать на роль заметок, ваше приложение должно включить в манифест приложения следующее объявление:
<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>
Объявление позволяет пользователям назначать вашему приложению роль заметок, делая его приложением для создания заметок по умолчанию:
ACTION_CREATE_NOTE
устанавливает намеренное действие, на которое реагирует ваше приложение.showWhenLocked
делает ваше приложение доступным с экрана блокировки устройства.turnScreenOn
позволяет вашему приложению включать экран устройства при запуске приложения.
Возможности приложения
Приложение для создания заметок с большим экраном предоставляет полный набор возможностей для создания заметок.
Поддержка стилуса
Когда ваше приложение вызывается с дополнительным намерением EXTRA_USE_STYLUS_MODE
, установленным в значение true
, приложение должно открыть заметку, которая принимает ввод стилусом (или касанием пальца).
Если для дополнительного намерения установлено значение false
, ваше приложение должно открыть заметку, которая принимает ввод с клавиатуры.
Доступ к экрану блокировки
Ваше приложение должно обеспечивать полноэкранное действие, которое запускается при открытии приложения с экрана блокировки устройства.
Ваше приложение должно отображать только исторические заметки, если пользователь дал согласие (в состоянии разблокированного устройства) на показ прошлых заметок. В противном случае при открытии с экрана блокировки ваше приложение всегда должно создавать новую заметку.
Вы можете проверить, было ли запущено ваше приложение с экрана блокировки, с помощью KeyguardManager#isKeyguardLocked()
. Чтобы попросить пользователя аутентифицировать и разблокировать устройство, вызовите KeyguardManager#requestDismissKeyguard()
:
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. }
} )
Плавающие окна
Для контекстного ведения заметок ваше приложение должно предоставить действие, которое открывается в плавающем окне при запуске другого приложения.
Ваше приложение должно поддерживать режим multi-instance
, чтобы пользователи могли создавать несколько заметок в нескольких плавающих окнах, даже если ваше приложение для создания заметок запущено в полноэкранном режиме или в режиме разделенного экрана.
Захват контента
Захват контента — ключевая возможность приложений для создания заметок. Благодаря захвату контента пользователи могут делать снимки экрана за плавающим окном приложения для создания заметок. Пользователи могут захватывать все или часть отображения, вставлять содержимое в свою заметку, а также комментировать или выделять захваченное содержимое.
Ваше приложение для заметок должно предоставлять возможность пользовательского интерфейса, который запускает ActivityResultLauncher
, созданный с помощью registerForActivityResult()
. Действие намерения ACTION_LAUNCH_CAPTURE_CONTENT_ACTIVITY_FOR_NOTE
предоставляется средству запуска либо напрямую, либо через ActivityResultContract
.
Системное действие захватывает контент, сохраняет его на устройстве и возвращает URI контента вашему приложению в аргументе обратного вызова метода registerForActivityResult()
.
В следующем примере используется универсальный контракт StartActivityForResult
:
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")} }
Ваше приложение должно обрабатывать все коды результатов:
-
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
После успешного захвата контента вставьте захваченное изображение в заметку, например:
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. } }
Функция захвата контента должна быть доступна через возможности пользовательского интерфейса только тогда, когда ваше приложение для создания заметок работает в плавающем окне, а не при работе в полноэкранном режиме, запускаемом с экрана блокировки устройства. (Пользователи могут делать снимки экрана самого приложения для создания заметок с помощью функций создания снимков экрана устройства.)
Чтобы определить, находится ли ваше приложение в плавающем окне (или пузырьке), вызовите следующие методы:
-
isLaunchedFromBubble()
чтобы убедиться, что приложение для создания заметок не запускалось в полноэкранном режиме с экрана блокировки устройства. -
isRoleHeld(RoleManager.ROLE_NOTES)
чтобы убедиться, что ваше приложение является приложением для создания заметок по умолчанию (ваше приложение может работать в диалоге или другом типе пузырька, если приложение не выполняет роль заметок).
Дополнительные ресурсы
,Ведение заметок — это основная функция Android, которая повышает производительность пользователей на устройствах с большим экраном. Приложения для ведения заметок позволяют пользователям писать и рисовать в плавающем окне или в полноэкранном режиме, захватывать и комментировать содержимое экрана, а также сохранять заметки для последующего просмотра и редактирования.
Пользователи могут получить доступ к приложениям для создания заметок с экрана блокировки или во время запуска других приложений.
Поддержка стилуса для создания заметок обеспечивает исключительный пользовательский опыт.
Роль заметок
Роль RoleManager.ROLE_NOTES
определяет приложения для создания заметок и предоставляет им разрешение LAUNCH_CAPTURE_CONTENT_ACTIVITY_FOR_NOTE
.
Чтобы получить роль заметок для вашего приложения, выполните следующие действия:
- Вызовите
isRoleAvailable()
, чтобы проверить статус роли. - Если роль примечаний доступна, вызовите
createRequestRoleIntent()
, чтобы получить намерение, специфичное для примечаний. - Вызовите
startActivityForResult()
с намерением примечаний, чтобы предложить пользователю предоставить роль примечаний вашему приложению.
Только одно приложение может выполнять роль заметок.
Приложение открывается в ответ на неявное действие намерения ACTION_CREATE_NOTE
. При вызове с экрана блокировки устройства приложение открывается в полноэкранном режиме; если он вызывается, когда экран разблокирован, в плавающем окне.
Манифест приложения
Чтобы претендовать на роль заметок, ваше приложение должно включить в манифест приложения следующее объявление:
<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>
Объявление позволяет пользователям назначать вашему приложению роль заметок, делая его приложением для создания заметок по умолчанию:
ACTION_CREATE_NOTE
устанавливает намеренное действие, на которое реагирует ваше приложение.showWhenLocked
делает ваше приложение доступным с экрана блокировки устройства.turnScreenOn
позволяет вашему приложению включать экран устройства при запуске приложения.
Возможности приложения
Приложение для создания заметок с большим экраном предоставляет полный набор возможностей для создания заметок.
Поддержка стилуса
Когда ваше приложение вызывается с дополнительным намерением EXTRA_USE_STYLUS_MODE
, установленным в значение true
, приложение должно открыть заметку, которая принимает ввод стилусом (или касанием пальца).
Если для дополнительного намерения установлено значение false
, ваше приложение должно открыть заметку, которая принимает ввод с клавиатуры.
Доступ к экрану блокировки
Ваше приложение должно обеспечивать полноэкранное действие, которое запускается при открытии приложения с экрана блокировки устройства.
Ваше приложение должно отображать только исторические заметки, если пользователь дал согласие (в состоянии разблокированного устройства) на показ прошлых заметок. В противном случае при открытии с экрана блокировки ваше приложение всегда должно создавать новую заметку.
Вы можете проверить, было ли запущено ваше приложение с экрана блокировки, с помощью KeyguardManager#isKeyguardLocked()
. Чтобы попросить пользователя аутентифицировать и разблокировать устройство, вызовите KeyguardManager#requestDismissKeyguard()
:
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. }
} )
Плавающие окна
Для контекстного ведения заметок ваше приложение должно предоставить действие, которое открывается в плавающем окне при запуске другого приложения.
Ваше приложение должно поддерживать режим multi-instance
, чтобы пользователи могли создавать несколько заметок в нескольких плавающих окнах, даже если ваше приложение для создания заметок запущено в полноэкранном режиме или в режиме разделенного экрана.
Захват контента
Захват контента — ключевая возможность приложений для создания заметок. Благодаря захвату контента пользователи могут делать снимки экрана за плавающим окном приложения для создания заметок. Пользователи могут захватывать все или часть отображения, вставлять содержимое в свою заметку, а также комментировать или выделять захваченное содержимое.
Ваше приложение для заметок должно предоставлять возможность пользовательского интерфейса, который запускает ActivityResultLauncher
, созданный с помощью registerForActivityResult()
. Действие намерения ACTION_LAUNCH_CAPTURE_CONTENT_ACTIVITY_FOR_NOTE
предоставляется средству запуска либо напрямую, либо через ActivityResultContract
.
Системное действие захватывает контент, сохраняет его на устройстве и возвращает URI контента вашему приложению в аргументе обратного вызова метода registerForActivityResult()
.
В следующем примере используется универсальный контракт StartActivityForResult
:
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")} }
Ваше приложение должно обрабатывать все коды результатов:
-
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
После успешного захвата контента вставьте захваченное изображение в заметку, например:
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. } }
Функция захвата контента должна быть доступна через возможности пользовательского интерфейса только тогда, когда ваше приложение для создания заметок работает в плавающем окне, а не при работе в полноэкранном режиме, запускаемом с экрана блокировки устройства. (Пользователи могут делать снимки экрана самого приложения для создания заметок с помощью функций создания снимков экрана устройства.)
Чтобы определить, находится ли ваше приложение в плавающем окне (или пузырьке), вызовите следующие методы:
-
isLaunchedFromBubble()
чтобы убедиться, что приложение для создания заметок не запускалось в полноэкранном режиме с экрана блокировки устройства. -
isRoleHeld(RoleManager.ROLE_NOTES)
чтобы убедиться, что ваше приложение является приложением для создания заметок по умолчанию (ваше приложение может работать в диалоге или другом типе пузырька, если приложение не выполняет роль заметок).