Полезные примеры Android

Полезные примеры Android
Android — MediaPlayer

Android предоставляет множество способов управления воспроизведением аудио / видео файлов и потоков. Один из способов — через класс MediaPlayer .

Android предоставляет класс MediaPlayer для доступа к встроенным службам медиаплеера, таким как воспроизведение аудио, видео и т. Д. Чтобы использовать MediaPlayer, мы должны вызвать статический метод create () этого класса. Этот метод возвращает экземпляр класса MediaPlayer. Его синтаксис следующий —

MediaPlayer mediaPlayer = MediaPlayer.create(this, R.raw.song);

Второй параметр — это название песни, которую вы хотите воспроизвести. Вы должны создать новую папку под вашим проектом с именем raw и поместить в нее музыкальный файл.

После того, как вы создали объект Mediaplayer, вы можете вызвать некоторые методы для запуска или остановки музыки. Эти методы перечислены ниже.

mediaPlayer.start();
mediaPlayer.pause();

При вызове метода start () музыка начнется с самого начала. Если этот метод вызывается снова после метода pause () , музыка начинает воспроизводиться с того места, где она была оставлена, а не с самого начала.

Чтобы начать музыку с самого начала, нужно вызвать метод reset () . Его синтаксис приведен ниже.

mediaPlayer.reset();

Помимо метода запуска и паузы, в этом классе есть другие методы для лучшей работы с аудио / видео файлами. Эти методы перечислены ниже —

Sr.No Метод и описание
1

isPlaying()

Этот метод просто возвращает true / false, указывая, что песня играет или нет

2

seekTo(position)

Этот метод принимает целое число и перемещает песню в эту конкретную позицию миллисекунды.

3

getCurrentPosition()

Этот метод возвращает текущую позицию песни в миллисекундах.

4

getDuration()

Этот метод возвращает общую продолжительность песни в миллисекундах.

5

reset()

Этот метод сбрасывает медиаплеер

6

release()

Этот метод освобождает любой ресурс, прикрепленный к объекту MediaPlayer.

7

setVolume(float leftVolume, float rightVolume)

Этот метод устанавливает громкость для этого плеера.

8

setDataSource(FileDescriptor fd)

Этот метод устанавливает источник данных аудио / видео файла

9

selectTrack(int index)

Этот метод принимает целое число и выбирает трек из списка по этому индексу.

10

getTrackInfo()

Этот метод возвращает массив информации о треке.

Пример

Вот пример, демонстрирующий использование класса MediaPlayer. Он создает базовый медиаплеер, который позволяет вам перематывать вперед, назад, воспроизводить и останавливать песню.

Чтобы поэкспериментировать с этим примером, вам нужно запустить это на реальном устройстве, чтобы услышать звук.

Шаги Описание
1 Вы будете использовать Android Studio IDE для создания Android-приложения в пакете com.example.sairamkrishna.myapplication.
2 Измените файл src / MainActivity.java, чтобы добавить код MediaPlayer.
3 Измените res / layout / activity_main, чтобы добавить соответствующие XML-компоненты.
4 Создайте новую папку в MediaPlayer с именем raw и поместите в нее музыкальный файл в формате mp3 с именем song.mp3
5 Запустите приложение и выберите работающее устройство Android, установите на него приложение и проверьте результаты.

Ниже приводится содержимое измененного файла основной деятельности src / MainActivity.java .

