(Đồ án tốt nghiệp) xe điều khiển bằng giọng nói và hỗ trợ trẻ em học qua trò chơi trên điện thoại android

121 12 0
(Đồ án tốt nghiệp) xe điều khiển bằng giọng nói và hỗ trợ trẻ em học qua trò chơi trên điện thoại android

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT TP.HCM KHOA ĐÀO TẠO CHẤT LƯỢNG CAO NGÀNH CNKT ĐIỆN TỬ TRUYỀN THÔNG ĐỒ ÁN TỐT NGHIỆP ĐỀ TÀI: XE ĐIỀU KHIỂN BẰNG GIỌNG NÓI VÀ HỖ TRỢ TRẺ EM HỌC QUA TRÒ CHƠI TRÊN ĐIỆN THOAI ANDROD GVHD : NGUYỄN VĂN HIỆP SVTH : NGÔ PHƯƠNG NAM MSSV : 13141515 SVTH : LÊ VĂN TÀI MSSV : 13141286 SKL004938 Tp Hồ Chí Minh, tháng 07/2017 CỘNG HOÀ XÃ HỘI CHỦ NGHĨA VIỆT NAM Độc lập – Tự – Hạnh Phúc ******* Tp Hồ Chí Minh, ngày 05 tháng 07 năm 2017 NHIỆM VỤ ĐỒ ÁN TỐT NGHIỆP Họ tên sinh viên: Ngô Phƣơng Nam Lê Văn Tài MSSV: 13141515 MSSV: 13141286 Ngành: CNKT Điện tử Truyền Thông Lớp: 13141CLDT1 Giảng viên hƣớng dẫn: ThS.Nguyễn Văn Hiệp ĐT: 0909 960000 Ngày nhâṇ đề tài: Ngày nộp đề tài: Tên đề tài : Xe điều khiển giọng nói hỗ trợ trẻ em học qua trò chơi điện thoại Android Các số liệu, tài liệu ban đầu: Nội dung thƣcc̣ hiêṇ đề tài: Sản phẩm: GIẢNG VIÊN HƢỚNG DẪN CỘNG HOÀ XÃ HỘI CHỦ NGHĨA VIỆT NAM Độc lập – Tự – Hạnh Phúc ******* ́ PHIÊU NHẬN XÉT CỦA GIÁO VIÊN HƢỚNG DẪN Họ tên Sinh viên: Ngô Phƣơng Nam Lê Văn Tài Ngành: CNKT Điện tử, Truyền thông Tên đề tài: Xe điều khiển giọng nói hỗ trợ trẻ em học qua trò chơi điện thoại Android Họ tên Giáo viên hƣớng dẫn: ThS Nguyễn Văn Hiệp NHẬN XÉT Về nội dung đề tài & khối lƣợng thực hiện: Ƣu điểm: Khuyết điểm: Đề nghị cho bảo vệ hay không? Đánh giá loại: Điểm:……………….(Bằng chữ: ) thán g Giáo viên hƣớng dẫn Tp HồChí Minh, ngày (Ký & ghi rõ họ tên) năm 20… CỘNG HOÀ XÃ HỘI CHỦ NGHĨA VIỆT NAM Độc lập – Tự – Hạnh Phúc ******* ́ PHIÊU NHẬN XÉT CỦA GIÁO VIÊN PHẢN BIỆN Họ tên Sinh viên: Ngô Phƣơng Nam Lê Văn Tài Ngành: CNKT Điện tử, Truyền thông Tên đề tài: Xe điều khiển giọng nói hỗ trợ trẻ em học qua trò chơi điện thoại Android Họ tên Giáo viên phản biện: NHẬN XÉT Về nội dung đề tài & khối lƣợng thực hiện: Ƣu điểm: Khuyết điểm: Đề nghị cho bảo vệ hay không? Đánh giá loại: Điểm:……………….(Bằng chữ: ) Tp Hồ Chí Minh, ngày tháng Giáo viên phản biện (Ký & ghi rõ họ tên) năm 20 ĐỒ ÁN TỐT NGHIỆP LỜI CẢM ƠN Để hoàn thành đồ án tốt nghiệp này, lời chúng em xin bày tỏ lòng biết ơn sâu sắc đến thầy ThS Nguyễn Văn Hiệp, tận tình hƣớng dẫn suốt trình chúng em thực đồ án Chúng em xin chân thành cảm ơn quý thầy, cô trƣờng Đại Học Sƣ Phạm Kỹ Thuật TP.HCM, đặc biệt thầy cô khoa Đào tạo chất lƣợng cao, nhiệt tình giúp đỡ, truyền đạt kiến thức suốt trình học tập nhóm trƣờng Vốn kiến thức đƣợc tiếp thu q trình học tập khơng tảng cho trình thực đồ án tốt nghiệp mà hành trang quý báu cho nghiệp nhóm sau Bên cạnh đó, chúng tơi xin cảm ơn hỗ trợ giúp đỡ bạn bè thời gian học tập Trƣờng Đại học Sƣ phạm Kỹ thuật Thành phố Hồ Chí Minh q trình hồn thành luận văn tốt nghiệp Cuối cùng, chúng conchân thành cảm ơn động viên hỗ trợ gia đình suốt thời gian học tập Đặc biệt, chúng xin gửi lời cảm ơn trân trọng đến cha mẹ, ngƣời sinh nuôi dƣỡng chúng nên ngƣời Sự quan tâm, lo lắng hy sinh lớn lao cha mẹ động lực cho chúng cố gắng phấn đấu đƣờng học tập Xin chân thành cảm ơn! Ngƣời thực đề tài Ngô Phƣơng Nam Lê Văn Tài i ĐỒ ÁN TỐT NGHIỆP TÓM TẮT Hiện nay, điện thoại động thông minh (Smart Phone) ngày phát triển phổ biến giới.Việc áp dụng điện thoại thông minh để hỗ trợ trẻ em việc học tập ngày đƣợc quan tâm; thêm vào việc lập trình ứng dụng điện thoại vào sản phẩm công nghệ phổ biến dễ tiếp cận hết Với mục đích giúp trẻ em Việt Nam tiếp cận sản phẩm công nghệ việc hỗ trợ học tập vui chơi, đồng thời chúng em muốn tìm hiểu sâu mảng lập trình ứng dụng để tạo sản phẩm kết hợp với sản phẩm cơng nghệ nhƣ robot, mơ hình xe,…Dựa vào kiến thức học mơn lập trình Android chuyên ngành Điện tử công nghiệp, chúng em tạo đƣợc mơ hình xe thơng minh điều khiển thơng qua điện thoại Android Trong q trình thực đề tài ―Xe điều khiển giọng nói hỗ trợ trẻ em học qua trò chơi điện thoại Android”, nhóm thực đề tài cố gắng hoàn thành nhiệm vụ đặt thời hạn nhƣng hạn chế kiến thức nên chắn không tránh khỏi thiếu sót, hạn chế, mong q Thầy/Cơ bạn sinh viên thơng cảm Nhóm biết ơn mong nhận đƣợc ý kiến đóng góp q Thầy/Cơ bạn sinh viên đề tài ii ĐỒ ÁN TỐT NGHIỆP speech = SpeechRecognizer.createSpeechRecognizer(this); speech.setRecognitionListener(this); recognizerIntent = new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH); recognizerIntent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_PREFERENCE, Locale.getDefault().getLanguage().trim()); recognizerIntent.putExtra(RecognizerIntent.EXTRA_CALLING_PACKAGE,this.getPackageName ()); recognizerIntent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL, RecognizerIntent.LANGUAGE_MODEL_FREE_FORM); recognizerIntent.putExtra("android.speech.extra.DICTATION_MODE", true); recognizerIntent.putExtra(RecognizerIntent.EXTRA_PARTIAL_RESULTS, true); recognizerIntent.putExtra(RecognizerIntent.EXTRA_SPEECH_INPUT_COMPLETE_SILENCE_LENGT H_MILLIS, 50); recognizerIntent.putExtra(RecognizerIntent.EXTRA_MAX_RESULTS, 3); } public void BatBluetooth(){ if (!myBluetoothAdapter.isEnabled()){ Toast.makeText(getApplicationContext(),R.string.blon,Toast.LENGTH_LONG).show(); myBluetoothAdapter.enable(); } else{ Toast.makeText(getApplicationContext(),R.string.blon,Toast.LENGTH_LONG).show(); } } final BroadcastReceiver bReceiver= new BroadcastReceiver() { public void onReceive(Context context,Intent intent){ String action=intent.getAction(); BluetoothDevice device=intent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE); if (BluetoothDevice.ACTION_FOUND.equals(action)) { BTArrayAdapter.add(device.getName()); BTArrayAdapter.notifyDataSetChanged(); Adress.add(device.getAddress()); } else if (BluetoothDevice.ACTION_ACL_CONNECTED.equals(action)) { Toast.makeText(MainActivity.this,R.string.connect_done,Toast.LENGTH_LONG).show(); chophepgui=true; Choi(); } } }; public void find(){ if(myBluetoothAdapter.isDiscovering()){ myBluetoothAdapter.cancelDiscovery(); } else{ BTArrayAdapter.clear(); myBluetoothAdapter.startDiscovery(); registerReceiver(bReceiver,new IntentFilter(BluetoothDevice.ACTION_FOUND)); } } 84 ĐỒ ÁN TỐT NGHIỆP protected void onDestroy(){ LocalBroadcastManager.getInstance(this).unregisterReceiver(NhanDuLieu); super.onDestroy(); if(chophepgui){ unregisterReceiver(bReceiver); } myBluetoothAdapter.disable(); WifiManager wifi = (WifiManager) getApplicationContext().getSystemService(Context.WIFI_SERVICE); wifi.setWifiEnabled(false); } public void Connect(){ Log.d(TAG, BtAddress); BluetoothDevice device=myBluetoothAdapter.getRemoteDevice(BtAddress); Log.d(TAG,"Connecting to " + device); myBluetoothAdapter.cancelDiscovery(); try { btSocket=device.createRfcommSocketToServiceRecord(MY_UUID); btSocket.connect(); Log.d(TAG,"Connecting made."); }catch (IOException e){ try { btSocket.close(); }catch (IOException e2){ Log.d(TAG,"Unable to end the connection"); } Log.d(TAG,"Socket creation failed"); } } private void writeData(String data){ try { outStream = btSocket.getOutputStream(); }catch (IOException e){ Log.d(TAG,"Bug BEFOR Sending stuff", e); } String message = data; byte[] msgBuffer = message.getBytes(); try { outStream.write(msgBuffer); }catch(IOException e){ Log.d(TAG,"Bug while sending stuff", e); } } public String covertString(String str) { String temp = Normalizer.normalize(str, Normalizer.Form.NFD); Pattern pattern = Pattern.compile("\\p{InCombiningDiacriticalMarks}+"); return pattern.matcher(temp).replaceAll("").toLowerCase().replaceAll("đ", "d"); } public void OpenDoanHinh () { Intent hinh = new Intent(this, DoanHinh.class); startActivity(hinh); speech.stopListening(); } public void OpenDKXe () { Intent car = new Intent(this, DieuKhienXe.class); startActivity(car); 85 ĐỒ ÁN TỐT NGHIỆP speech.stopListening(); } public void OpenDocTruyen () { Intent truyen = new Intent(this, DocTruyen.class); startActivity(truyen); speech.stopListening(); } public void Hello () { song = MediaPlayer.create(MainActivity.this,R.raw.hello); song.start(); } public void Choi () { song = MediaPlayer.create(MainActivity.this,R.raw.choi); song.start(); } public void BatWifi () { ConnectivityManager connManager = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE); NetworkInfo myWifi = connManager.getNetworkInfo(ConnectivityManager.TYPE_WIFI); if (!myWifi.isConnected()) { WifiManager wifi = (WifiManager) getApplicationContext().getSystemService(Context.WIFI_SERVICE); wifi.setWifiEnabled(true); Toast.makeText(getApplicationContext(),R.string.wifion,Toast.LENGTH_LONG).show(); } else { Toast.makeText(getApplicationContext(),R.string.wifion,Toast.LENGTH_LONG).show(); } } @Override public void onPartialResults(Bundle partialResults) { String text = partialResults.getStringArrayList(SpeechRecognizer.RESULTS_RECOGNITION).get(0); String buff = covertString(text); if (buff.contains("doan hinh") || buff.contains("xep hinh")) { OpenDoanHinh (); } if (buff.contains("lai xe") || buff.contains("dua xe")) { OpenDKXe(); } if (buff.contains("doc truyen") || buff.contains("ke chuyen")) { OpenDocTruyen(); } } @Override public void onResume() { super.onResume(); 86 ĐỒ ÁN TỐT NGHIỆP if(chophepgui) { Choi(); btn_on.setChecked(true); } } @Override protected void onPause() { super.onPause(); } @Override public void onBeginningOfSpeech() {} @Override public void onBufferReceived(byte[] buffer) {} @Override public void onEndOfSpeech() { btn_on.setChecked(false); } @Override public void onError(int errorCode) { btn_on.setChecked(false); } @Override public void onEvent(int arg0, Bundle arg1) {} @Override public void onReadyForSpeech(Bundle arg0) {} @Override public void onResults(Bundle results) {} @Override public void onRmsChanged(float rmsdB) {} public static String getErrorText(int errorCode) { String message; switch (errorCode) { case SpeechRecognizer.ERROR_AUDIO: message = "Audio recording error"; break; case SpeechRecognizer.ERROR_CLIENT: message = "Client side error"; break; case SpeechRecognizer.ERROR_INSUFFICIENT_PERMISSIONS: message = "Insufficient permissions"; break; case SpeechRecognizer.ERROR_NETWORK: message = "Network error"; break; case SpeechRecognizer.ERROR_NETWORK_TIMEOUT: message = "Network timeout"; break; case SpeechRecognizer.ERROR_NO_MATCH: message = "No match"; break; case SpeechRecognizer.ERROR_RECOGNIZER_BUSY: message = "RecognitionService busy"; break; case SpeechRecognizer.ERROR_SERVER: message = "error from server"; break; case SpeechRecognizer.ERROR_SPEECH_TIMEOUT: message = "No speech input"; 87 ĐỒ ÁN TỐT NGHIỆP break; default: message = "Didn't understand, please try again."; break; } return message; } } Chương trình giao diện điều khiển xe: package namngo.net.speechtotext; import android.content.Intent; import android.os.Bundle; import android.speech.RecognitionListener; import android.speech.RecognizerIntent; import android.speech.SpeechRecognizer; import android.support.v4.content.LocalBroadcastManager; import android.support.v7.app.AppCompatActivity; import android.view.View; import android.widget.CompoundButton; import android.widget.ImageButton; import android.widget.ToggleButton; import java.text.Normalizer; import java.util.Locale; import java.util.regex.Pattern; /** * */ Created by Administrator on 4/28/2017 public class DieuKhienXe extends AppCompatActivity implements RecognitionListener { private SpeechRecognizer speech = null; private Intent recognizerIntent; ImageButton imgbtUp; ImageButton imgbtLeft; ImageButton imgbtRight; ImageButton imgbtDown; ImageButton imgbtStop; ToggleButton tgbtCar; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.dieukhienxe); imgbtUp = (ImageButton) findViewById(R.id.btUp); imgbtDown = (ImageButton) findViewById(R.id.btDown); imgbtLeft = (ImageButton) findViewById(R.id.btLeft); imgbtRight = (ImageButton) findViewById(R.id.btRight); imgbtStop = (ImageButton) findViewById(R.id.btStop); tgbtCar = (ToggleButton) findViewById(R.id.tgbtCar); NhanDangGiongNoi(); tgbtCar.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { 88 ĐỒ ÁN TỐT NGHIỆP @Override public void onCheckedChanged(CompoundButton buttonView,boolean isChecked) { if (isChecked) { speech.startListening(recognizerIntent); } else { speech.stopListening(); } } }); imgbtUp.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { TienLen(); } }); imgbtDown.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { LuiXuong(); } }); imgbtLeft.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { SangTrai(); } }); imgbtRight.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { SangPhai(); } }); imgbtStop.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Dung(); } }); } public void NhanDangGiongNoi() { speech = SpeechRecognizer.createSpeechRecognizer(this); speech.setRecognitionListener(this); recognizerIntent = new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH); recognizerIntent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_PREFERENCE, Locale.getDefault().getLanguage().trim()); recognizerIntent.putExtra(RecognizerIntent.EXTRA_CALLING_PACKAGE,this.getPackageName ()); recognizerIntent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL, RecognizerIntent.LANGUAGE_MODEL_FREE_FORM); recognizerIntent.putExtra("android.speech.extra.DICTATION_MODE", true); recognizerIntent.putExtra(RecognizerIntent.EXTRA_PARTIAL_RESULTS, true); recognizerIntent.putExtra(RecognizerIntent.EXTRA_SPEECH_INPUT_COMPLETE_SILENCE_LENGT H_MILLIS, 50); recognizerIntent.putExtra(RecognizerIntent.EXTRA_MAX_RESULTS, 3); 89 ĐỒ ÁN TỐT NGHIỆP } public void TienLen(){ Intent intent = new Intent("Bluetooth"); intent.putExtra("message", "1"); LocalBroadcastManager.getInstance(this).sendBroadcast(intent); } public void LuiXuong(){ Intent intent = new Intent("Bluetooth"); intent.putExtra("message", "2"); LocalBroadcastManager.getInstance(this).sendBroadcast(intent); } public void SangTrai(){ Intent intent = new Intent("Bluetooth"); intent.putExtra("message", "3"); LocalBroadcastManager.getInstance(this).sendBroadcast(intent); } public void SangPhai(){ Intent intent = new Intent("Bluetooth"); intent.putExtra("message", "4"); LocalBroadcastManager.getInstance(this).sendBroadcast(intent); } public void Dung(){ Intent intent = new Intent("Bluetooth"); intent.putExtra("message", "5"); LocalBroadcastManager.getInstance(this).sendBroadcast(intent); } public void ChayLienTuc(){ Intent intent = new Intent("Bluetooth"); intent.putExtra("message", "6"); LocalBroadcastManager.getInstance(this).sendBroadcast(intent); } public String covertString(String str) { String temp = Normalizer.normalize(str, Normalizer.Form.NFD); Pattern pattern = Pattern.compile("\\p{InCombiningDiacriticalMarks}+"); return pattern.matcher(temp).replaceAll("").replaceAll(" ", "").toLowerCase().replaceAll("đ", "d"); } @Override public void onPartialResults(Bundle partialResults) { String text = partialResults.getStringArrayList(SpeechRecognizer.RESULTS_RECOGNITION).get(0); String buff = covertString(text); if (buff.contains("len") || buff.contains("tien len") || buff.contains("chay len")|| buff.contains("tien") || buff.contains("chay")) { ChayLienTuc(); } if (buff.contains("xuong") || buff.contains("lui xuong") || buff.contains("lui")) { LuiXuong(); } if (buff.contains("trai") || buff.contains("qua trai") || buff.contains("sang trai") || buff.contains("re trai") || buff.contains("xoay trai")) { SangTrai(); } if (buff.contains("phai") || buff.contains("qua phai") || buff.contains("sang phapi") || buff.contains("re phai") || buff.contains("xoay phai")) { SangPhai(); 90 ĐỒ ÁN TỐT NGHIỆP } if (buff.contains("dung") || buff.contains("dung lai")) { Dung(); } } @Override public void onResume() { super.onResume(); } @Override protected void onPause() { super.onPause(); } @Override public void onBeginningOfSpeech() {} @Override public void onBufferReceived(byte[] buffer) {} @Override public void onEndOfSpeech() { tgbtCar.setChecked(false); } @Override public void onError(int errorCode) {tgbtCar.setChecked(false); } @Override public void onEvent(int arg0, Bundle arg1) {} @Override public void onReadyForSpeech(Bundle arg0) {} @Override public void onResults(Bundle results) {} @Override public void onRmsChanged(float rmsdB) {} public static String getErrorText(int errorCode) { String message; switch (errorCode) { case SpeechRecognizer.ERROR_AUDIO: message = "Audio recording error"; break; case SpeechRecognizer.ERROR_CLIENT: message = "Client side error"; break; case SpeechRecognizer.ERROR_INSUFFICIENT_PERMISSIONS: message = "Insufficient permissions"; break; case SpeechRecognizer.ERROR_NETWORK: message = "Network error"; break; case SpeechRecognizer.ERROR_NETWORK_TIMEOUT: message = "Network timeout"; break; case SpeechRecognizer.ERROR_NO_MATCH: message = "No match"; break; case SpeechRecognizer.ERROR_RECOGNIZER_BUSY: message = "RecognitionService busy"; break; case SpeechRecognizer.ERROR_SERVER: message = "error from server"; 91 ĐỒ ÁN TỐT NGHIỆP break; case SpeechRecognizer.ERROR_SPEECH_TIMEOUT: message = "No speech input"; break; default: message = "Didn't understand, please try again."; break; } return message; } } Chương trình giao diện đốn hình: package namngo.net.speechtotext; import import import import import import android.content.Intent; android.media.MediaPlayer; android.os.Bundle; android.speech.RecognitionListener; android.speech.RecognizerIntent; android.speech.SpeechRecognizer; import android.support.v7.app.AppCompatActivity; import android.view.View; import import import import import import import android.widget.CompoundButton; android.widget.ImageButton; android.widget.ToggleButton; java.text.Normalizer; java.util.Locale; java.util.Random; java.util.regex.Pattern; /** * Created by Administrator on 7/7/2017 */ public class DoanHinh extends AppCompatActivity implements RecognitionListener { ImageButton img; ToggleButton btHinh; MediaPlayer song; MediaPlayer mp; String images[] = {"concho","conmeo","contho","conga","consoc","conchimcanhcut","congau","caichoi","ca iban", "caighe","caily","caicay","caidongho","caiquat","caidienthoai","caiguong", "traibuoi","traicam","traichuoi","traiduahau","traisaurieng","traixoai"}; static int[] sound ={R.raw.chinhxac, R.raw.bangioiqua, R.raw.dungroi, R.raw.thongminh}; static int[] fail = {R.raw.chuachinhxac, R.raw.sai, R.raw.chuadung}; private int imgID = 0; private SpeechRecognizer speech = null; private Intent recognizerIntent; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.doanhinh); 92 ĐỒ ÁN TỐT NGHIỆP img = (ImageButton) findViewById(R.id.imgHinhAnh); btHinh = (ToggleButton) findViewById(R.id.tgbtHinh); NhanDangGiongNoi(); btHinh.setChecked(true); RandomImg(images); btHinh.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { @Override public void onCheckedChanged(CompoundButton buttonView,boolean isChecked) { if (isChecked) { speech.startListening(recognizerIntent); } else { speech.stopListening(); } } }); img.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { RandomImg(images); } }); } public void NhanDangGiongNoi(){ speech = SpeechRecognizer.createSpeechRecognizer(this); speech.setRecognitionListener(this); recognizerIntent = new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH); recognizerIntent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_PREFERENCE, Locale.getDefault().getLanguage().trim()); recognizerIntent.putExtra(RecognizerIntent.EXTRA_CALLING_PACKAGE,this.getPackageName ()); recognizerIntent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL, RecognizerIntent.LANGUAGE_MODEL_FREE_FORM); recognizerIntent.putExtra("android.speech.extra.DICTATION_MODE", true); recognizerIntent.putExtra(RecognizerIntent.EXTRA_PARTIAL_RESULTS, true); recognizerIntent.putExtra(RecognizerIntent.EXTRA_SPEECH_INPUT_COMPLETE_SILENCE_LENGT H_MILLIS, 50); recognizerIntent.putExtra(RecognizerIntent.EXTRA_MAX_RESULTS, 3); } public void RandomImg(String[] images) { // Get a random between and images.length-1 int imageId = (int)(Math.random() * images.length); imgID = imageId; / Set the image int drawableID = this.getResources().getIdentifier(images[imageId],"drawable",this.getPackageName()); img.setBackgroundResource(drawableID); try { Thread.sleep(1000); } catch(InterruptedException ex) { Thread.currentThread().interrupt(); 93 ĐỒ ÁN TỐT NGHIỆP } if(images[imgID].contains("con")) { song = MediaPlayer.create(this,R.raw.daylacongi); song.start(); } if(images[imgID].contains("cai")) { song = MediaPlayer.create(this,R.raw.daylacaigi); song.start(); } if(images[imgID].contains("trai")) { song = MediaPlayer.create(this,R.raw.daylatraigi); song.start(); } } public void RandomSound() { Random r = new Random(); int Low = 0; int High = 4; int rndm = r.nextInt(High-Low) + Low; mp = MediaPlayer.create(getApplicationContext(),sound[rndm]); mp.start(); } public void RandomFail() { Random r = new Random(); int Low = 0; int High = 3; int rndm = r.nextInt(High-Low) + Low; mp = MediaPlayer.create(getApplicationContext(),fail[rndm]); mp.start(); } public String covertString(String str) { String temp = Normalizer.normalize(str, Normalizer.Form.NFD); Pattern pattern = Pattern.compile("\\p{InCombiningDiacriticalMarks}+"); return pattern.matcher(temp).replaceAll("").replaceAll(" ", "").toLowerCase().replaceAll("đ", "d"); } @Override public void onPartialResults(Bundle partialResults) { String text = partialResults.getStringArrayList(SpeechRecognizer.RESULTS_RECOGNITION).get(0); String buff = covertString(text); if (buff.contains(images[imgID])==true) { RandomSound(); RandomImg(images); } } @Override public void onResume() { super.onResume(); } @Override 94 ĐỒ ÁN TỐT NGHIỆP protected void onPause() { super.onPause(); } @Override public void onBeginningOfSpeech() {} @Override public void onBufferReceived(byte[] buffer) {} @Override public void onEndOfSpeech() { btHinh.setChecked(false); } @Override public void onError(int errorCode) { btHinh.setChecked(false); } @Override public void onEvent(int arg0, Bundle arg1) {} @Override public void onReadyForSpeech(Bundle arg0) {} @Override public void onResults(Bundle results) {} @Override public void onRmsChanged(float rmsdB) {} public static String getErrorText(int errorCode) { String message; switch (errorCode) { case SpeechRecognizer.ERROR_AUDIO: message = "Audio recording error"; break; case SpeechRecognizer.ERROR_CLIENT: message = "Client side error"; break; case SpeechRecognizer.ERROR_INSUFFICIENT_PERMISSIONS: message = "Insufficient permissions"; break; case SpeechRecognizer.ERROR_NETWORK: message = "Network error"; break; case SpeechRecognizer.ERROR_NETWORK_TIMEOUT: message = "Network timeout"; break; case SpeechRecognizer.ERROR_NO_MATCH: message = "No match"; break; case SpeechRecognizer.ERROR_RECOGNIZER_BUSY: message = "RecognitionService busy"; break; case SpeechRecognizer.ERROR_SERVER: message = "error from server"; break; case SpeechRecognizer.ERROR_SPEECH_TIMEOUT: message = "No speech input"; break; default: message = "Didn't understand, please try again."; break; } return message; 95 ĐỒ ÁN TỐT NGHIỆP } } Chương trình giao diện kể chuyện: package namngo.net.speechtotext; import android.media.MediaPlayer; import android.os.Bundle; import android.support.v7.app.AppCompatActivity; import android.view.View; import android.widget.ImageButton; import android.widget.ImageView; import java.util.Random; /** * */ Created by Administrator on 7/8/2017 public class DocTruyen extends AppCompatActivity { ImageButton btTruyen; ImageView imghtAnh; private MediaPlayer mp; static int[] truyen = {R.raw.tamcam, R.raw.thachsanh, R.raw.caytre,R.raw.thanhgiong,R.raw.sontinhthuytinh}; String images[] = {"tamcam","thachsanh","caytre","thanhgiong","sontinhthuytinh"}; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.doctruyen); imghtAnh = (ImageView) findViewById(R.id.imgTruyen); btTruyen = (ImageButton) findViewById(R.id.rdTruyen); RandomTruyen(); btTruyen.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View arg0) { mp.stop(); RandomTruyen(); } }); } public void RandomTruyen() { Random r = new Random(); int Low = 0; int High = 5; int rndm = r.nextInt(High-Low) + Low; mp = MediaPlayer.create(getApplicationContext(),truyen[rndm]); mp.start(); 96 ĐỒ ÁN TỐT NGHIỆP int drawableID = this.getResources().getIdentifier(images[rndm],"drawable",this.getPackageName()); imghtAnh.setBackgroundResource(drawableID); } protected void onDestroy(){ super.onDestroy(); mp.stop(); } } 97 ... Đề tài ? ?Xe điều khiển giọng nói hỗ trợ trẻ em học qua trò chơi điện thoại Android? ?? có yêu cầu sau:   Điều khiểnxe điện thoại Android Giúp trẻ vừa học vừa chơi ứng dụng đƣợc cài điện thoại Với... Ngô Phƣơng Nam Lê Văn Tài Ngành: CNKT Điện tử, Truyền thông Tên đề tài: Xe điều khiển giọng nói hỗ trợ trẻ em học qua trò chơi điện thoại Android Họ tên Giáo viên phản... áp dụng cơng nghệ số vào thực tiễn nên nhóm định lựa chọn đề tài ? ?Xe điều khiển giọng nói hỗ trợ trẻ em học qua trị chơi điện thoại Android? ?? 1.2 TÍNH CẤP THIẾT CỦA ĐỀ TÀI: Trên thị trƣờng có nhiều

Ngày đăng: 22/12/2021, 06:03

Tài liệu cùng người dùng

Tài liệu liên quan