0

TextToSpeech を使用して、連絡先の誰かに SMS を送信しています。私はそれを行うために非常に醜い方法を使用します。なぜなら、「連絡先テキストメッセージにメッセージを送信するのはこんにちは」というすべての表現を1つの方法で言う必要があるからです。「メッセージを送信」のようなものが良いでしょう。アプリは私に誰に尋ねて、このように進みます..だから私はグーグルのようなアプリケーションと動的に対話することができます. これまでに使用したコードは次のとおりです。

if(resultList.getText().toString().toLowerCase().contains(getResources().getString(R.string.messaggio))) //invio sms
                {

                    splitMessage = message.split(getResources().getString(R.string.destinatario), 2);
                                if(splitMessage.length>1){

                                     if((splitMessage[0].trim()).equalsIgnoreCase(getResources().getString(R.string.inviamessaggio)))
                                    {

                                        splitMessage[0] = "message";
                                        splitMessage[1] = splitMessage[1].trim();
                                        Cursor phones = getContentResolver().query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null,null,null, null);


                                        splitMessageWithNameAndBody = splitMessage[1].split(getResources().getString(R.string.testomessaggio), 2);
                                        if(splitMessageWithNameAndBody.length>1)
                                        {
                                            splitMessage[0] = "text message";
                                        while (phones.moveToNext())
                                        {
                                            String Name=phones.getString(phones.getColumnIndex(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME));
                                            String Number=phones.getString(phones.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));

                                            splitMessage[1] = splitMessageWithNameAndBody[0].trim();
                                            splitMessageWithNameAndBody[1] = splitMessageWithNameAndBody[1].trim();
                                            if(Name.compareToIgnoreCase(splitMessage[1])== 0)
                                            {
                                                nameMatchFound = true;
                                                flag=1;
                                                String url = "sms:"+Number;
                                                Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
                                                intent.putExtra("sms_body", splitMessageWithNameAndBody[1]);
                                                startActivity(intent);
                                            }
                                        }


                                        if(!nameMatchFound)
                                        {
                                            Toast.makeText(getApplicationContext(), "Contatto non trovato o ci sono più corrispondenze", Toast.LENGTH_SHORT).show();
                                            DialogFragment df=new DialogTrial();
                                            df.show(getSupportFragmentManager(), "MyDialog"); 

                                        }
                                    } else {
                                        //Toast.makeText(getApplicationContext(), "Please say contact name followed by call or message keyword", Toast.LENGTH_LONG).show();
                                        while (phones.moveToNext()){
                                            String Name=phones.getString(phones.getColumnIndex(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME));
                                            String Number=phones.getString(phones.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));
                                            if(Name.compareToIgnoreCase(splitMessage[1]) == 0){
                                                nameMatchFound = true;

                                                String url = "sms:"+Number;
                                                Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
                                                intent.putExtra("sms_body", splitMessageWithNameAndBody[1]);
                                                startActivity(intent);
                                            }
                                        }
                                    }
                                }

                                else
                                {
                                    Toast.makeText(getApplicationContext(), "Please say contact name followed by call keyword", Toast.LENGTH_LONG).show();
                                }
                            }
                        //break;

        }

対応が見つからない場合は、連絡先で正しい名前を検索するように求められます。ところで、私がやりたいことは可能ですか?ありがとう

4

1 に答える 1

1

出来ますか?もちろん。似たようなことをする私が書いたアプリがあります-テキストを読み上げ、応答するかどうかを尋ね、次に応答を求め(はいの場合)、それを読み、送信する前に確認を求めます。基本的に、ステート マシンを作成して、応答が入ったときに応答を処理する方法と、次の入力に対して何を発声するかを理解する必要があります。

于 2014-07-02T09:53:07.027 に答える