代码之家  ›  专栏  ›  技术社区  ›  Michael Geier

使用TextClassificationManager(Android O)全局注册自定义TextClassifier

  •  3
  • Michael Geier  · 技术社区  · 7 年前

    从Android 8.0(Oreo)/API level 26开始,Android为突出显示的文本显示上下文操作(例如,如果选择了电话号码,则显示“呼叫”操作)。此外,Android会自动选择多个属于一起的单词(例如,一个整条街的地址)。这称为“智能文本选择”。

    这是您注册新 TextClassifier

    TextClassificationManager manager = 
        (TextClassificationManager) getSystemService(Context.TEXT_CLASSIFICATION_SERVICE);
    TextClassifier c = manager.getTextClassifier();
    manager.setTextClassifier(new MyTextClassifier());
    

    MyTextClassifier 实现 TextClassifier 接口和实现 suggestSelection() classifyText() .

    classifyText() 返回a TextClassification 对象,该对象具有描述要执行的上下文动作的标题和意图。

    (最后):如果我向 TextClassificationManager 它只适用于我自己的应用程序。 有没有办法定义一个可供其他应用程序使用的TextClassifier?

    文本分类器 .

    这样我就可以编写一个应用程序,在系统范围内增加对歌曲名称的支持(假设我有一个我想要支持的所有歌曲名称的列表)。 EditText s会自动选择“闻起来像少年精神”,即使用户只是长时间点击“少年”。在“剪切”、“复制”等旁边可能会弹出一个上下文操作“搜索谷歌播放音乐”。

    1 回复  |  直到 7 年前
        1
  •  1
  •   bodtoki    6 年前

    不幸的是,在Android O中,你将无法让其他应用程序使用你的自定义TextClassifier。

    但是,如果你想鼓励其他应用程序利用你的自定义TextClassifier,你可以用你的自定义TextClassifier创建一个库,该库可以内置到其他应用程序中,并设置为TextClassifier。