Android. Пишем свой AudioPlayer – Devcolibri – Android для начинающих

Android. Пишем свой AudioPlayer

Давненько не было чего-то новенького, вот я и решил немного порадовать своих читателей новым екзамплом в виде AudioPlayer-а.

Вот что у меня получилось:

Предлагаю начать реализацию данного чудо приложения :)

Шаг 1.

Начинаем как всегда с визуального интерфейса.

<?xml version="1.0" encoding="utf-8"?>

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
              android:orientation="vertical"
              android:layout_width="match_parent"
              android:layout_height="match_parent">

    <SeekBar
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:id="@+id/seekBar"/>
    <Button
            android:text="@string/play_str"
            android:textSize="15pt"
            android:textStyle="bold"
            android:onClick="playAndStop"
            android:id="@+id/ButtonPlayStop"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center"
            android:layout_marginRight="-3dp"/>

</LinearLayout>

Обратите внимание, что в нашей кнопке уже проставлен параметр android:onClick, который и будет проигрывать и останавливать музыку.

Шаг 2.

Дальше зайдем в папку res/values/strings.xml и добавим следующие строки:

<string name="play_str">PLAY</string>
<string name="pause_str">PAUSE</string>

Шаг 3.

Теперь нам нужно добавить в ресурсы ту песенку, которую вы хотите проигрывать.

Я люблю слушать группу Imagine Dragons, а именно Imagine Dragons – Radioactive, просто суперская песня.

Так вот, добавляем песенку в res/raw/imagine_dragons_radioactive.mp3.

У вас скорее всего не будет директории raw/, по этому вы смело можете её создать вручную в директории res/, и также обратите внимание на то как я переименовал песню imagine_dragons_radioactive.mp3. В её названии должны быть только маленькие буквы английского алфавита, а также допускаются символы подчеркивания и точка.

Шаг 4.

Перейдем непосредственно к коду, а точней к нашему Activity:

public class Player extends Activity {

    private Button buttonPlayStop;
    private MediaPlayer mediaPlayer;
    private SeekBar seekBar;

    private final Handler handler = new Handler();

    @Override
    public void onCreate(Bundle icicle) {
        super.onCreate(icicle);
        setContentView(R.layout.main);
        initViews();

    }

...

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

В onCreate-е вызывается метод initViews():

private void initViews() {
     buttonPlayStop = (Button) findViewById(R.id.ButtonPlayStop);
     mediaPlayer = MediaPlayer.create(this, R.raw.imagine_dragons_radioactive);

     seekBar = (SeekBar) findViewById(R.id.seekBar);
     seekBar.setMax(mediaPlayer.getDuration());
     seekBar.setOnTouchListener(new View.OnTouchListener() {
        @Override
        public boolean onTouch(View v, MotionEvent event) {
            seekChange(v);
            return false;
        }
     });
}

тут мы определяем кнопку и скролл, а также нашу песню с ресурсов в MediaPlayer.

Вешаем обработчик на перемотку песни.

Сам обработчик:

private void seekChange(View v){
    if(mediaPlayer.isPlaying()){
        SeekBar sb = (SeekBar)v;
        mediaPlayer.seekTo(sb.getProgress());
    }
}

И обработчик на Play и Stop :

public void playAndStop(View v){
    if (buttonPlayStop.getText() == getString(R.string.play_str)) {
        buttonPlayStop.setText(getString(R.string.pause_str));
        try{
            mediaPlayer.start();
            startPlayProgressUpdater();
        }catch (IllegalStateException e) {
            mediaPlayer.pause();
        }
    }else {
        buttonPlayStop.setText(getString(R.string.play_str));
        mediaPlayer.pause();
    }
}

И метод, который определяет проигрывать при нажатии кнопки Play или Stop музыку или же остановить.

public void startPlayProgressUpdater() {
    seekBar.setProgress(mediaPlayer.getCurrentPosition());

    if (mediaPlayer.isPlaying()) {
        Runnable notification = new Runnable() {
            public void run() {
                startPlayProgressUpdater();
            }
        };
        handler.postDelayed(notification,1000);
    }else{
        mediaPlayer.pause();
        buttonPlayStop.setText(getString(R.string.play_str));
        seekBar.setProgress(0);
    }
}

Шаг 5.

Не забываем проставить Activity в AndroidManifest.xml.

<application android:icon="@drawable/icon" android:label="@string/app_name">
     <activity android:name="Player"
               android:label="@string/app_name">
        <intent-filter>
            <action android:name="android.intent.action.MAIN"/>
            <category android:name="android.intent.category.LAUNCHER"/>
        </intent-filter>
     </activity>
</application>

ПОХОЖИЕ ПУБЛИКАЦИИ

    None Found

51121
04/02/2013

15 комментариев к статье "Android. Пишем свой AudioPlayer"

Добавить комментарий

Сайт использует cookie-файлы для того, чтобы вам было удобнее им пользоваться. Для продолжения работы с сайтом, вам необходимо принять использование cookie-файлов.

Я ознакомлен(а)