0

特定の音声からテキストへの変換が検出されたときに Bluetooth 信号を arduino に送信できるコードを作成しようとしています。Bluetooth が無効になっている場合、Speech to Text はカスタム トーストを表示できます。残念ながら、Bluetooth が有効になっている場合、Speech to Text はカスタム トーストを表示できません (特定のテキストを検出できません)。コードに論理エラーがある可能性があります。みんな助けてください。ありがとうございました。

public void speechRecognition(View view) {
    Intent intent = new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH);
    intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL, "en-US");
    try {
        startActivityForResult(intent, RESULT_SPEECH);

    } catch (ActivityNotFoundException a) {
        getCustomToast("Oops! Your Device Doesn't Support Speech to Text!");
    }
}

public void turnBluetoothOn(View view) {
    if(!myBluetoothAdapter.isEnabled()) {
        Intent turnOnIntent = new Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE);
        startActivityForResult(turnOnIntent, REQUEST_ENABLE_BT);
        getCustomToast("Bluetooth Has Been Turned On");
    }
    else {
        getCustomToast("Bluetooth Is Already On");
    }
}

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    switch(requestCode) {
        case REQUEST_ENABLE_BT: {
            if(myBluetoothAdapter.isEnabled()) {
                displayIndicator.setText("Status: Bluetooth Enabled");

            }
            else {
                displayIndicator.setText("Status: Bluetooth Disabled");
            }
            break;
        }
        default: {
            if (resultCode == RESULT_OK && null != data) {

                ArrayList<String> text = data
                        .getStringArrayListExtra(RecognizerIntent.EXTRA_RESULTS);

                displayIndicator.setText(text.get(0));

                if("grab".equals(displayIndicator.getText().toString())) {
                    getCustomToast("Grabbing Object");
                    mConnectedThread.write("G");
                }
                else if("release".equals(displayIndicator.getText().toString())) {
                    getCustomToast("Releasing Object");
                    mConnectedThread.write("Z");
                }
                else {
                    getCustomToast("Speech Error: Please RETRY!");
                }   
            }
        }
    }   
}

@Override
public void onResume() {
     super.onResume();
     Log.d(TAG, "...onResume - try connect...");
     // Set up a pointer to the remote node using it's address.
     BluetoothDevice device = myBluetoothAdapter.getRemoteDevice(robotBluetoothAddress);

     // Two things are needed to make a connection:
     // A MAC address, which we got above.
     // A Service ID or UUID.  In this case we are using the
     // UUID for SPP.
     try {
            myBluetoothSocket = createBluetoothSocket(device);

        } catch (IOException e) {
            errorExit("Fatal Error", "In onResume() and socket create failed: " + e.getMessage() + ".");
        }

        // Discovery is resource intensive.  Make sure it isn't going on
        // when you attempt to connect and pass your message.
        myBluetoothAdapter.cancelDiscovery();

        // Establish the connection.  This will block until it connects.
        Log.d(TAG, "...Connecting...");
        try {
             myBluetoothSocket.connect();
          Log.d(TAG, "....Connection ok...");
        } catch (IOException e) {
          try {
             myBluetoothSocket.close();
          } catch (IOException e2) {
            errorExit("Fatal Error", "In onResume() and unable to close socket during connection failure" + e2.getMessage() + ".");
          }
        }

        // Create a data stream so we can talk to server.
        Log.d(TAG, "...Create Socket...");

        mConnectedThread = new ConnectedThread( myBluetoothSocket);
        mConnectedThread.start();
}


@Override
public void onPause() {
    super.onPause();
    Log.d(TAG, "...In onPause()...");
    /*
    try {
        myBluetoothSocket.close();
    } catch (IOException e2) {
        errorExit("Fatal Error", "In onPause() and failed to close socket." + e2.getMessage() + ".");
    }
    */
}


@Override
protected void onDestroy() {
    if(D) Log.e(TAG, "+++ ON DESTROY +++");
    super.onDestroy();
    //unregisterReceiver(bReceiver);
}

public void getCustomToast(String message)
    {
        LayoutInflater inflater = getLayoutInflater();
        View layout  = inflater.inflate(R.layout.activity_custom_toast, (ViewGroup)     findViewById(R.id.toast_layout));
        TextView text = (TextView) layout.findViewById(R.id.toast_text_1);
        text.setText(message);
        Toast customToast = new Toast(this);
        customToast.setDuration(Toast.LENGTH_SHORT);
        customToast.setView(layout);
        customToast.show();
    }
4

0 に答える 0