package com.example.sairamkrishna.myapplication;
import android.app.Activity;
import android.media.MediaPlayer;
import android.os.Bundle;
import android.os.Handler;
import android.view.View;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.SeekBar;
import android.widget.TextView;
import android.widget.Toast;
import java.util.concurrent.TimeUnit;
public class MainActivity extends Activity {
private Button b1,b2,b3,b4;
private ImageView iv;
private MediaPlayer mediaPlayer;
private double startTime = 0;
private double finalTime = 0;
private Handler myHandler = new Handler();;
private int forwardTime = 5000;
private int backwardTime = 5000;
private SeekBar seekbar;
private TextView tx1,tx2,tx3;
public static int oneTimeOnly = 0;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
b1 = (Button) findViewById(R.id.button);
b2 = (Button) findViewById(R.id.button2);
b3 = (Button)findViewById(R.id.button3);
b4 = (Button)findViewById(R.id.button4);
iv = (ImageView)findViewById(R.id.imageView);
tx1 = (TextView)findViewById(R.id.textView2);
tx2 = (TextView)findViewById(R.id.textView3);
tx3 = (TextView)findViewById(R.id.textView4);
tx3.setText("Song.mp3");
mediaPlayer = MediaPlayer.create(this, R.raw.song);
seekbar = (SeekBar)findViewById(R.id.seekBar);
seekbar.setClickable(false);
b2.setEnabled(false);
b3.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(getApplicationContext(), "Playing 
sound",Toast.LENGTH_SHORT).show();
mediaPlayer.start();
finalTime = mediaPlayer.getDuration();
startTime = mediaPlayer.getCurrentPosition();
if (oneTimeOnly == 0) {
seekbar.setMax((int) finalTime);
oneTimeOnly = 1;
}
tx2.setText(String.format("%d min, %d sec",
TimeUnit.MILLISECONDS.toMinutes((long) finalTime),
TimeUnit.MILLISECONDS.toSeconds((long) finalTime) -
TimeUnit.MINUTES.toSeconds(TimeUnit.MILLISECONDS.toMinutes((long) 
finalTime)))
);
tx1.setText(String.format("%d min, %d sec",
TimeUnit.MILLISECONDS.toMinutes((long) startTime),
TimeUnit.MILLISECONDS.toSeconds((long) startTime) -
TimeUnit.MINUTES.toSeconds(TimeUnit.MILLISECONDS.toMinutes((long) 
startTime)))
);
seekbar.setProgress((int)startTime);
myHandler.postDelayed(UpdateSongTime,100);
b2.setEnabled(true);
b3.setEnabled(false);
}
});
b2.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(getApplicationContext(), "Pausing 
sound",Toast.LENGTH_SHORT).show();
mediaPlayer.pause();
b2.setEnabled(false);
b3.setEnabled(true);
}
});
b1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
int temp = (int)startTime;
if((temp+forwardTime)<=finalTime){
startTime = startTime + forwardTime;
mediaPlayer.seekTo((int) startTime);
Toast.makeText(getApplicationContext(),"You have Jumped forward 5 
seconds",Toast.LENGTH_SHORT).show();
}else{
Toast.makeText(getApplicationContext(),"Cannot jump forward 5
seconds",Toast.LENGTH_SHORT).show();
}
}
});
b4.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
int temp = (int)startTime;
if((temp-backwardTime)>0){
startTime = startTime - backwardTime;
mediaPlayer.seekTo((int) startTime);
Toast.makeText(getApplicationContext(),"You have Jumped backward 5 
seconds",Toast.LENGTH_SHORT).show();
}else{
Toast.makeText(getApplicationContext(),"Cannot jump backward 5 
seconds",Toast.LENGTH_SHORT).show();
}
}
});
}
private Runnable UpdateSongTime = new Runnable() {
public void run() {
startTime = mediaPlayer.getCurrentPosition();
tx1.setText(String.format("%d min, %d sec",
TimeUnit.MILLISECONDS.toMinutes((long) startTime),
TimeUnit.MILLISECONDS.toSeconds((long) startTime) -
TimeUnit.MINUTES.toSeconds(TimeUnit.MILLISECONDS.
toMinutes((long) startTime)))
);
seekbar.setProgress((int)startTime);
myHandler.postDelayed(this, 100);
}
};
}

Ниже приводится измененное содержимое файла xml res / layout / activity_main.xml .

