创建记事应用

नोट लेना, Android की एक मुख्य सुविधा है. इससे उपयोगकर्ताओं की उत्पादकता बढ़ती है बड़ी स्क्रीन वाले डिवाइस. नोट लेने वाले ऐप्लिकेशन की मदद से उपयोगकर्ता, नोट लिख सकते हैं और स्केच बना सकते हैं फ़्लोटिंग विंडो या फ़ुल स्क्रीन पर, स्क्रीन के कॉन्टेंट को कैप्चर और एनोटेट करें, और बाद में समीक्षा और संशोधन के लिए नोट सेव कर लें.

उपयोगकर्ता, नोट लेने वाले ऐप्लिकेशन को लॉक स्क्रीन से ऐक्सेस कर सकते हैं. इसके अलावा, वे कोई दूसरा ऐप्लिकेशन इस्तेमाल करते समय भी इनका इस्तेमाल कर सकते हैं दिखाई देता है.

नोट लेने से जुड़े स्टाइलस की मदद से, उपयोगकर्ताओं को बेहतरीन अनुभव मिलता है.

नोट की भूमिका

कॉन्टेंट बनाने RoleManager.ROLE_NOTES भूमिका, नोट लेने वाले ऐप्लिकेशन की पहचान करती है और उन्हें LAUNCH_CAPTURE_CONTENT_ACTIVITY_FOR_NOTE अनुमति.

अपने ऐप्लिकेशन के लिए नोट की भूमिका पाने के लिए, यह तरीका अपनाएं:

  1. isRoleAvailable() पर कॉल करें भूमिका की स्थिति जांचने के लिए.
  2. अगर नोट भूमिका उपलब्ध है, तो createRequestRoleIntent() पर कॉल करें नोट करने के खास इंटेंट के बारे में ज़्यादा जानने के लिए.
  3. 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():

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.
  }
});
अभी तक किसी भी व्यक्ति ने चेक इन नहीं किया है

फ़्लोटिंग विंडो

संदर्भ के हिसाब से नोट लेने के लिए, आपके ऐप्लिकेशन में ऐसी गतिविधि दी जानी चाहिए जो फ़्लोटिंग विंडो का इस्तेमाल करें.

आपके ऐप्लिकेशन को multi-instance मोड चालू कर सकते हैं, ताकि उपयोगकर्ता कई फ़्लोटिंग विंडो में एक से ज़्यादा नोट बना सकें जब नोट लेने की सुविधा वाला ऐप्लिकेशन फ़ुल स्क्रीन या स्प्लिट स्क्रीन में लॉन्च होता है मोड.

कॉन्टेंट कैप्चर करने की सुविधा

नोट लेने की सुविधा देने वाले ऐप्लिकेशन, कॉन्टेंट कैप्चर करने की एक मुख्य सुविधा है. कॉन्टेंट के साथ इससे उपयोगकर्ता नोट लेने के पीछे के डिसप्ले का स्क्रीनशॉट ले सकते हैं फ़्लोटिंग विंडो में खोलें. उपयोगकर्ता डिसप्ले का पूरा या कोई हिस्सा कैप्चर कर सकते हैं. इसके लिए, कॉन्टेंट को नोट में जोड़ा जा सकता है. साथ ही, कैप्चर किए गए कॉन्टेंट की व्याख्या या हाइलाइट की जा सकती है.

नोट लेने की सुविधा वाले आपके ऐप्लिकेशन में यूज़र इंटरफ़ेस (यूआई) की सुविधा होनी चाहिए, ताकि ActivityResultLauncher ने बनाया registerForActivityResult(). कॉन्टेंट बनाने ACTION_LAUNCH_CAPTURE_CONTENT_ACTIVITY_FOR_NOTE इंटेंट कार्रवाई, लॉन्चर को सीधे तौर पर या ActivityResultContract.

सिस्टम गतिविधि, कॉन्टेंट को कैप्चर करती है, उसे डिवाइस पर सेव करती है, और के कॉलबैक आर्ग्युमेंट में आपके ऐप्लिकेशन का कॉन्टेंट यूआरआई registerForActivityResult().

नीचे दिए गए उदाहरण में StartActivityForResult अनुबंध:

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));
        });
}

आपके ऐप्लिकेशन को नतीजों के सभी कोड मैनेज करने चाहिए:

कॉन्टेंट कैप्चर हो जाने पर, कैप्चर की गई इमेज को नोट में चिपकाएं. उदाहरण:

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.
        }
    });

कॉन्टेंट कैप्चर करने की सुविधा को यूज़र इंटरफ़ेस (यूआई) की सेटिंग के ज़रिए दिखाना चाहिए. ऐसा सिर्फ़ तब करना चाहिए, जब नोट लेने वाला आपका ऐप्लिकेशन फ़्लोटिंग विंडो में चल रहा हो फ़ुल स्क्रीन मोड चालू करके, डिवाइस की लॉक स्क्रीन से लॉन्च किया गया हो. (उपयोगकर्ता नोट लेने वाले ऐप्लिकेशन के स्क्रीनशॉट और डिवाइस का स्क्रीनशॉट सुविधाएं.)

यह पता लगाने के लिए कि आपका ऐप्लिकेशन किसी फ़्लोटिंग विंडो (या बबल) में है या नहीं, नीचे दिए गए तरीके अपनाएं:

  • isLaunchedFromBubble() यह जांच करने के लिए कि नोट लेने की सुविधा देने वाला ऐप्लिकेशन फ़ुल स्क्रीन मोड में लॉन्च तो नहीं हुआ डिवाइस की लॉक स्क्रीन
  • isRoleHeld(RoleManager.ROLE_NOTES) आपका ऐप्लिकेशन, नोट लेने का डिफ़ॉल्ट ऐप्लिकेशन है (आपका ऐप्लिकेशन किसी बातचीत या अन्य प्रकार के बबल में चलाया जा सकता है. नोट की भूमिका)

अन्य संसाधन