Ghi chú là một chức năng cốt lõi của Android giúp tăng năng suất của người dùng trên thiết bị có màn hình lớn. Ứng dụng ghi chú cho phép người dùng viết và phác thảo một cửa sổ nổi hoặc trên toàn màn hình, ghi lại và chú thích nội dung trên màn hình, và lưu ghi chú để xem lại và sửa đổi sau.
Người dùng có thể truy cập vào ứng dụng ghi chú từ màn hình khoá hoặc khi đang chạy của chúng tôi.
Tính năng hỗ trợ ghi chú bằng bút cảm ứng mang lại trải nghiệm ấn tượng cho người dùng.
Vai trò ghi chú
Chiến lược phát hành đĩa đơn
RoleManager.ROLE_NOTES
vai trò xác định ứng dụng ghi chú và cấp cho chúng
LAUNCH_CAPTURE_CONTENT_ACTIVITY_FOR_NOTE
quyền.
Để lấy vai trò ghi chú cho ứng dụng, hãy làm như sau:
- Gọi
isRoleAvailable()
để kiểm tra trạng thái của vai trò. - Nếu có vai trò ghi chú, hãy gọi
createRequestRoleIntent()
để lấy ý định dành riêng cho ghi chú. - Gọi
startActivityForResult()
với mục đích ghi chú để nhắc người dùng cấp vai trò ghi chú cho .
Chỉ một ứng dụng có thể sở hữu vai trò ghi chú.
Ứng dụng sẽ mở ra để phản hồi một lệnh ngầm ẩn
ACTION_CREATE_NOTE
thao tác theo ý định. Nếu được gọi từ màn hình khoá của thiết bị, ứng dụng sẽ mở ở chế độ toàn màn hình
màn hình; nếu được gọi trong khi màn hình đang mở khoá trong một cửa sổ nổi.
Tệp kê khai ứng dụng
Để đủ điều kiện sử dụng vai trò ghi chú, ứng dụng của bạn phải đưa ra nội dung khai báo sau trong tệp kê khai ứng dụng:
<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>
Phần khai báo cho phép người dùng chỉ định vai trò ghi chú cho ứng dụng của bạn, giúp ứng dụng ứng dụng ghi chú mặc định:
ACTION_CREATE_NOTE
đặt thao tác theo ý định mà ứng dụng của bạn phản hồishowWhenLocked
giúp người dùng truy cập vào ứng dụng của bạn từ màn hình khoá của thiết bịturnScreenOn
bật ứng dụng của bạn để bật màn hình thiết bị khi ứng dụng đó chạy
Tính năng của ứng dụng
Một ứng dụng ghi chú khác biệt trên màn hình lớn cung cấp đầy đủ về khả năng ghi chú.
Hỗ trợ bút cảm ứng
Khi ứng dụng của bạn được gọi bằng
EXTRA_USE_STYLUS_MODE
ý định bổ sung được đặt thành true
, ứng dụng sẽ mở một ghi chú chấp nhận bút cảm ứng (hoặc
chạm bằng ngón tay).
Nếu ý định bổ sung được đặt thành false
, ứng dụng của bạn sẽ mở một ghi chú chấp nhận
nhập bằng bàn phím.
Truy cập vào màn hình khoá
Ứng dụng của bạn phải cung cấp một hoạt động toàn màn hình. Hoạt động này sẽ chạy khi ứng dụng đó đã mở từ màn hình khoá của thiết bị.
Ứng dụng của bạn chỉ nên hiển thị các ghi chú trước đây nếu người dùng đã đồng ý (trong trạng thái thiết bị đã mở khoá) để hiển thị các ghi chú trước đây. Nếu không, khi mở từ màn hình khoá, ứng dụng của bạn sẽ luôn tạo một ghi chú mới.
Bạn có thể dùng để kiểm tra xem ứng dụng của mình có được chạy từ màn hình khoá hay không bằng
KeyguardManager#isKeyguardLocked()
.
Để yêu cầu người dùng xác thực và mở khoá thiết bị, hãy gọi
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. }
} )
Cửa sổ nổi
Đối với ghi chú theo ngữ cảnh, ứng dụng của bạn phải cung cấp một hoạt động mở trong một cửa sổ nổi khi một ứng dụng khác đang chạy.
Ứng dụng của bạn phải hỗ trợ
multi-instance
để người dùng có thể tạo nhiều ghi chú trong nhiều cửa sổ nổi
khi chạy ứng dụng ghi chú ở chế độ toàn màn hình hoặc chia đôi màn hình
.
Ghi lại nội dung
Ghi lại nội dung là một chức năng chính của ứng dụng ghi chú. Có nội dung chụp, người dùng có thể chụp ảnh màn hình phía sau phần ghi chú cửa sổ nổi của ứng dụng. Người dùng có thể chụp toàn bộ hoặc một phần màn hình, dán nội dung vào ghi chú của họ và chú thích hoặc đánh dấu nội dung đã ghi.
Ứng dụng ghi chú của bạn phải cung cấp một thuộc tính tương tác trên giao diện người dùng giúp khởi chạy một
ActivityResultLauncher
được tạo bởi
registerForActivityResult()
.
Chiến lược phát hành đĩa đơn
ACTION_LAUNCH_CAPTURE_CONTENT_ACTIVITY_FOR_NOTE
thao tác theo ý định được cung cấp cho trình chạy một cách trực tiếp hoặc thông qua
ActivityResultContract
.
Một hoạt động của hệ thống sẽ ghi lại nội dung, lưu nội dung này trên thiết bị và trả về
URI nội dung cho ứng dụng của bạn trong đối số gọi lại của
registerForActivityResult()
.
Ví dụ sau đây sử dụng một thuộc tính chung
StartActivityForResult
hợp đồng:
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")} }
Ứng dụng của bạn phải xử lý tất cả các mã kết quả:
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
Khi hệ thống ghi xong nội dung, hãy dán hình ảnh đã chụp vào ghi chú để ví dụ:
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. } }
Tính năng ghi lại nội dung chỉ nên hiển thị thông qua một thuộc tính tương tác trên giao diện người dùng khi ứng dụng ghi chú của bạn đang chạy trong một cửa sổ nổi chứ không phải khi chạy ở chế độ toàn màn hình, khởi chạy từ màn hình khoá của thiết bị. (Người dùng có thể thực hiện ảnh chụp màn hình của chính ứng dụng ghi chú đó cùng với ảnh chụp màn hình của thiết bị năng lực khác.)
Để xác định xem ứng dụng của bạn có đang ở cửa sổ nổi (hoặc bong bóng trò chuyện) hay không, hãy gọi phương thức các phương thức sau:
isLaunchedFromBubble()
để kiểm tra nhằm đảm bảo rằng ứng dụng ghi chú của bạn không chạy ở chế độ toàn màn hình từ màn hình khoá của thiết bịisRoleHeld(RoleManager.ROLE_NOTES)
để xác minh rằng ứng dụng của bạn là ứng dụng ghi chú mặc định (ứng dụng của bạn có thể chạy trong một cuộc trò chuyện hoặc loại bong bóng trò chuyện khác nếu ứng dụng không giữ vai trò ghi chú)