И так начнем с самого простого,
открываем нашу игру в которой хотим добавить музыку, добавляем в папку res/raw/ наш *.mp3 файл, именно mp3, так как на wav и wma выдает ошибку, и создаем файлMyService.java который будет сервисом для нашего проигрывания музыки. Код он будет содержать в себе следующий:
MyService.java
import android.app.Service;
import android.content.Intent;
import android.media.MediaPlayer;
import android.os.IBinder;
import android.util.Log;
import android.widget.Toast;
public class MyService extends
Service {
private
static final
String TAG =
"MyService";
MediaPlayer
player;
@Override
public
IBinder onBind(Intent intent) {
return null;
}
@Override
public
void onCreate()
{
Toast.makeText(this, "My Service Created", Toast.LENGTH_LONG).show();
player = MediaPlayer.create(this, R.raw.bg);
player.setLooping(true); // зацикливаем
}
@Override
public
void onDestroy()
{
Toast.makeText(this, "My Service Stopped", Toast.LENGTH_LONG).show();
player.stop();
}
@Override
public
void onStart(Intent intent, int startid) {
Toast.makeText(this, "My Service Started", Toast.LENGTH_LONG).show();
player.start();
}
}
Что мы тут имеем? Ну сперва как видно мы унаследовали наш класс от класса Service для того что бы наш класс мог работать в фоне и ничего нам не мешало только для этого его и юзать. Дальше нам открывается методonCreate() который
запускает медиаплеер с файлом который будет проигрываться. После этого
идет класс уничтожения (выключения) музыки, когда нам понадобится,
например выйти из игры или выключить музыку мы будем обращаться к этому
методу для выключения музыки. Ну и onStart() метод который запускает наш сервис что бы музыка начала проигрываться.
Дальше нам нужно сказать еклипсу что этот класс юзается в фоне, и никак
не сметь его запускать в виде активности или другой какой-то байды (:
Для этого открываем AndroidManifest и вставляем перед закрывающимся :
<
service
android:enabled
=
"true"
android:name
=
".MyService"
/>
Ну и конечно же нам нужно вызывать этот класс и наши методы для запуска
музыки, если вы хотите что бы музыка начиналась запускаться сразу при
входе в игру, то есть сразу из меню, то вам нужно в главной активитиStartActivity.java который запускает наше меню написать в onCreate() вот такое:
StartActivity.java
//import...
public
class
StartActivity
extends
Activity
implements
OnClickListener
{
public
void
onCreate
(
Bundle
savedInstanceState
)
{
//...
//-----------------------------------------------------------------
startService
(
new
Intent
(
this
,
MyService
.
class
));
//
вот
єто
вам
нужно
написать
!
//-------------------------------------------------------------------
}
/**
Обработка
нажатия
кнопок
*/
public
void
onClick
(
View
v
)
{
//...
}
}
Ну а что бы выключить при выходе из игры или по желанию юзера тогда добавляем метод onBackPressed() и в нем пишем вот такое:
StartActivity.java
private
void
onBackPressed
()
{
stopService
(
new
Intent
(
this
,
MyService
.
class
));
}
И тогда у нас сервис остановится, музыка замолчит, и если вы пропишите в этом методе finish() то приложения закроется.
Как можно на паузу поставить ? Не хочу в startActivity в методе onPoause или onDestroy прописывать stopService() так как при переходе на другую активити, музыка выключается
ОтветитьУдалить