Not alma uygulaması oluştur

Not alma, Android'in cihazlarda kullanıcı verimliliğini artıran temel bir özelliktir. cihazlardır. Not alma uygulamaları, kullanıcıların yazı yazmalarını ve eskizler çizmelerini sağlar ekrana geldiğinde, ekran içeriğini yakalayabilir ve açıklama ekleyebilir, ve daha sonra incelemek ve düzenlemek üzere notlarınızı kaydedebilirsiniz.

Kullanıcılar not alma uygulamalarına kilit ekranından veya başka

Not alma için ekran kalemi desteği olağanüstü bir kullanıcı deneyimi sağlar.

Notlar rolü

İlgili içeriği oluşturmak için kullanılan RoleManager.ROLE_NOTES rolü, not alma uygulamalarını tanımlar ve bu LAUNCH_CAPTURE_CONTENT_ACTIVITY_FOR_NOTE izni gerekir.

Uygulamanıza not rolü eklemek için aşağıdakileri yapın:

  1. isRoleAvailable() numaralı telefonu arayın ve rolün durumunu kontrol edin.
  2. Notlar rolü kullanılabiliyorsa createRequestRoleIntent() numaralı telefonu arayın amaçlarını öğrenmek için kullanırlar.
  3. startActivityForResult() numaralı telefonu arayın kullanıcıya not rolü vermesini istemek için tasarlanan notlar ile uygulamasını indirin.

Yalnızca bir uygulama not rolüne sahip olabilir.

Uygulama, gizli bir uyarıya yanıt olarak açılır. ACTION_CREATE_NOTE intent işlemidir. Cihaz kilit ekranından çağrılırsa uygulama tam olarak açılır ekran; Kayan bir pencerede, ekran kilidi açıkken çağrılırsa.

Uygulama manifesti

Not rolüne hak kazanmak için uygulamanızın aşağıdaki beyanı içermesi gerekir in the app manifest:

<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ünü atamasına olanak tanır. varsayılan not alma uygulaması:

  • ACTION_CREATE_NOTE Uygulamanızın yanıt verdiği intent işlemini belirler

  • showWhenLocked Uygulamanızı cihaz kilit ekranından erişilebilir hale getirir

  • turnScreenOn, Uygulama çalışırken cihaz ekranını açmak için uygulamanız

Uygulama özellikleri

Büyük ekran farklı not alma uygulaması, aradığınız her şeyi kapsamlı bir şekilde ele alacağız.

Ekran kalemi desteği

Uygulamanız EXTRA_USE_STYLUS_MODE intent ekstra true olarak ayarlandıysa uygulama, ekran kalemini kabul eden bir not (veya parmak hareketiyle) giriş yapın.

Ekstra intent false olarak ayarlanırsa uygulamanız şunu kabul eden bir not açar: klavye girişi'ne dokunun.

Kilit ekranı erişimi

Uygulamanız, etkinken çalışan tam ekran etkinlik sağlamalıdır. cihazın kilit ekranından açabilirsiniz.

Kullanıcı izin vermişse uygulamanızda yalnızca geçmiş notları gösterilmelidir ( cihaz durumu) eski notların gösterilmesini sağlar. Aksi halde, kilit ekranını seçerseniz uygulamanız her zaman yeni bir not oluşturur.

Uygulamanızın kilit ekranından başlatılıp başlatılmadığını görmek için KeyguardManager#isKeyguardLocked(). Kullanıcıdan cihaz kimliğini doğrulamasını ve cihazın kilidini açmasını istemek için şu numarayı arayın: 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.
  }
});
.

Kayan pencereler

Bağlama dayalı not almak için, uygulamanızın çalışan bir kayan penceredir.

Uygulamanız şunları desteklemeli: multi-instance bu mod, kullanıcıların birden çok kayan pencerede not oluşturabilmeleri için bile Not alma uygulamanız tam ekran modunda veya bölünmüş ekranda başlatıldığında yatırım yapmanız önemlidir.

İçerik yakalama

İçerik yakalama, not alma uygulamalarının temel özelliklerinden biridir. İçeriğe sahip Kullanıcılar not alma sırasında ekranın görüntüsünü alabilir uygulamanın kayan penceresi. Kullanıcılar, ekranın tamamını veya bir kısmını yakalayabilir, içeriği notlarına ekleyebilir ve yakalanan içeriğe ek açıklama ekleyebilir ya da bunları vurgulayabilir.

Not alma uygulamanız, ActivityResultLauncher oluşturan: registerForActivityResult(). İlgili içeriği oluşturmak için kullanılan ACTION_LAUNCH_CAPTURE_CONTENT_ACTIVITY_FOR_NOTE intent işlemi, başlatıcıya doğrudan veya bir ActivityResultContract.

Bir sistem etkinliği içeriği yakalar, cihaza kaydeder ve registerForActivityResult()

Aşağıdaki örnekte genel bir StartActivityForResult sözleşme:

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:

İçerik yakalama başarılı olduğunda, yakalanan görüntüyü nota yapıştırın. örnek:

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, yalnızca şu durumlarda kullanıcı arayüzü desteğiyle kullanıcılara gösterilmelidir: not alma uygulamanız kayan bir pencerede çalışıyorsa tam ekran çalışıyor. Bu cihaz kilit ekranından başlatılır. (Kullanıcılar not alma uygulamasının cihazın ekran görüntüsüyle birlikte ekran görüntüleri özellikleri hakkında daha fazla bilgi edinin.)

Uygulamanızın kayan pencerede (veya balonda) olup olmadığını belirlemek için aşağıdaki yöntemleri kullanabilirsiniz:

  • isLaunchedFromBubble() kontrol ederek, not alma uygulamanızın şu ana kadar tam ekran başlatılıp başlatılmadığını cihaz kilit ekranı
  • isRoleHeld(RoleManager.ROLE_NOTES) uygulamanızın varsayılan not alma uygulaması olduğunu doğrulamak için (uygulamanız uygulama not rolü)

Ek kaynaklar