Member 10850253 Ответов: 0

Преобразование текста в речь во фрагменте не работает


У меня есть фрагмент спиннера, текстовый вид и 3 кнопки.
Я хочу иметь возможность воспроизводить текст в аудио по щелчку кнопки, из моего фрагмента, и хотя я избавился от всех ошибок, я не слышу ничего, когда нажимаю кнопки, которые должны воспроизводить текст в аудио.
Я также хочу иметь возможность изменить язык в tts, и я смог это сделать, но на activity, и во фрагменте, это не работает.
Любая помощь будет очень признательна.
Спасибо.

Что я уже пробовал:

<pre>public class fragment2 extends Fragment implements View.OnClickListener,AdapterView.OnItemSelectedListener, TextToSpeech.OnInitListener {
    private Spinner spinner;
TextView txt1,txt2;
Button r1,b1,s1;
private int id;
    ArrayList<String> lat;
    ArrayList<String> lon;
    private static final int MY_DATA_CHECK_CODE = 1;
    private static final int TTS_DATA_CHECK = 1;
    static final String TAG = "TTS";
    double latitude;
    double longitude;
    private TextToSpeech mTts;
    SharedPreferences.Editor editor;

SharedPreferences preferences;

    public fragment2() {
        // Required empty public constructor
    }


    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        View view = inflater.inflate(R.layout.layout_fragment2, container, false);//Inflate Layout

        Intent checkIntent=new Intent();
        checkIntent.setAction(TextToSpeech.Engine.ACTION_CHECK_TTS_DATA);
        startActivityForResult(checkIntent,MY_DATA_CHECK_CODE);
        getActivity().setVolumeControlStream(AudioManager.STREAM_MUSIC);
        mTts= new TextToSpeech(getActivity(), fragment2.this);
        //mTts= new TextToSpeech(getActivity(), (TextToSpeech.OnInitListener) fragment2.this);

        preferences = this.getActivity().getSharedPreferences("pref", Context.MODE_PRIVATE);
        spinner=(Spinner)view.findViewById(R.id.spin);
        txt2=(TextView) view.findViewById(R.id.txt);
        txt1=(TextView) getActivity().findViewById(R.id.txt1);

        //Toast.makeText(getContext(), txt1.getText().toString(),Toast.LENGTH_SHORT).show();
        switch(Integer.valueOf(txt1.getText().toString())){
            case R.id.part1:
                Toast.makeText(getContext(), "part1",Toast.LENGTH_SHORT).show();
                break;
            case R.id.part2:
                Toast.makeText(getContext(), "part2",Toast.LENGTH_SHORT).show();
                break;
        }
        view.findViewById(R.id.rb).setOnClickListener(mListener);
        view.findViewById(R.id.fb).setOnClickListener(mListener);
        view.findViewById(R.id.sb).setOnClickListener(mListener);
        spinner.setSelection(preferences.getInt("lang", 0));

        // check if GPS enabled
        spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
            @Override
            public void onItemSelected(AdapterView<?> adapterView, View view, int i, long l) {
                Context context;
                Resources resources;
                String languageToLoad = null;
                    switch (i) {
                        case 0:
                            context = LocaleHelper.setLocale(getActivity(), "es");
                            editor.putInt("lang", 0);
                            editor.commit();
                            //prefs.setString("lang2","\"spa\", \"MEX\"");
                            mTts.setLanguage(new Locale("spa", "MEX"));
                            resources = context.getResources();
                            txt1.setText(txt1.getText().toString());
                            //txt2.setText(resources.getString(R.string.txt2));
                            languageToLoad = "es";
                        /*if(languageToLoad!=null) {
                            Locale locale = new Locale(languageToLoad);
                            Locale.setDefault(locale);
                            Configuration config = new Configuration();
                            config.locale = locale;
                            getBaseContext().getResources().updateConfiguration(config,
                                    getBaseContext().getResources().getDisplayMetrics());
                        }*/
                            break;
                        case 1:
                            context = LocaleHelper.setLocale(getActivity(), "en");
                            editor.putInt("lang", 1);
                            editor.commit();
                            //prefs.setString(";ang2","Locale.US");
                            mTts.setLanguage(Locale.US);
                            resources = context.getResources();
                            //Aca
                            txt1.setText(resources.getString(R.string.txt1));
                            txt2.setText(resources.getString(R.string.txt2));
                        /*languageToLoad = "en";
                        if(languageToLoad!=null) {
                            Locale locale = new Locale(languageToLoad);
                            Locale.setDefault(locale);
                            Configuration config = new Configuration();
                            config.locale = locale;
                            getBaseContext().getResources().updateConfiguration(config,
                                    getBaseContext().getResources().getDisplayMetrics());
                        }*/
                            break;
                }
            }

            public void setLanguage(String l) {
                Intent intent = getActivity().getIntent();
                getActivity().overridePendingTransition(0, 0);
                intent.addFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION);
                getActivity().finish();
                getActivity().overridePendingTransition(0, 0);
                startActivity(intent);
            }

            @Override
            public void onNothingSelected(AdapterView<?> adapterView) {

            }
        });
        return view;
    }

    void speak(String s) {
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
            Log.v(TAG, "Speak new API");
            Bundle bundle = new Bundle();
            bundle.putInt(TextToSpeech.Engine.KEY_PARAM_STREAM, AudioManager.STREAM_MUSIC);
            mTts.speak(s, TextToSpeech.QUEUE_FLUSH, bundle, null);
        } else {
            Log.v(TAG, "Speak old API");
            HashMap<String, String> param = new HashMap<>();
            param.put(TextToSpeech.Engine.KEY_PARAM_STREAM, String.valueOf(AudioManager.STREAM_MUSIC));
            mTts.speak(s, TextToSpeech.QUEUE_FLUSH, param);
        }
    }
    @Override
    public void onDestroy() {
        super.onDestroy();
        // Don't forget to shutdown tts!
        if (mTts != null) {
            Log.v(TAG, "onDestroy: shutdown TTS");
            mTts.stop();
            mTts.shutdown();
        }
    }
    private final View.OnClickListener mListener = new View.OnClickListener() {
        public void onClick(View view) {
            switch (view.getId()) {
                case R.id.rb:
                    // do stuff
                    break;
                case R.id.fb:
                    // do stuff
                    break;
                case R.id.sb:
                    speak(txt1.getText().toString());
                    // do stuff
                    break;
            }
        }
    };

    @Override
    public void onClick(View v) {

    }

    @Override
    public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {

    }

    @Override
    public void onNothingSelected(AdapterView<?> parent) {

    }

    @Override
    public void onInit(int status) {
        if(preferences.getInt("lang",0)==0){
            Locale locSpanish = new Locale("spa", "MEX");
            mTts.setLanguage(locSpanish);
        }else if(preferences.getInt("lang",0)==1){
            mTts.setLanguage(Locale.US);
        }
    }
}

David Crow

-...Я ничего не слышу..."

Достаточно ли громкий звук? Используя отладчик, вы вступили в speak() метод, чтобы увидеть, что происходит и если переменные, как и ожидалось?

-...это не работает."

Что именно это означает?

0 Ответов