Aplikasi yang membuat HP bisa Ngomong

Aplikasi yang membuat HP bisa Ngomong - Hallo sahabat Kumpulan Aplikasi Android Tercanggih Pilihan Yang Paling Berguna, Pada Artikel yang anda baca kali ini dengan judul Aplikasi yang membuat HP bisa Ngomong, kami telah mempersiapkan artikel ini dengan baik untuk anda baca dan ambil informasi didalamnya. mudah-mudahan isi postingan Artikel android indonesia, Artikel belajar android bahasa indonesia, yang kami tulis ini dapat anda pahami. baiklah, selamat membaca.

Judul : Aplikasi yang membuat HP bisa Ngomong
link : Aplikasi yang membuat HP bisa Ngomong

Baca juga


Aplikasi yang membuat HP bisa Ngomong

Sejak android 1.6 telah ada TTS(text to speech) engine dalam android sistim. TTS adalah engine suara manusia yang bisa membaca apa saja yang tertulis di layar HP. Saya sangat tertarik karena teknologinya sederhana untuk di implementasikan namun akan sangat berpengaruh besar bagi mereka yang ingin belajar bahasa inggris sendiri(tanpa guru).
Di lain pihak, guru2 bahasa inggris di Indonesia kebanyakan sangat pintar dalam hal grammar, bahkan melebihi mereka yang lahir dan di besarkan di Inggris. Di Indonesia masih membutuhkan banyak guru bahasa Inggris yang pandai dalam pronunciation(begitukah tulisan-nya?)... mudah2-an aplikasi kecil ini bisa membantu bagi yang perlu di bantu.


Untuk membangun aplikasi ini tak terlalu rumit karena tidak banyak user interface(UI)-nya.
Pada gambar di atas saya hanya membutuhkan 4 buah UI ... 2 di antaranya yaitu nama aplikasi 'Hp_Bisa_Ngomong' dan tulisan  paling bawah pada layar di gambar di atas, keduanya adalah tidak ada logika programnya. Yang ada logika programnya adalah hanya kotak tempat untuk ketik kata-kata inggris... dan tombol 'Baca' yang berguna untuk menyuruh HP membaca apa yang kita tulis
Silahkan baca2 disini untuk konsep UI dengan xml

Berikut adalah main.xml sebagai tampang depan dari aplikasi ini agar terlihat seperti gambar di atas. Tapi sebagai UI designer anda boleh design yang lebih indah dari yang saya buat di atas. Di sini saya hanya berkepentingan pada cara kerjanya saja daripada tampangnya.

 <linearlayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_height="fill_parent"
android:layout_width="fill_parent"
android:orientation="vertical" >

<edittext
android:id="@+id/tempat_ketik"
android:layout_height="wrap_content"
android:layout_width="fill_parent"
android:text="">
</edittext>

<button
android:id="@+id/untuk_di_pencet"
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:text="@string/baca">
</button>

<textview
android:id="@+id/pesan"
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:text="@string/pesan"
android:textsize="15sp">
</textview>
</linearlayout>
Kog cuma tiga object?... anda benar, walau di layar terlihat 4 object, tapi di kode xml di atas cuma ada 3 obyek yaitu 'tempat_ketik' yang di buat dari widget bernama EditText, dan tombol 'untuk_di_pencet' di buat dari widget yang bernama 'Button', serta 'pesan di buat dari widget 'TextView'
Sedangkan nama aplikasinya Hp_bisa_ngomong akan di pasang di halaman 'strings.xml' melalui 'AndroidManifest.xml'

