E / MediaPlayerNative: ошибка (1, -2147483648) при запуске MP3 из res / raw - PullRequest
0 голосов
/ 16 марта 2020

Я пытаюсь создать конвертер азбуки Морзе с функцией воспроизведения преобразованного текста, у меня есть 2 звуковых эффекта для точек Морзе * sh и точки.

После перевода текста на азбуку я сканирую преобразовать текст и проверить, используя инструкцию if, если строка "." запустите dot media player, и если строка "-", запустите da sh media player, da sh media player работает нормально, но проблема в dot media player, он не работает, и я попадаю в logcat

E/MediaPlayerNative: error (1, -2147483648)

хотя этот код точечного медиапроигрывателя точно такой же, как у да sh, что очень запутанно

package com.example.morseapp;

import androidx.appcompat.app.AppCompatActivity;

import android.content.ClipData;
import android.content.Context;
import android.media.MediaPlayer;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
import android.content.ClipboardManager;
import android.widget.Toast;


public class MainActivity extends AppCompatActivity {
private TextView txt;
private TextView result;
Button toMorseBtn;
Button toAlphaBtn;
Button copyBtn;
Button playBtn;
String convertedTxt;
MediaPlayer dot;
MediaPlayer dash;



@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    txt = (TextView) findViewById(R.id.txt);
    result = (TextView) findViewById(R.id.result);
    toMorseBtn = (Button) findViewById(R.id.toMorseBtn);
    toAlphaBtn = (Button) findViewById(R.id.toAlphaBtn);
    copyBtn = (Button) findViewById(R.id.copyBtn);
    playBtn = (Button) findViewById(R.id.playBtn);



    copyBtn.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {

            ClipboardManager clipboard = (ClipboardManager) getSystemService(Context.CLIPBOARD_SERVICE);
            ClipData clip = ClipData.newPlainText("copied", convertedTxt);
            clipboard.setPrimaryClip(clip);
            Toast.makeText(getApplicationContext(), " translation is copied to clip Board", Toast.LENGTH_SHORT).show();
        }
    });

    toMorseBtn.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            String txtToConvert = txt.getText().toString();
            convertedTxt = MorseCode.alphaToMorse(txtToConvert);
            result.setText(convertedTxt);
        }
    });

    toAlphaBtn.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            String txtToConvert = txt.getText().toString();
            convertedTxt = MorseCode.morseToAlpha(txtToConvert);
            result.setText(convertedTxt);
        }
    });

}

public void play(View view) {

    String[] words = convertedTxt.trim().split("   ");

    for (String word : words) {
        for (String letter : word.split(" ")) {
            for (int i = letter.length() - 1; i >= 0; i--) {
           try{
                if (letter.substring(i, i + 1).equals(".")) {
                    try{
                        if(dot == null){
                            dot = MediaPlayer.create(getApplicationContext(), R.raw.dot);
                            dot.start();  Thread.sleep(1000);
                        }else{
                            dot = MediaPlayer.create(getApplicationContext(), R.raw.dot);
                            dot.start();
                           Thread.sleep(1000);
                        }

                    }catch (Exception e){
                        Toast.makeText(getApplicationContext(), "Interrupted", Toast.LENGTH_SHORT).show();
                    }}
                if(letter.substring(i, i + 1).equals("-")){
                    try{
                        if( dash == null){
                            dash = MediaPlayer.create(getApplicationContext(), R.raw.dash);
                            dash.start();
                           Thread.sleep(1000);

                        }
                        else{
                            dash = MediaPlayer.create(getApplicationContext(), R.raw.dash);
                            dash.start();
                            Thread.sleep(1000);


                        }

                    }catch (Exception e){
                        Toast.makeText(getApplicationContext(), "Interrupted", Toast.LENGTH_SHORT).show();

                    }
                }

           }catch (Exception e){
               e.printStackTrace();
           }


            }
            try {
                Thread.sleep(1000);


            } catch (InterruptedException e) {
                Toast.makeText(getApplicationContext(), "Word Interrupted", Toast.LENGTH_SHORT).show();
            }

        }
        try {
            Thread.sleep(1000);
        } catch (InterruptedException e) {
            Toast.makeText(getApplicationContext(), "Word Interrupted", Toast.LENGTH_SHORT).show();
        }

    }
}
}

logcat выглядит так

2020-03-16 12: 33: 10.378 19250-19263 / com.example.morseapp E / MediaPlayerNative: ошибка (1, -2147483648)

...