Cara Membuat Aplikasi Pendeteksi Teks berbasis android dan dikombinasikan dengan Text To Speech
Selamat malam sahabat gratisan. pada malam ini admin ingin membagikan source code yang sudah admin buat mengikuti tutorial dari youtube. source code sudah admin modif dengan mengkombinasikan dengan source code Text To Speech.
Sebenarnya sahabat semua juga sanggup melaksanakan experimen sendiri dengan mencari tutorial di youtube ataupun dari sebuah website, yang lalu sahabat semua modif dan sahabat semua tambahkan sesuai dengan keinginan. aplikasi yang admin buat ini berasal dari tutorial orang lain yang lalu admin ikuti lalu admin tambahkan dengan source code yang lain nya. admin bukan seorang programmer, admin hanya seorang tukang intip tutorial lalu admin pelajari dan admin modifikasi sesuai dengan impian admin.
aplikasi ini admin buat memakai android studio dan library nya memakai google vision. sahabat semua sanggup mencobanya dengan cara mengikuti tutorial yang admin berikan di bawah ini:
- Disini admin anggap sahabat semua sudah membuat sebuah project baru
- Di bab activity_layout.xml sahabat semua tambahkan instruksi script dibawah ini
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" android:weightSum="5" tools:context="com.wayandev.deteksi.MainActivity"> <SurfaceView android:id="@+id/surfaceView" android:layout_width="match_parent" android:layout_height="0dp" android:layout_weight="4" /> <TextView android:id="@+id/text_view" android:layout_width="match_parent" android:layout_height="0dp" android:layout_margin="8dp" android:layout_weight="1" android:gravity="center" android:textStyle="bold" android:text="@string/txt_message" android:textColor="@android:color/black" android:textSize="20sp" /> </LinearLayout>
- Kemudian pada Grandle sahabat semua tambahkan library google vision "implementation 'com.google.android.gms:play-services-vision:15.0.1'". perhatikan gambar dibawah ini:
- Selanjutnya kita menuju MainActivity.java dan tambahkan script di bawah ini
package com.wayandev.deteksi; import android.Manifest; import android.content.pm.PackageManager; import android.speech.tts.TextToSpeech; import android.support.v4.app.ActivityCompat; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.util.Log; import android.util.SparseArray; import android.view.SurfaceHolder; import android.view.SurfaceView; import android.widget.TextView; import com.google.android.gms.vision.CameraSource; import com.google.android.gms.vision.Detector; import com.google.android.gms.vision.text.TextBlock; import com.google.android.gms.vision.text.TextRecognizer; import java.io.IOException; import java.util.Locale; public class MainActivity extends AppCompatActivity { SurfaceView mCameraView; TextView mTextView; CameraSource mCameraSource; TextToSpeech textToSpeech; private static final String TAG = "MainActivity"; private static final int requestPermissionID = 101; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); mCameraView = findViewById(R.id.surfaceView); mTextView = findViewById(R.id.text_view); //inisialisasi text to speech textToSpeech=new TextToSpeech(getApplicationContext(), new TextToSpeech.OnInitListener() { @Override public void onInit(int status) { if (status == TextToSpeech.SUCCESS) { int result = textToSpeech.setLanguage(Locale.US); if (result == TextToSpeech.LANG_MISSING_DATA || result == TextToSpeech.LANG_NOT_SUPPORTED) { Log.e("TTS", "This Language is not supported"); } else { speakOut(); } } else { Log.e("TTS", "Initilization Failed!"); } } }); startCameraSource(); } private void speakOut() { //Get the text typed String text = mTextView.getText().toString(); //If no text is typed, tts will read out 'You haven't typed text' //else it reads out the text you typed if (text.length() == 0) { textToSpeech.speak("You haven't text", TextToSpeech.QUEUE_FLUSH, null); } else { textToSpeech.speak(text, TextToSpeech.QUEUE_FLUSH, null); } } @Override public void onDestroy() { // Don't forget to shutdown tts! if (textToSpeech != null) { textToSpeech.stop(); textToSpeech.shutdown(); } super.onDestroy(); } private void startCameraSource() { //Create the TextRecognizer final TextRecognizer textRecognizer = new TextRecognizer.Builder(getApplicationContext()).build(); if (!textRecognizer.isOperational()) { Log.w(TAG, "Detector dependencies not loaded yet"); } else { //Initialize camerasource to use high resolution and set Autofocus on. mCameraSource = new CameraSource.Builder(getApplicationContext(), textRecognizer) .setFacing(CameraSource.CAMERA_FACING_BACK) .setRequestedPreviewSize(1280, 1024) .setAutoFocusEnabled(true) .setRequestedFps(2.0f) .build(); /** * Add call back to SurfaceView and check if camera permission is granted. * If permission is granted we can start our cameraSource and pass it to surfaceView */ mCameraView.getHolder().addCallback(new SurfaceHolder.Callback() { @Override public void surfaceCreated(SurfaceHolder holder) { try { if (ActivityCompat.checkSelfPermission(getApplicationContext(), Manifest.permission.CAMERA) != PackageManager.PERMISSION_GRANTED) { ActivityCompat.requestPermissions(MainActivity.this, new String[]{Manifest.permission.CAMERA}, requestPermissionID); return; } mCameraSource.start(mCameraView.getHolder()); } catch (IOException e) { e.printStackTrace(); } } @Override public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) { } @Override public void surfaceDestroyed(SurfaceHolder holder) { mCameraSource.stop(); } }); //Set the TextRecognizer's Processor. textRecognizer.setProcessor(new Detector.Processor<TextBlock>() { @Override public void release() { } /** * Detect all the text from camera using TextBlock and the values into a stringBuilder * which will then be set to the textView. */ @Override public void receiveDetections(Detector.Detections<TextBlock> detections) { final SparseArray<TextBlock> items = detections.getDetectedItems(); if (items.size() != 0) { mTextView.post(new Runnable() { @Override public void run() { StringBuilder stringBuilder = new StringBuilder(); for (int i = 0; i < items.size(); i++) { TextBlock item = items.valueAt(i); stringBuilder.append(item.getValue()); stringBuilder.append("\n"); // speakOut(); } mTextView.setText(stringBuilder.toString()); //dibaca secara berulang apabila ada text gres yang di detect speakOut(); } }); } } }); } } }
- Setiap sahabat semua Mengcopy Pastekan Script Diatas, sahabat semua perhatikan Package Name Id sahabat semua supaya tak error.
- Terakhir Kalian tambahkan Permission Kamera di Manifest sahabat semua.
- Untuk File String nya sanggup sahabat semua lihat dibawah ini
Selamat mencoba, supaya berhasil. Silahkan pahami sendiri maksud dari setiap instruksi diatas. Jika error nanti akan admin sediakan file eksklusif ke github nya, sahabat semua sanggup mendownloadnya eksklusif di github. Terima Kasih sudah berkunjung.