AndroidManifest adalah spesial untuk android struktur, di AndroidManifest akan di tempatkan printah2 yang mencakup 'application wide'. Saya tidak tahu apa bahasa indonesia yang cocok untuk 'application wide' tapi yang saya maksudkan di sini adalah printah2 android yang menyangkut aspek menyeluruh dan menyangkut pengaruh aspek luar dari sebuah aplikasi. Aspek luar misalnya koneksi ke internet... aspek luar juga termasuk logo dan nama aplikasi dan banyak lagi aspek luar lainnya tapi di luar scope tulisan ini. Yang jelas bahwa semua aspek seperti itu akan di pasang di halaman androidManifest.
Logo dan nama aplikasi di pasang di AndroidManifest (sebagai aspek luar) karena keduanya bisa menempatkan diri di tempat2 berbeda pada folder di dalam HP, misalnya sebuah aplikasi berada di sebuah folder A atau di foder B tapi aplikasi tersebut bisa juga di drag dan di drop di halaman depan(Homepage). Yang di drag dan drop itu adalah logo dan nama aplikasi, bukan seluruh aplikasi, nanti logo dan nama aplikasi bikin back link sendiri ke aplikasinya. Kalau aplikasinya yang harus di drag maka helaman depan hanya di penuhi satu aplikasi saja, itupun bahkan tak cukup.

Berikut adalah isi dari AndroidManifest.xml untuk aplikasi ini
 
<manifest
android:versioncode="1"
android:versionname="1.0"
package="com.vik_sintus.projects.hpNgomong" xmlns:android="http://schemas.android.com/apk/res/android">

<uses-sdk android:minsdkversion="4" android:targetsdkversion="1.6"></uses-sdk>

<application android:icon="@drawable/logotts" android:label="@string/app_name">
<activity android:label="@string/app_name" android:name=".HpBisaNgomong">
<intent-filter>
<action android:name="android.intent.action.MAIN">

<category android:name="android.intent.category.LAUNCHER">
</category></action></intent-filter>
</activity>
</application></manifest>
Android:versionCode dan android:versionName berguna untuk rekam jikalau ada aplikasi versi baru untuk dapat di download oleh pengguna, sehingga ia otomatis menghapus versi lama dan di ganti versi baru tanpa membebani resource HP pengguna. Tentunya ketika membuat versi baru, developer harus ingat untuk ganti nama atau nomor yang terkandung dalam kedua object tsb.

android:minSdkVersion dan android:targetSdkVersion untuk tingkatan2 android apa saja yang menjadi tujuan aplikasi yang kita bangun. Sebagai acuan, ushakan untuk memilih android yang paling tua sebagai sasaran, karena jikalau aplikasinya bisa bekerja di android tua bangka maka akan bekerja pula di android moderen.
Hanya saja android versi lama tidak ada (kurang) hal yang mewah2 seperti screen hidup dan hal mewah lain-nya, namun proses kerja mendasar di antara android lama dan android baru masih sama. Jadi kalau mau develop aplikasi mewah maka harus pakai android versi baru pula dan memaksa pengguna untuk meninggalkan android versi lama dan membeli yang versi baru(tegahnya di kau).

@drawable/logotts katakan pada android bahwa logo yang bernama logotts berada di(@) folder yang bernama drawable. Proses memilih nama harus memiliki logika anda sendiri yah, logotts(logoTextToSpeech) adalah logika saya sendiri karena saya punya banyak logo maka logo yang ini saya sebut 'logotts'

android:label="@string/app_name" ada dua android lable, satunya di bagian aplication dan yang lain berada di activity. Yang berada aplication akan muncul di luar layar HP, sedangkan yang lain akan muncul di dalam layar HP bersama logonya.
 @string/app_name adalah untuk menunjukan kepada android di mana tempat simpan app_name, dalam hal ini ia berada di(@) file yang bernama strings.xml

android:name=".HpBisaNgomong" adalah nama class utama yang bekerja untuk melakukan aktivitas utama agar bekerja denagn logika untuk mencapai tujuan pembuatan aplikasi ini, itulah sebabnya mengapa dia berada dalam tag activity

<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" /> keduanya adalah printah internal tak perlu di pikirin untuk sekarang.

Pada halaman main.xml di atas ada beberapa bagian yang mengarahkan ke @string itu maksudnya bahwa isinya berada di halaman strings.xml oleh karena itu maka kita harus membuat halaman strings.xml sbb:


Hp_Bisa_Ngomong!
silahkan tulis kata-kata bahasa inggris yang mau di baca oleh hp pada kotak di atas,
dan tekan tombol Baca. Agar terdengar lebih jelas silahkan letakan koma di antara kata-kata

