html текст
All interests
  • All interests
  • Design
  • Food
  • Gadgets
  • Humor
  • News
  • Photo
  • Travel
  • Video
Click to see the next recommended page
Like it
Don't like
Add to Favorites

Пишем игру под Android: Часть 8: Фоновая музыка в игре

Эту часть я очень сильно затянул так как не было времени разбираться как проигрывать музыку в фоне. Занимался другими проектами, и до сих пор занимаюсь, так что эту часть я напишу коротко и понятно. Сложного в этой части ничего нету так что все будет быстро и безболезненно (: Предыдущие 7 частей вы можете найти ниже:

  1. Пишем игру под Android: Часть 1 — Рисуем картинки на SurfaceView
  2. Пишем игру под Android: Часть 2 — Создаем первый спрайт
  3. Пишем игру под Android: Часть 3 — Спрайтовая анимация, работа с несколькими спрайтами
  4. Пишем игру под Android: Часть 4 — onTouchEvent и определение столкновений
  5. Пишем игру под Android: Часть 5 — Создание полноценной 2D игры
  6. Пишем игру под Android: Часть 6: Добавление звука
  7. Пишем игру под Android: Часть 7: Меню для игры и окно приветствия
  8. Пишем игру под Android: Часть 8: Фоновая музыка в игре
Давно еще меня просили написать эту статью, еще в февряла этого года, простите те кто просили, что так вышло. И так начнем с самого простого, открываем нашу игру в которой хотим добавить музыку, добавляем в папку 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() то приложения закроется.

Вот и все, никаких сложностей нет, все очень просто и прозрачно, надеюсь что конечный читатель статьи понял и принял все что тут написано, эта статья скорей всего последняя так как дальше я не вижу смысла развивать эту тему, для написания простой игры я написал достаточно и надеюсь что понятно (: Всем спасибо за внимания, очень приятно что я помог кому-то с написанием своей первой игры. 
Читать дальше
Twitter
Одноклассники
Мой Мир

материал с dajver.blogspot.ru

729
    +711 surfers

      Add

      You can create thematic collections and keep, for instance, all recipes in one place so you will never lose them.

      No images found
      Previous Next 0 / 0
      500
      • Advertisement
      • Animals
      • Architecture
      • Art
      • Auto
      • Aviation
      • Books
      • Cartoons
      • Celebrities
      • Children
      • Culture
      • Design
      • Economics
      • Education
      • Entertainment
      • Fashion
      • Fitness
      • Food
      • Gadgets
      • Games
      • Health
      • History
      • Hobby
      • Humor
      • Interior
      • Moto
      • Movies
      • Music
      • Nature
      • News
      • Photo
      • Pictures
      • Politics
      • Psychology
      • Science
      • Society
      • Sport
      • Technology
      • Travel
      • Video
      • Weapons
      • Web
      • Work
        Submit
        Valid formats are JPG, PNG, GIF.
        Not more than 5 Мb, please.
        30
        surfingbird.ru/site/
        RSS format guidelines
        500
        • Advertisement
        • Animals
        • Architecture
        • Art
        • Auto
        • Aviation
        • Books
        • Cartoons
        • Celebrities
        • Children
        • Culture
        • Design
        • Economics
        • Education
        • Entertainment
        • Fashion
        • Fitness
        • Food
        • Gadgets
        • Games
        • Health
        • History
        • Hobby
        • Humor
        • Interior
        • Moto
        • Movies
        • Music
        • Nature
        • News
        • Photo
        • Pictures
        • Politics
        • Psychology
        • Science
        • Society
        • Sport
        • Technology
        • Travel
        • Video
        • Weapons
        • Web
        • Work

          Submit

          Thank you! Wait for moderation.

          Тебе это не нравится?

          You can block the domain, tag, user or channel, and we'll stop recommend it to you. You can always unblock them in your settings.

          • Chrono
          • домен blogspot.ru
          • домен dajver.blogspot.ru

          Get a link

          Спасибо, твоя жалоба принята.

          Log on to Surfingbird

          Recover
          Sign up

          or

          Welcome to Surfingbird.com!

          You'll find thousands of interesting pages, photos, and videos inside.
          Join!

          • Personal
            recommendations

          • Stash
            interesting and useful stuff

          • Anywhere,
            anytime

          Do we already know you? Login or restore the password.

          Close

          Add to collection

             

            Facebook

            Ваш профиль на рассмотрении, обновите страницу через несколько секунд

            Facebook

            К сожалению, вы не попадаете под условия акции