Android 12下TextClassifier的suggestSelection与classifyText接口超时问题问询
Android 12 下 TextClassifier 接口调用超时问题
偶现问题:TextClassifier.suggestSelection() 和 TextClassifier.classifyText() 接口在暂停1分钟后调用会出现超时。
该调用已按规范在非主线程执行,此问题仅在Pixel 3设备升级到Android 12后才开始出现。本次实现参考了官方文档旧版内容,目前该API已大幅迭代,但未找到相关说明指出旧调用方式已过时或存在缺失。
复现代码
import static android.content.Context.TEXT_CLASSIFICATION_SERVICE; import android.content.Context; import android.view.textclassifier.TextClassification; import android.view.textclassifier.TextClassificationManager; import android.view.textclassifier.TextClassifier; import android.view.textclassifier.TextSelection; public class TestTextClassifier { TextClassificationManager manager; TextClassifier classifier; static final String TEXT = "my.email@gmail.com - detect this email address please"; public TestTextClassifier(Context context) { System.out.println("Classifier Test - Init"); manager = (TextClassificationManager) context.getSystemService(TEXT_CLASSIFICATION_SERVICE); classifier = manager.getTextClassifier(); } public void test() { new Thread(() -> { System.out.println("Classifier Test - \""+TEXT+"\" (Length: "+TEXT.length()+")"); System.out.println("Classifier Test - Suggest Selection"); int startIndex = 0; int endIndex = TEXT.length(); TextSelection selection = classifier.suggestSelection(TEXT, startIndex, endIndex, null); System.out.println("Classifier Test - Selection Returned ("+selection.getSelectionStartIndex()+" - "+selection.getSelectionEndIndex()+")"); System.out.println("Classifier Test - Classify Selection"); TextClassification classification = classifier.classifyText(TEXT, selection.getSelectionStartIndex(), selection.getSelectionEndIndex(), null); System.out.println("Classifier Test - Classification Returned ("+classification.getText()+")"); }).start(); } }
Logcat 日志
2021-12-06 11:29:16.889 9261-9261/com.not.my.package I/System.out: Classifier Test - Init 2021-12-06 11:29:16.894 9261-9261/com.not.my.package D/androidtc: Initializing SystemTextClassifier, type = System 2021-12-06 11:29:16.898 9261-9842/com.not.my.package I/System.out: Classifier Test - "my.email@gmail.com - detect this email address please" (Length: 53) 2021-12-06 11:29:16.898 9261-9842/com.not.my.package I/System.out: Classifier Test - Suggest Selection 2021-12-06 11:30:16.902 9261-9842/com.not.my.package W/androidtc: Timeout in ResponseReceiver.get(): textselection 2021-12-06 11:30:16.903 9261-9842/com.not.my.package I/System.out: Classifier Test - Selection Returned (0 - 53) 2021-12-06 11:30:16.903 9261-9842/com.not.my.package I/System.out: Classifier Test - Classify Selection 2021-12-06 11:31:16.910 9261-9842/com.not.my.package W/androidtc: Timeout in ResponseReceiver.get(): textclassification 2021-12-06 11:31:16.913 9261-9842/com.not.my.package I/System.out: Classifier Test - Classification Returned (null)
内容的提问来源于stack exchange,提问作者NewEndian
相关产品推荐
相关产品推荐