Baca

Perhatikan ketiga string object yang pada kode di atas, ketiganya muncul di layar HP... self explanatory-lah....sampai disini maka selesailah suadah pembuatan tampang/UI dari aplikasi ini

Sekarang mari kita membangun cara kerja dan logika di balik aplikasi ini dengan menulis sebuah class utama yang bekerja sebagai otak untuk menjalankan aplikasi.
Sesuai nama aplikasi maka saya akan menamakan class utamanya HpBisaNgomong.java
Kita tidak perlu tulis banyak kode java untuk membuat HpBisaNgomong agar dapat bekerja dengan baik, hal tersebut sangat membantu orang seperti saya yang masih rabun dengan logika java.
Untuk membangun aplikasi ini kita hanya mengimport, mendeklarasikan dan mengimplementasikan kode java dan class java yang telah ada di setiap HP yang menggunakan android sistim. Banyak class didalam sistim android yang duduk manis, menunggu kalau suatu hari ada yang ingin mengimplementasikan-nya.... tapi itulah kendalanya, kita/saya tidak tahu banyak bagaimana untuk mengimplementasikan-nya. ... belajar jalan terus man

Class utama yang membuat HP android bisa membaca adalah bernama TextToSpeech , jadi kita tinggal deklarasikan TextToSpeech dan dua objects lain seperti terlihat pada gambar di atas. Dua benda lain itu adalah sebuah kotak untuk isi tulisan dan sebuah tombol yang saya beri nama 'Baca'.

class HpBisaNgomong.java ini juga butuh gandengan dengan class Activity serta mengimplementasikan class OnInitListener

package com.vik_sintus.projects.hpNgomong;

