当前位置: 首页 > wzjs >正文

无锡食品网站设计百度指数搜索榜度指数

无锡食品网站设计,百度指数搜索榜度指数,西安哪家装修公司最放心,搭建wordpress写不进去核心功能: 打开摄像头(可支持外接摄像头)检测翻页(后续考虑添加图像差异算法)拍照后用 识图自动用 TextToSpeech 朗读文字内容 📌 说明:使用了 CameraX(Android Jetpack)…

核心功能:

  • 打开摄像头(可支持外接摄像头)
  • 检测翻页(后续考虑添加图像差异算法)
  • 拍照后用 识图
  • 自动用 TextToSpeech 朗读文字内容

📌 说明:

  • 使用了 CameraX(Android Jetpack)处理摄像头输入

  • 使用 ML Kit 做文字识别

  • 使用 TextToSpeech 实现朗读

// Project: StoryBookReaderApp
// MainActivity.java — Android Studio 项目主类package com.example.storybookreaderapp;import android.Manifest;
import android.content.pm.PackageManager;
import android.os.Bundle;
import android.speech.tts.TextToSpeech;
import android.util.Log;
import android.view.SurfaceView;
import android.widget.Toast;import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;
import androidx.camera.core.CameraSelector;
import androidx.camera.core.ImageAnalysis;
import androidx.camera.core.ImageCapture;
import androidx.camera.core.ImageCaptureException;
import androidx.camera.core.ImageProxy;
import androidx.camera.lifecycle.ProcessCameraProvider;
import androidx.core.app.ActivityCompat;
import androidx.core.content.ContextCompat;import com.google.common.util.concurrent.ListenableFuture;
import com.google.mlkit.vision.common.InputImage;
import com.google.mlkit.vision.text.TextRecognition;
import com.google.mlkit.vision.text.TextRecognizer;import java.util.Locale;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;public class MainActivity extends AppCompatActivity {private static final int REQUEST_CODE_PERMISSIONS = 10;private static final String[] REQUIRED_PERMISSIONS = new String[]{Manifest.permission.CAMERA};private ExecutorService cameraExecutor;private ImageCapture imageCapture;private TextToSpeech tts;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);SurfaceView view = new SurfaceView(this);setContentView(view);if (allPermissionsGranted()) {startCamera();} else {ActivityCompat.requestPermissions(this, REQUIRED_PERMISSIONS, REQUEST_CODE_PERMISSIONS);}cameraExecutor = Executors.newSingleThreadExecutor();tts = new TextToSpeech(this, status -> {if (status != TextToSpeech.ERROR) {tts.setLanguage(Locale.US);}});}private boolean allPermissionsGranted() {for (String permission : REQUIRED_PERMISSIONS) {if (ContextCompat.checkSelfPermission(this, permission) != PackageManager.PERMISSION_GRANTED) {return false;}}return true;}private void startCamera() {ListenableFuture<ProcessCameraProvider> cameraProviderFuture = ProcessCameraProvider.getInstance(this);cameraProviderFuture.addListener(() -> {try {ProcessCameraProvider cameraProvider = cameraProviderFuture.get();imageCapture = new ImageCapture.Builder().build();ImageAnalysis imageAnalysis = new ImageAnalysis.Builder().build();imageAnalysis.setAnalyzer(cameraExecutor, image -> {detectPageTurn(image);image.close();});CameraSelector cameraSelector = CameraSelector.DEFAULT_BACK_CAMERA;cameraProvider.unbindAll();cameraProvider.bindToLifecycle(this, cameraSelector, imageCapture, imageAnalysis);} catch (Exception e) {Log.e("CameraX", "Binding failed", e);}}, ContextCompat.getMainExecutor(this));}private void detectPageTurn(ImageProxy image) {takePhotoAndRead();}private void takePhotoAndRead() {imageCapture.takePicture(ContextCompat.getMainExecutor(this), new ImageCapture.OnImageCapturedCallback() {@Overridepublic void onCaptureSuccess(@NonNull ImageProxy image) {InputImage inputImage = InputImage.fromMediaImage(image.getImage(), image.getImageInfo().getRotationDegrees());TextRecognizer recognizer = TextRecognition.getClient();recognizer.process(inputImage).addOnSuccessListener(result -> {String text = result.getText();tts.speak(text, TextToSpeech.QUEUE_FLUSH, null, null);}).addOnFailureListener(e -> Toast.makeText(MainActivity.this, "Text recognition failed", Toast.LENGTH_SHORT).show());image.close();}@Overridepublic void onError(@NonNull ImageCaptureException exception) {Log.e("CameraX", "Capture failed", exception);}});}@Overrideprotected void onDestroy() {if (tts != null) {tts.stop();tts.shutdown();}cameraExecutor.shutdown();super.onDestroy();}@Overridepublic void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {if (requestCode == REQUEST_CODE_PERMISSIONS) {if (allPermissionsGranted()) {startCamera();} else {Toast.makeText(this, "Permissions not granted", Toast.LENGTH_SHORT).show();finish();}}}
} // End of class
http://www.dtcms.com/wzjs/487389.html

相关文章:

  • 建动画网站需要多少钱软件外包公司有前途吗
  • 重庆外贸网站建设情感式软文广告
  • 西宁 网站建设阿里云注册域名
  • 无线昆明官方网站下载地图导航手机版免流量费用
  • seo推广关键词公司南京seo报价
  • 企业形象网站建设意义seo教程seo教程
  • 狮山网站制作b站怎么推广自己的视频
  • 山西网络公司网站建设企业培训方案
  • 免费校园网站建设广告投放数据分析
  • 上海seo公司排名杭州seo服务公司
  • 免费书画网站模板百度免费
  • 汕尾招聘 网站建设合伙人营销策略方案
  • 做网站需要实名认证吗百度关键词优化平台
  • 网站建设外文文献翻译saas建站平台
  • 云南做网站的公司有哪些谷歌seo是什么意思
  • 互联科技 行业网站网络开发
  • 网站外接泉州全网营销推广
  • 伊宁网站建设360优化大师最新版下载
  • 企拓客app靠谱吗手机端seo
  • 咸阳做网站公司苏州百度推广服务中心
  • 集团主题 wordpress优化培训学校
  • 微信里的商家链接网站怎么做的baidu百度首页
  • 中山河北建设信息网站seo标签优化
  • 做网站属于什么备案淘宝指数查询
  • 三层架构做网站还是系统上海百度推广公司排名
  • 如何做网站互链规则seo品牌优化
  • 网站建设找推推蛙湘潭网站设计
  • wordpress电话按钮站长工具seo综合查询可以访问
  • wordpress仿唯品会seo营销名词解释
  • 温州平阳县企业网站搭建推荐百度快照优化公司