【发布时间】:2019-11-29 20:55:11
【问题描述】:
我在我的 android 应用程序中使用 ML Kit 文本识别。因此,用户使用 Paint 在屏幕上写了一些东西,然后我保存该图像并使用 Firebase ML Kit 文本识别对其进行处理。但是,当用户使用 PaintView 类中的 Paint.clear() 清除屏幕时,ML Kit 仍在识别写入的预览文本。我需要在这里重置什么。我正在使用文字转语音来说出书面文字。
paintView = (PaintView) findViewById(R.id.paintView);
DisplayMetrics metrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(metrics);
paintView.init(metrics);
speakTextButton = findViewById(R.id.button_speak);
clearTextButton = findViewById(R.id.button_clear);
Bitmap b = paintView.getDrawingCache();
textToSpeech = new TextToSpeech(getApplicationContext(), new TextToSpeech.OnInitListener() {
@Override
public void onInit(int status) {
textToSpeech.setLanguage(Locale.US);
}
});
clearTextButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
paintView.clear();
}
});
speakTextButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
paintView.setDrawingCacheEnabled(true); //saving image
Bitmap bitmap = paintView.getDrawingCache();
FirebaseVisionImage image = FirebaseVisionImage.fromBitmap(bitmap);
//create detector
FirebaseVisionTextRecognizer detector = FirebaseVision.getInstance()
.getOnDeviceTextRecognizer();
Task<FirebaseVisionText> result =
detector.processImage(image)
.addOnSuccessListener(new OnSuccessListener<FirebaseVisionText>() {
@Override
public void onSuccess(FirebaseVisionText firebaseVisionText) {
extractText(firebaseVisionText);
}
})
.addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception e) {
}
});
}
});
}
public void extractText(FirebaseVisionText result) {
resultText = result.getText();
for (FirebaseVisionText.TextBlock block: result.getTextBlocks()) {
for (FirebaseVisionText.Line line: block.getLines()) {
if(line != null) {
Log.v("LINETEXT", line.getText());
Float lineConfidence = line.getConfidence();
}
}
}
startTextToSeech(resultText);
}
public void startTextToSeech(String resultText) {
Log.v("QUOTE", resultText);
textToSpeech.speak(resultText, TextToSpeech.QUEUE_FLUSH,null, null);
}
【问题讨论】:
标签: android bitmap firebase-mlkit