public class HpBisaNgomong extends Activity implements OnInitListener {

private int KODE_UNTUK_PRIKSA_TTS = 0;
private TextToSpeech hpMembaca;
private EditText kata_kata_yg_mau_di_baca;
private Button tombol;
/** kode java selengkapnya akan di tempatkan di sini */
Selain deklarasi 3 obyek utama yang kita butuhkan , aplikasi ini juga membutuhkan satu data bertipe integer(int) untuk melakukan pengecekan terhadap data di dalam kata_kata_yang_mau_di_baca

Kode di atas berisikan beberapa class siluman, antara lain Activity, OnInitListener,  TextToSpeech, EditText,  Button. Di sebut siluman karena tak jelas sumbernya darimana, oleh karena itu maka kode tersebut akan di anggap salah oleh API (ada warning-salah). Dan untuk menjadi benar maka class siluman itu harus di import terlebih dahulu ke dalam halaman HpBisaNgomong.java  agar ia dapat di konstruksi lebi lanjut.
Kode java akan menjadi benar dan nampak sbb, setelah class-class siluman itu terimport
package com.vik_sintus.projects.hpNgomong;

import android.app.Activity;
import android.os.Bundle;
import android.speech.tts.TextToSpeech;
import android.speech.tts.TextToSpeech.OnInitListener;
import android.widget.Button;
import android.widget.EditText;

public class HpBisaNgomong extends Activity implements OnInitListener {

private int KODE_UNTUK_PRIKSA_TTS = 0;
private TextToSpeech hpMembaca;
private EditText kata_kata_yg_mau_di_baca;
private Button tombol;
/** kode java selengkapnya akan di tempatkan di sini */
Setelah deklarasi semua obyek-obyek yang kita butuhkan di class ini, maka di lanjutkan dengan memulai proses kerja java, dengan cara ciri khas android
@Override
public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);
setContentView(R.layout.main);
kata_kata_yg_mau_di_baca = (EditText) findViewById(R.id.tempat_ketik);
tombol = (Button) findViewById(R.id.untuk_di_pencet);

Silahkan baca tentang @override di http://docs.oracle.com/javase/tutorial/java/javaOO/annotations.html

public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
adalah cara android untuk membuat sesuatu. Disini android menyatakan, hey ketika membuat/menunjukan aplikasi ke layar HP tunjukan isinya menggunakan main.xml yang berlokasi R.layout.main .
 Kotak yang telah saya deklarasikan bernama kata_kata_yg_mau_di_baca adalah terbuat dari widget  EditText dapat di temukan di file R dan beridentitas tempat_ketik.

Perlu di ketahui bahwa kita sedang berbicara menjelaskan tujuan kita membuat aplikasi kepada komputer. Berbeda dengan manusia yang punya logika, komputer memang pintar tapi ia tak punya logika iapun bisu, tuli dan tak punya perasaan. Oleh karena itu kita harus jelaskan kepadanya sejelas-jelasnya sampai dia paham apa yang kita maksudkan.

Oh mister komputer yang bisu, tuli dan tak punya perasaan, masih ingatkah engkau private Button tombol yang telah saya deklarasikan sebelumnya? tombol yang saya maksudkan adalah seperti tombol = (Button) findViewById(R.id.untuk_di_pencet); yaitu tombol yang terbuat dari widget Button, please...mr komputer silahkan melihatnya di file R yang identitas-nya untuk_di_pencet
Setelah susah paya untuk menjelaskan itu kepada mister komputer eeehhh, belaiu masih juga tak paham tombol itu di pakai untuk apa?.... iyalahhh untuk di pencet dong. Sebelum selesai di jawab, mr komputernya bertanya, tombol-nya sudah siap di pencet enggak?
jadi sebelum menyuruh mr komputer untuk pencet tombol maka kita harus siapkan tombolnya agar terlihat hidup ketika di sentuh dan telah siap untuk di pencet.berikut adalah kode untuk membuat tombol siap dan bersedia di pencet  tombol.setOnClickListener(new OnClickListener() dan sebelum mr komputer bertanya untuk apa tombol di pencet maka kita siapkan ini

@Override
public void onClick(View v) {
String kata_kata = kata_kata_yg_mau_di_baca.getText().toString();
if (kata_kata!=null && kata_kata.length()>0) {
Toast.makeText(HpBisaNgomong.this, "Ia baca: " + kata_kata, Toast.LENGTH_LONG).show();
hpMembaca.speak(kata_kata, TextToSpeech.QUEUE_ADD, null);
}
}
});
Kode di atas mengatakan, pada waktu pencet tombol, ambill kata-kata dari dalam kata_kata_yang_mau_di_baca dan di ubah jadi string agar mudah di proses lebih lanjut. Dan kalau kata_kata adalah bukan kosong dan atau jikalau panjang(jumlah) kata-kata lebih besar dari nol maka tunjukan pesan pop-up seperti kode berikut.
Toast.makeText(HpBisaNgomong.this, "Ia baca: " + kata_kata, Toast.LENGTH_LONG).show();
hpMembaca.speak(kata_kata, TextToSpeech.QUEUE_ADD, null);

Pada waktu suara HP membaca tulisan,  pada waktu hampir bersamaan pula pop-up akan muncul dengan menunjukan tulisan yang sama pula . Ini cukup penting untuk menjaga kemungkinan jangan sampai HP-nya membaca sesuatu yang bukan kata-kata yang kita ketik. Hal itu bisa saja menunjukan ada bug di aplikasi, tapi aplikasi kecil seperti ini hampir tak mungkin ada bug.

Sebelum saya lupa ada baiknya saya pasang dulu penggalan kode di atas kedalam HpBisaNgomong.java dan import semua class-calss yang di butuhkan

package com.vik_sintus.projects.hpNgomong;

import java.util.Locale;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.speech.tts.TextToSpeech;
import android.speech.tts.TextToSpeech.OnInitListener;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;

