Как получить URL из EditText для воспроизведения радиопотока?

android android-studio android-edittext streaming

502 просмотра

3 ответа

Я хочу сыграть радио, например, отсюда: " http://legacy.scahw.com.au/3rmr_32 ". и я хочу получить из EditText, что пользователь должен ввести его.

Когда я помещаю URL-адрес непосредственно в строку, он работает, но когда я записываю его в EditText и передаю его в строку, он не работает. Может кто-нибудь помочь мне, где проблема?

Основное занятие

    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        url = (EditText) findViewById(R.id.edit);
        final String urlString = url.getText().toString();

        playSeekBar = (ProgressBar) findViewById(R.id.progressBar1);
        playSeekBar.setMax(100);
        playSeekBar.setVisibility(View.VISIBLE);

        buttonPlay = (Button) findViewById(R.id.buttonPlay);
        buttonPlay.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View v) {

                startPlaying(urlString);
            }
        });

        buttonStopPlay = (Button) findViewById(R.id.buttonStopPlay);
        buttonStopPlay.setEnabled(false);
        buttonStopPlay.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View v) {
                stopPlaying();
            }
        });



        player = new MediaPlayer();
        try {  
            player.setDataSource(urlString);

        } catch (IllegalArgumentException e) {
            e.printStackTrace();
        } catch (IllegalStateException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }

        player.setOnBufferingUpdateListener(new OnBufferingUpdateListener() {

            public void onBufferingUpdate(MediaPlayer mp, int percent) {
                playSeekBar.setSecondaryProgress(percent);
                Log.i("Buffering", "" + percent);
            }
        });
    }

    private void startPlaying(String sp) {
        buttonStopPlay.setEnabled(true);
        buttonPlay.setEnabled(false);

        playSeekBar.setVisibility(View.VISIBLE);

        player.prepareAsync();

        player.setOnPreparedListener(new OnPreparedListener() {

            public void onPrepared(MediaPlayer mp) {
                mp.start();
            }
        });
    }

    private void stopPlaying() {
        if (player.isPlaying()) {
            player.stop();
            player.release();
            initializeMediaPlayer();
        }

        buttonPlay.setEnabled(true);
        buttonStopPlay.setEnabled(false);
        playSeekBar.setVisibility(View.INVISIBLE);
    }

    private void initializeMediaPlayer() {
        player = new MediaPlayer();
        try {  
            player.setDataSource(urlString);
        } catch (IllegalArgumentException e) {
            e.printStackTrace();
        } catch (IllegalStateException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }

        player.setOnBufferingUpdateListener(new OnBufferingUpdateListener() {

            public void onBufferingUpdate(MediaPlayer mp, int percent) {
                playSeekBar.setSecondaryProgress(percent);
                Log.i("Buffering", "" + percent);
            }
        });
    }

    @Override
    protected void onPause() {
        super.onPause();
        if (player.isPlaying()) {
            player.stop();
        }
    }
}

main.xml

<ProgressBar
    android:id="@+id/progressBar1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content" />
<EditText
    android:id="@+id/edit"
    android:layout_marginTop="100dp"
    android:hint="Enter URL"
    android:layout_centerHorizontal="true"
    android:layout_width="match_parent"
    android:layout_height="wrap_content" />
<Button
    android:id="@+id/buttonPlay"
    android:layout_centerVertical="true"
    android:layout_centerHorizontal="true"
    android:text="paly"
    android:layout_below="@+id/edit"
    android:layout_width="200dp"
    android:layout_height="wrap_content" />
<Button
    android:id="@+id/buttonStopPlay"
    android:text="stop"
    android:layout_centerHorizontal="true"
    android:layout_below="@+id/buttonPlay"
    android:layout_width="200dp"
    android:layout_height="wrap_content" />
Автор: Nahid Источник Размещён: 08.11.2019 11:13

Ответы (3)


0 плюса

Вы используете final String urlString = url.getText (). ToString (); Таким образом, строка будет содержать пробел и не изменится в будущем при вводе. Вместо последней переменной, пожалуйста, используйте url.getText (). ToString () напрямую для передачи значения.

Автор: Ramit Размещён: 20.08.2016 11:14

0 плюса

Эта линия

final String urlString = url.getText().toString();

Вы должны написать в onClickListene, как показано ниже

buttonPlay.setOnClickListener(new OnClickListener() {
    @Override
    public void onClick(View v) {
        String urlString = url.getText().toString();
        startPlaying(urlString);
    }
});

пусть это поможет тебе, всего наилучшего

Автор: Harshal Pathak Размещён: 20.08.2016 11:16

0 плюса

Заменить:

final String urlString = url.getText().toString();

с этим:

final String urlString = URLEncoder.encode(url.getText().toString(), "UTF-8");
Автор: Arbaz Alam Размещён: 20.08.2016 11:20
Вопросы из категории :
32x32