В приведенном ниже коде abc указывает логотип tutorialspoint.com.

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent"
android:layout_height="match_parent" 
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:paddingBottom="@dimen/activity_vertical_margin" tools:context=".MainActivity">
<TextView android:text="Music Palyer" android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/textview"
android:textSize="35dp"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Tutorials point"
android:id="@+id/textView"
android:layout_below="@+id/textview"
android:layout_centerHorizontal="true"
android:textColor="#ff7aff24"
android:textSize="35dp" />
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/imageView"
android:layout_below="@+id/textView"
android:layout_centerHorizontal="true"
android:src="@drawable/abc"/>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/forward"
android:id="@+id/button"
android:layout_alignParentBottom="true"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true" />
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/pause"
android:id="@+id/button2"
android:layout_alignParentBottom="true"
android:layout_alignLeft="@+id/imageView"
android:layout_alignStart="@+id/imageView" />
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/back"
android:id="@+id/button3"
android:layout_alignTop="@+id/button2"
android:layout_toRightOf="@+id/button2"
android:layout_toEndOf="@+id/button2" />
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/rewind"
android:id="@+id/button4"
android:layout_alignTop="@+id/button3"
android:layout_toRightOf="@+id/button3"
android:layout_toEndOf="@+id/button3" />
<SeekBar
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/seekBar"
android:layout_alignLeft="@+id/textview"
android:layout_alignStart="@+id/textview"
android:layout_alignRight="@+id/textview"
android:layout_alignEnd="@+id/textview"
android:layout_above="@+id/button" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceSmall"
android:text="Small Text"
android:id="@+id/textView2"
android:layout_above="@+id/seekBar"
android:layout_toLeftOf="@+id/textView"
android:layout_toStartOf="@+id/textView" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceSmall"
android:text="Small Text"
android:id="@+id/textView3"
android:layout_above="@+id/seekBar"
android:layout_alignRight="@+id/button4"
android:layout_alignEnd="@+id/button4" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceMedium"
android:text="Medium Text"
android:id="@+id/textView4"
android:layout_alignBaseline="@+id/textView2"
android:layout_alignBottom="@+id/textView2"
android:layout_centerHorizontal="true" />
</RelativeLayout>

Ниже приводится содержимое файла res / values ​​/ string.xml .

<resources>
<string name="app_name">My Application</string>
<string name="back"><![CDATA[<]]></string>
<string name="rewind"><![CDATA[<<]]></string>
<string name="forward"><![CDATA[>>]]></string>
<string name="pause">||</string>
</resources>

Ниже приводится содержимое файла AndroidManifest.xml .

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.sairamkrishna.myapplication" >
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name="com.example.sairamkrishna.myapplication.MainActivity"
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>
</manifest>

Попробуем запустить ваше приложение. Я предполагаю, что вы подключили свое настоящее мобильное устройство Android к компьютеру. Чтобы запустить приложение из Eclipse, откройте один из файлов активности вашего проекта и щелкните Значок запуска Eclipseзначок « Выполнить» на панели инструментов. Перед запуском вашего приложения студия Android отобразит следующие экраны

Учебное пособие по Anroid MediaPlayer

По умолчанию вы увидите, что кнопка паузы отключена. Теперь нажмите кнопку воспроизведения, и она станет отключенной, а кнопка паузы станет активной. Это показано на картинке ниже —

До сих пор играет музыка. Теперь нажмите кнопку паузы и увидите уведомление о приостановке. Это показано ниже —

Учебное пособие по Anroid MediaPlayer

Теперь, когда вы снова нажмете кнопку воспроизведения, песня будет воспроизводиться не с начала, а с того места, где она была приостановлена. Теперь нажмите кнопку перемотки вперед или назад, чтобы перемотать песню вперед или назад на 5 секунд. Пришло время, когда песню нельзя прыгать вперед. В этот момент появится уведомление, которое будет примерно таким:

Учебное пособие по Anroid MediaPlayer

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

Учебное пособие по Anroid MediaPlayer

На изображении выше показано, когда вы нажимаете кнопку перемотки.

Select the fields to be shown. Others will be hidden. Drag and drop to rearrange the order.
  • Image
  • SKU
  • Rating
  • Price
  • Stock
  • Availability
  • Add to cart
  • Description
  • Content
  • Weight
  • Dimensions
  • Additional information
  • Attributes
  • Custom attributes
  • Custom fields
Click outside to hide the compare bar
Compare