public class HpBisaNgomong extends Activity implements OnInitListener {

private int KODE_UNTUK_PRIKSA_TTS = 0;
private TextToSpeech hpMembaca;
private EditText kata_kata_yg_mau_di_baca;
private Button tombol;

@Override
public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);
setContentView(R.layout.main);
kata_kata_yg_mau_di_baca = (EditText) findViewById(R.id.tempat_ketik);
tombol = (Button) findViewById(R.id.untuk_di_pencet);
tombol.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
String kata_kata = kata_kata_yg_mau_di_baca.getText().toString();
if (kata_kata!=null && kata_kata.length()>0) {
Toast.makeText(HpBisaNgomong.this, "Ia baca: " + kata_kata, Toast.LENGTH_LONG).show();
hpMembaca.speak(kata_kata, TextToSpeech.QUEUE_ADD, null);
}
}
});
/** kode java selengkapnya akan di tempatkan di sini */
Warning: komputer adalah, buta,tuli dan mati rasa.
Sejauh ini sudah pusing jelasin berbagai langkah agar aplikasi kita bisa berjalan, tapi komputer masih juga mau tanya emangnya tujuan buat aplikasi ini untuk apa? maka untuk itu mari kita jelaskan lagi kepada yang mulia mr komputer.
Oleh karena mr komputer tanya tujuan maka kita perlu jasa class Intent untuk menjelaskan hal itu kepadanya. Kebetulan intent dan tujuan, secara literal adalah sama.
Intent priksa_TTS = new Intent();
priksa_TTS.setAction(TextToSpeech.Engine.ACTION_CHECK_TTS_DATA);
startActivityForResult(priksa_TTS, KODE_UNTUK_PRIKSA_TTS);

}
Kode di atas menjelaskan kepada mr komputer bahwa kita ingin dengar_textospeech_di_hp. yaitu mendengar apa yang di lihat oleh TextToSpeech Engine di dalam kotak data(kata-kata_yang_mau_di_baca) tentunya setelah engine check kebenaran dan keberadaan-nya di dalam kotak tsb dengan kode:
dengar_tts_di_hp.setAction(TextToSpeech.Engine.ACTION_CHECK_TTS_DATA)

Metode onActivityResult berikut adalah bekerja persis seperti namanya yaitu memeriksa hasil dari activity, jikalau kata-kata yang di ambil dari dalam kotak adalah benar, dan kebenaran-nya telah di cek dengan TextToSpeech.Engine.CHECK_VOICE_DATA_PASS maka buatlah instance untuk mesin TTS. Tapi kalau ada kesalahan dengan berbagai alasan, maka silahkan di_pasang_lagi tujuan(Intent) dari aplikasi ini
@Override
protected void onActivityResult(int ambilKataKata, int hasilDariKataKata, Intent data) {
if (ambilKataKata == KODE_UNTUK_PRIKSA_TTS) {
if (hasilDariKataKata == TextToSpeech.Engine.CHECK_VOICE_DATA_PASS) {
// kalau kode priksa berhasil, maka buatlah instance tts
hpMembaca = new TextToSpeech(this, this);
}
else {
// kalau datanya hilang dgn berbagai alasan, maka data tts di pasang lagi
Intent di_pasang_lagi = new Intent();
di_pasang_lagi.setAction(TextToSpeech.Engine.ACTION_INSTALL_TTS_DATA);
startActivity(di_pasang_lagi);
}
}

}
Kode berikut untuk memasang kondisi2 lain dari aplikasi
Kalau kondisinya sukses maka tinggalkan pesan sukses, kalau tidak maka tinggalkan pesan sebaliknya.
Selain untuk priksa kondisi, metode onInit adalah juga tempat untuk memasang bahasa apa yang ingin di bacakan oleh HP anda. Pada aplikasi ini saya pasang bahasa Inggris UK dengan kode hpMembaca.setLanguage(Locale.UK); Bahasa lain yang di dukung oleh aplikasi ini adalah Prancis, Jerman, Italia, spanyol
@Override
public void onInit(int kondisi) {
hpMembaca.setLanguage(Locale.UK);
if (kondisi == TextToSpeech.SUCCESS) {
Toast.makeText(HpBisaNgomong.this,
"TextToSpeech engine_nya telah di pasang", Toast.LENGTH_LONG).show();
}
else if (kondisi == TextToSpeech.ERROR) {
Toast.makeText(HpBisaNgomong.this,
"walah ada kesalahan saat pasang TextToSpeech engine", Toast.LENGTH_LONG).show();
}
}

Berikut adalah keseluruhan dari kode HpBisaNgomong.java

package com.vik_sintus.projects.hpNgomong;

import java.util.Locale;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.speech.tts.TextToSpeech;
import android.speech.tts.TextToSpeech.OnInitListener;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;
/** tak boleh menggunakan kode ini untuk meraup keuntungan,
kecuali di bagi dengan saya wakkkkaakk... seriously boleh pakai
untuk kepentingan sharing ilmu...kalau ada yang protes
silahkan protes ke vik.sintus@gmail.com */
public class HpBisaNgomong extends Activity implements OnInitListener {

private int KODE_UNTUK_PRIKSA_TTS = 0;

private TextToSpeech hpMembaca;

private EditText kata_kata_yg_mau_di_baca;
private Button tombol;

@Override
public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);
setContentView(R.layout.main);
kata_kata_yg_mau_di_baca = (EditText) findViewById(R.id.tempat_ketik);
tombol = (Button) findViewById(R.id.untuk_di_pencet);
// 1 baris berikut agar tombol dapat di klik
tombol.setOnClickListener(new OnClickListener() {
@Override
// pada waktu tombol di klik
public void onClick(View v) {
// suara akan keluar membaca kata-kata yang ada
String kata_kata = kata_kata_yg_mau_di_baca.getText().toString();
if (kata_kata!=null && kata_kata.length()>0) {
// bersamaan dengan keluarnya suara, kata-kata yang di baca juga akan
// muncul sejenak menggunakan jasa widget Toast, mirip dengan pop-up
Toast.makeText(HpBisaNgomong.this, "Ia baca: " + kata_kata, Toast.LENGTH_LONG).show();
hpMembaca.speak(kata_kata, TextToSpeech.QUEUE_ADD, null);
}
}
});
// priksa dulu apakah sudah ada engine TTS di HP
Intent priksa_TTS = new Intent();
priksa_TTS.setAction(TextToSpeech.Engine.ACTION_CHECK_TTS_DATA);
startActivityForResult(priksa_TTS, KODE_UNTUK_PRIKSA_TTS);

}
@Override
protected void onActivityResult(int ambilKataKata, int hasilDariKataKata, Intent data) {
if (ambilKataKata == KODE_UNTUK_PRIKSA_TTS) {
if (hasilDariKataKata == TextToSpeech.Engine.CHECK_VOICE_DATA_PASS) {
// kalau kode priksa berhasil, maka buatlah instance tts
hpMembaca = new TextToSpeech(this, this);
}
else {
// kalau belum ada TTS di HP maka minta di pasang
Intent pasang_TTS = new Intent();
pasang_TTS.setAction(TextToSpeech.Engine.ACTION_INSTALL_TTS_DATA);
startActivity(pasang_TTS);
}
}

}
// berikut untuk pesan, apakah kondisi pemasangan TTS berhasil atau tidak

@Override
public void onInit(int kondisi) {
// 1 baris berikut untuk logat inggris
hpMembaca.setLanguage(Locale.UK);
if (kondisi == TextToSpeech.SUCCESS) {
Toast.makeText(HpBisaNgomong.this,
"TextToSpeech engine_nya telah di pasang", Toast.LENGTH_LONG).show();
}
else if (kondisi == TextToSpeech.ERROR) {
Toast.makeText(HpBisaNgomong.this,
"walah ada kesalahan saat pasang TextToSpeech engine", Toast.LENGTH_LONG).show();
}
}

}

Silahkan install aplikasi ini dari android market


Demikianlah Artikel Aplikasi yang membuat HP bisa Ngomong

Sekianlah artikel Aplikasi yang membuat HP bisa Ngomong kali ini, mudah-mudahan bisa memberi manfaat untuk anda semua. baiklah, sampai jumpa di postingan artikel lainnya.

Anda sekarang membaca artikel Aplikasi yang membuat HP bisa Ngomong dengan alamat link https://aplikasijalantikus.blogspot.com/2011/11/aplikasi-yang-membuat-hp-bisa-ngomong.html

0 Response to "Aplikasi yang membuat HP bisa Ngomong"

Posting Komentar